xref: /aosp_15_r20/external/cronet/build/fuchsia/update_sdk_test.py (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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