1*6777b538SAndroid Build Coastguard Worker#!/usr/bin/env vpython3 2*6777b538SAndroid Build Coastguard Worker# Copyright 2022 The Chromium Authors 3*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 5*6777b538SAndroid Build Coastguard Worker 6*6777b538SAndroid Build Coastguard Workerimport unittest 7*6777b538SAndroid Build Coastguard Workerfrom unittest import mock 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Workerfrom parameterized import parameterized 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Workerfrom update_sdk import _GetHostArch 12*6777b538SAndroid Build Coastguard Workerfrom update_sdk import _GetTarballPath 13*6777b538SAndroid Build Coastguard Workerfrom update_sdk import GetSDKOverrideGCSPath 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker@mock.patch('platform.machine') 17*6777b538SAndroid Build Coastguard Workerclass TestGetHostArch(unittest.TestCase): 18*6777b538SAndroid Build Coastguard Worker @parameterized.expand([('x86_64', 'amd64'), ('AMD64', 'amd64'), 19*6777b538SAndroid Build Coastguard Worker ('aarch64', 'arm64')]) 20*6777b538SAndroid Build Coastguard Worker def testSupportedArchs(self, mock_machine, arch, expected): 21*6777b538SAndroid Build Coastguard Worker mock_machine.return_value = arch 22*6777b538SAndroid Build Coastguard Worker self.assertEqual(_GetHostArch(), expected) 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Worker def testUnsupportedArch(self, mock_machine): 25*6777b538SAndroid Build Coastguard Worker mock_machine.return_value = 'bad_arch' 26*6777b538SAndroid Build Coastguard Worker with self.assertRaises(Exception): 27*6777b538SAndroid Build Coastguard Worker _GetHostArch() 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker@mock.patch('builtins.open') 31*6777b538SAndroid Build Coastguard Worker@mock.patch('os.path.isfile') 32*6777b538SAndroid Build Coastguard Workerclass TestGetSDKOverrideGCSPath(unittest.TestCase): 33*6777b538SAndroid Build Coastguard Worker def testDefaultPath(self, mock_isfile, mock_open): 34*6777b538SAndroid Build Coastguard Worker mock_isfile.return_value = False 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker with mock.patch('os.path.dirname', return_value='./'): 37*6777b538SAndroid Build Coastguard Worker GetSDKOverrideGCSPath() 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Worker mock_isfile.assert_called_with('./sdk_override.txt') 40*6777b538SAndroid Build Coastguard Worker 41*6777b538SAndroid Build Coastguard Worker def testRead(self, mock_isfile, mock_open): 42*6777b538SAndroid Build Coastguard Worker fake_path = '\n\ngs://fuchsia-artifacts/development/abc123/sdk\n\n' 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Worker mock_isfile.return_value = True 45*6777b538SAndroid Build Coastguard Worker mock_open.side_effect = mock.mock_open(read_data=fake_path) 46*6777b538SAndroid Build Coastguard Worker 47*6777b538SAndroid Build Coastguard Worker actual = GetSDKOverrideGCSPath() 48*6777b538SAndroid Build Coastguard Worker self.assertEqual(actual, 'gs://fuchsia-artifacts/development/abc123/sdk') 49*6777b538SAndroid Build Coastguard Worker 50*6777b538SAndroid Build Coastguard Worker 51*6777b538SAndroid Build Coastguard Worker@mock.patch('update_sdk._GetHostArch') 52*6777b538SAndroid Build Coastguard Worker@mock.patch('update_sdk.get_host_os') 53*6777b538SAndroid Build Coastguard Workerclass TestGetTarballPath(unittest.TestCase): 54*6777b538SAndroid Build Coastguard Worker def testGetTarballPath(self, mock_get_host_os, mock_host_arch): 55*6777b538SAndroid Build Coastguard Worker mock_get_host_os.return_value = 'linux' 56*6777b538SAndroid Build Coastguard Worker mock_host_arch.return_value = 'amd64' 57*6777b538SAndroid Build Coastguard Worker 58*6777b538SAndroid Build Coastguard Worker actual = _GetTarballPath('gs://bucket/sdk') 59*6777b538SAndroid Build Coastguard Worker self.assertEqual(actual, 'gs://bucket/sdk/linux-amd64/core.tar.gz') 60*6777b538SAndroid Build Coastguard Worker 61*6777b538SAndroid Build Coastguard Worker 62*6777b538SAndroid Build Coastguard Workerif __name__ == '__main__': 63*6777b538SAndroid Build Coastguard Worker unittest.main() 64