| #!/usr/bin/env vpython3 |
| # Copyright 2026 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Tests for builder_utils.py""" |
| |
| import unittest |
| from unittest import mock |
| import pathlib |
| |
| import builder_utils |
| |
| |
| class BuilderUtilsTests(unittest.TestCase): |
| |
| @mock.patch('builder_utils.gn_helpers.ReadArgsGN') |
| def testReadExplicitGnArgs(self, mock_read_args): |
| mock_read_args.return_value = {'some_arg': 'some_val'} |
| build_dir = pathlib.Path('/some/build/dir') |
| args = builder_utils.read_explicit_gn_args(build_dir) |
| mock_read_args.assert_called_once_with(str(build_dir)) |
| self.assertEqual(args, {'some_arg': 'some_val'}) |
| |
| @mock.patch('builder_utils.detect_host_arch.HostArch') |
| @mock.patch('builder_utils.platform.system') |
| def testGetHostFallbackArgs(self, mock_system, mock_host_arch): |
| mock_host_arch.return_value = 'x64' |
| |
| mock_system.return_value = 'Linux' |
| os_name, cpu = builder_utils.get_host_fallback_args() |
| self.assertEqual(os_name, 'linux') |
| self.assertEqual(cpu, 'x64') |
| |
| mock_system.return_value = 'Darwin' |
| os_name, cpu = builder_utils.get_host_fallback_args() |
| self.assertEqual(os_name, 'mac') |
| |
| mock_system.return_value = 'Windows' |
| os_name, cpu = builder_utils.get_host_fallback_args() |
| self.assertEqual(os_name, 'win') |
| |
| @mock.patch('builder_utils.get_host_fallback_args') |
| @mock.patch('builder_utils.read_explicit_gn_args') |
| def testGuessBuilder(self, mock_read_args, mock_fallback): |
| # Case 1: No GN args, fall back |
| mock_read_args.return_value = {} |
| mock_fallback.return_value = ('linux', 'x64') |
| builder = builder_utils.guess_builder('/some/dir') |
| self.assertEqual(builder, ('ci', 'Linux Tests')) |
| |
| # Case 2: GN args present |
| mock_read_args.return_value = { |
| 'target_os': 'android', |
| 'target_cpu': 'arm64' |
| } |
| builder = builder_utils.guess_builder('/some/dir') |
| self.assertEqual(builder, ('ci', 'android-14-arm64-rel')) |
| |
| # Case 3: Unknown combo |
| mock_read_args.return_value = { |
| 'target_os': 'unknown', |
| 'target_cpu': 'unknown' |
| } |
| builder = builder_utils.guess_builder('/some/dir') |
| self.assertIsNone(builder) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |