"""Tests for run.py"""
import argparse
import logging
import unittest
from unittest import mock
import run
class ParseArgsTest(unittest.TestCase):
def testRunModes(self):
argv = [
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'compile',
]
args = run.parse_args(argv)
self.assertEqual(args.run_mode, 'compile')
argv = [
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'wrong-mode',
]
with self.assertRaises(SystemExit):
args = run.parse_args(argv)
argv = [
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
]
with self.assertRaises(SystemExit):
args = run.parse_args(argv)
def testPrintSurvey(self):
patch_random = mock.patch('random.random')
mock_random = patch_random.start()
mock_random.return_value = 0.005
with self.assertLogs() as info_log:
run.maybe_print_survey_link()
self.assertIn(
'INFO:root:Help us improve by sharing your feedback in this short '
'survey: https://forms.gle/tA41evzW5goqR5WF9', info_log.output)
mock_random.return_value = 0.051
with self.assertLogs() as info_log:
logging.info('')
run.maybe_print_survey_link()
self.assertEqual(
['INFO:root:'],
info_log.output,
)
mock_random.stop()
def testTests(self):
argv = [
'-B',
'bucket',
'-b',
'builder',
'test',
]
with self.assertRaises(SystemExit):
args = run.parse_args(argv)
argv = [
'-B',
'bucket',
'-b',
'builder',
'-t',
'test1',
'-t',
'test2',
'test',
'--',
'--gtest_repeat=100',
]
args = run.parse_args(argv)
self.assertEqual(args.tests, ['test1', 'test2'])
self.assertEqual(args.run_mode, 'test')
self.assertEqual(args.additional_test_args, ['--gtest_repeat=100'])
def testProject(self):
argv = [
'-p',
'some-weird-project',
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'compile',
]
with self.assertRaises(SystemExit):
args = run.parse_args(argv)
argv = [
'-p',
'chrome-m123xyz',
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'compile',
]
with self.assertRaises(SystemExit):
args = run.parse_args(argv)
argv = [
'-p',
'chromium-m123',
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'compile',
]
args = run.parse_args(argv)
self.assertEqual(args.project, 'chromium')
argv = [
'-p',
'chromium',
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'-d',
'foo:bar',
'compile',
]
with self.assertRaises(SystemExit):
args = run.parse_args(argv)
argv = [
'-p',
'chromium',
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'-d',
'foobar',
'test',
]
with self.assertRaises(SystemExit):
args = run.parse_args(argv)
argv = [
'-p',
'chromium',
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'-d',
'foo=bar',
'test',
]
args = run.parse_args(argv)
self.assertEqual(args.dimensions, ['foo=bar'])
argv = [
'-p',
'chromium',
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'-d',
'foo=',
'test',
]
args = run.parse_args(argv)
self.assertEqual(args.dimensions, ['foo='])
argv = [
'-p',
'chromium',
'-B',
'bucket',
'-b',
'builder',
'-t',
'some_test',
'-d',
'foo=bar=baz',
'test',
]
args = run.parse_args(argv)
self.assertEqual(args.dimensions, ['foo=bar=baz'])
if __name__ == '__main__':
unittest.main()