blob: 50703503de38fb79f348f1d68633c47d8a69ec15 [file]
#!/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()