123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- #!/usr/bin/env python3
- # Copyright (c) 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- import json
- import os
- import sys
- import unittest
- import unittest.mock
- ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- sys.path.insert(0, ROOT_DIR)
- import ninjalog_uploader
- class NinjalogUploaderTest(unittest.TestCase):
- def test_IsGoogler(self):
- with unittest.mock.patch('subprocess.run') as run_mock:
- run_mock.return_value.returncode = 0
- run_mock.return_value.stdout = ('Login as foo@google.com\n'
- 'goma is ready to use')
- self.assertTrue(ninjalog_uploader.IsGoogler())
- with unittest.mock.patch('subprocess.run') as run_mock:
- run_mock.return_value.returncode = 1
- run_mock.return_value.stdout = 'Not logged in\n'
- self.assertFalse(ninjalog_uploader.IsGoogler())
- with unittest.mock.patch('subprocess.run') as run_mock:
- run_mock.return_value.returncode = 0
- run_mock.return_value.stdout = 'Login as foo@example.com\n'
- self.assertFalse(ninjalog_uploader.IsGoogler())
- def test_parse_gn_args(self):
- self.assertEqual(ninjalog_uploader.ParseGNArgs(json.dumps([])), {})
- # Extract current configs from GN's output json.
- self.assertEqual(ninjalog_uploader.ParseGNArgs(json.dumps([
- {
- 'current': {'value': 'true'},
- 'default': {'value': 'false'},
- 'name': 'is_component_build'
- },
- {
- 'default': {'value': '"x64"'},
- 'name': 'host_cpu'
- },
- ])), {
- 'is_component_build': 'true',
- 'host_cpu': '"x64"',
- })
- self.assertEqual(ninjalog_uploader.ParseGNArgs(json.dumps([
- {
- 'current': {'value': 'true'},
- 'default': {'value': 'false'},
- 'name': 'is_component_build'
- },
- {
- 'current': {'value': 'false'},
- 'default': {'value': 'false'},
- 'name': 'use_goma'
- },
- ])), {'is_component_build': 'true',
- 'use_goma': 'false'})
- def test_get_ninjalog(self):
- # No args => default to cwd.
- self.assertEqual(ninjalog_uploader.GetNinjalog(['ninja']),
- './.ninja_log')
- # Specified by -C case.
- self.assertEqual(
- ninjalog_uploader.GetNinjalog(['ninja', '-C', 'out/Release']),
- 'out/Release/.ninja_log')
- self.assertEqual(
- ninjalog_uploader.GetNinjalog(['ninja', '-Cout/Release']),
- 'out/Release/.ninja_log')
- # Invalid -C flag case.
- self.assertEqual(ninjalog_uploader.GetNinjalog(['ninja', '-C']),
- './.ninja_log')
- # Multiple target directories => use the last directory.
- self.assertEqual(ninjalog_uploader.GetNinjalog(
- ['ninja', '-C', 'out/Release', '-C', 'out/Debug']),
- 'out/Debug/.ninja_log')
- def test_get_build_target_from_command_line(self):
- self.assertEqual(ninjalog_uploader.GetBuildTargetFromCommandLine(
- ['ninja', 'chrome']), ['chrome'])
- self.assertEqual(ninjalog_uploader.GetBuildTargetFromCommandLine(
- ['ninja']), [])
- self.assertEqual(ninjalog_uploader.GetBuildTargetFromCommandLine(
- ['ninja', '-j', '1000', 'chrome']), ['chrome'])
- self.assertEqual(ninjalog_uploader.GetBuildTargetFromCommandLine(
- ['ninja', 'chrome', '-j', '1000']), ['chrome'])
- self.assertEqual(ninjalog_uploader.GetBuildTargetFromCommandLine(
- ['ninja', '-C', 'chrome']), [])
- self.assertEqual(ninjalog_uploader.GetBuildTargetFromCommandLine(
- ['ninja', '-Cout/Release', 'chrome']), ['chrome'])
- self.assertEqual(ninjalog_uploader.GetBuildTargetFromCommandLine(
- ['ninja', '-C', 'out/Release', 'chrome', 'all']), ['chrome', 'all'])
- def test_get_j_flag(self):
- self.assertEqual(ninjalog_uploader.GetJflag(
- ['ninja']), None)
- self.assertEqual(ninjalog_uploader.GetJflag(
- ['ninja','-j', '1000']), 1000)
- self.assertEqual(ninjalog_uploader.GetJflag(
- ['ninja','-j', '1000a']), None)
- self.assertEqual(ninjalog_uploader.GetJflag(
- ['ninja','-j', 'a']), None)
- self.assertEqual(ninjalog_uploader.GetJflag(
- ['ninja','-j1000']), 1000)
- self.assertEqual(ninjalog_uploader.GetJflag(
- ['ninja','-ja']), None)
- self.assertEqual(ninjalog_uploader.GetJflag(
- ['ninja','-j']), None)
- if __name__ == '__main__':
- unittest.main()
|