123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #!/usr/bin/env python3
- #
- # Copyright 2022 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 unittest
- from unittest import mock
- import generate_skylab_deps
- TAST_CONTROL = '''
- # Ignore comments
- tast_disabled_tests_from_chrome_all = [
- "example.all.test1",
- ]
- tast_disabled_tests_from_chrome_m100 = [
- "example.m100.test1",
- ]
- tast_disabled_tests_from_lacros_all = []
- '''
- TAST_EXPR = '"group:mainline" && "dep:chrome" && !informational'
- REQUIRED_ARGS = ['script', 'generate-filter', '--output', 'output.filter']
- class GenerateSkylabDepsTest(unittest.TestCase):
- def testTastExpr(self):
- file_mock = mock.mock_open(read_data=TAST_CONTROL)
- args = REQUIRED_ARGS + ['--tast-expr', TAST_EXPR]
- with mock.patch('sys.argv', args),\
- mock.patch('builtins.open', file_mock),\
- mock.patch('os.chmod'),\
- mock.patch("json.dump", mock.MagicMock()) as dump:
- generate_skylab_deps.main()
- filter_dict = dump.call_args[0][0]
- self.assertEqual(filter_dict['default'], '(%s)' % TAST_EXPR)
- def testTastExprAndDisableTests(self):
- file_mock = mock.mock_open(read_data=TAST_CONTROL)
- args = REQUIRED_ARGS + [
- '--tast-expr', TAST_EXPR, '--disabled-tests', 'disabled.test1',
- '--disabled-tests', 'disabled.test2'
- ]
- with mock.patch('sys.argv', args),\
- mock.patch('builtins.open', file_mock),\
- mock.patch('os.chmod'),\
- mock.patch("json.dump", mock.MagicMock()) as dump:
- generate_skylab_deps.main()
- filter_dict = dump.call_args[0][0]
- self.assertEqual(
- filter_dict['default'],
- '(%s && !"name:disabled.test1" && !"name:disabled.test2")' %
- TAST_EXPR)
- def testEnableTests(self):
- file_mock = mock.mock_open(read_data=TAST_CONTROL)
- args = REQUIRED_ARGS + [
- '--enabled-tests', 'enabled.test1', '--enabled-tests', 'enabled.test2'
- ]
- with mock.patch('sys.argv', args),\
- mock.patch('builtins.open', file_mock),\
- mock.patch('os.chmod'),\
- mock.patch("json.dump", mock.MagicMock()) as dump:
- generate_skylab_deps.main()
- filter_dict = dump.call_args[0][0]
- self.assertEqual(filter_dict['default'],
- '("name:enabled.test1" || "name:enabled.test2")')
- def testTastControlWithTastExpr(self):
- file_mock = mock.mock_open(read_data=TAST_CONTROL)
- args = REQUIRED_ARGS + [
- '--tast-expr',
- TAST_EXPR,
- '--tast-control',
- 'mocked_input',
- ]
- with mock.patch('sys.argv', args),\
- mock.patch('builtins.open', file_mock),\
- mock.patch('os.chmod'),\
- mock.patch("json.dump", mock.MagicMock()) as dump:
- generate_skylab_deps.main()
- filter_dict = dump.call_args[0][0]
- self.assertEqual(filter_dict['default'], '(%s)' % TAST_EXPR)
- self.assertEqual(filter_dict['tast_disabled_tests_from_chrome_m100'],
- '(%s && !"name:example.m100.test1")' % TAST_EXPR)
- def testTastControlWithTastExprAndDisabledTests(self):
- file_mock = mock.mock_open(read_data=TAST_CONTROL)
- args = REQUIRED_ARGS + [
- '--tast-expr', TAST_EXPR, '--tast-control', 'mocked_input',
- '--disabled-tests', 'disabled.test1', '--disabled-tests',
- 'disabled.test2'
- ]
- with mock.patch('sys.argv', args),\
- mock.patch('builtins.open', file_mock),\
- mock.patch('os.chmod'),\
- mock.patch("json.dump", mock.MagicMock()) as dump:
- generate_skylab_deps.main()
- filter_dict = dump.call_args[0][0]
- self.assertEqual(
- filter_dict['default'],
- '("group:mainline" && "dep:chrome" && !informational && !'\
- '"name:disabled.test1" && !"name:disabled.test2")'
- )
- # The list from a set is indeterminent
- self.assertIn('"group:mainline" && "dep:chrome" && !informational',
- filter_dict['tast_disabled_tests_from_chrome_m100'])
- self.assertIn('&& !"name:disabled.test1"',
- filter_dict['tast_disabled_tests_from_chrome_m100'])
- self.assertIn('&& !"name:disabled.test2"',
- filter_dict['tast_disabled_tests_from_chrome_m100'])
- self.assertIn('&& !"name:example.m100.test1"',
- filter_dict['tast_disabled_tests_from_chrome_m100'])
- def testTastControlWithTastExprAndEnabledTests(self):
- file_mock = mock.mock_open(read_data=TAST_CONTROL)
- args = REQUIRED_ARGS + [
- '--tast-expr', TAST_EXPR, '--tast-control', 'mocked_input',
- '--enabled-tests', 'enabled.test1', '--enabled-tests', 'enabled.test2'
- ]
- with mock.patch('sys.argv', args),\
- mock.patch('builtins.open', file_mock),\
- mock.patch('os.chmod'),\
- mock.patch("json.dump", mock.MagicMock()) as dump:
- generate_skylab_deps.main()
- filter_dict = dump.call_args[0][0]
- self.assertEqual(
- filter_dict['default'],
- '("group:mainline" && "dep:chrome" && !informational && '\
- '("name:enabled.test1" || "name:enabled.test2"))'
- )
- self.assertEqual(
- filter_dict['tast_disabled_tests_from_chrome_m100'],
- '("group:mainline" && "dep:chrome" && !informational && '\
- '!"name:example.m100.test1" && ("name:enabled.test1" '\
- '|| "name:enabled.test2"))'
- )
- def testTastControlWithEnabledTests(self):
- file_mock = mock.mock_open(read_data=TAST_CONTROL)
- args = REQUIRED_ARGS + [
- '--tast-control',
- 'mocked_input',
- '--enabled-tests',
- 'enabled.test1',
- '--enabled-tests',
- 'enabled.test2',
- ]
- with mock.patch('sys.argv', args),\
- mock.patch('builtins.open', file_mock),\
- mock.patch('os.chmod'),\
- mock.patch("json.dump", mock.MagicMock()) as dump:
- generate_skylab_deps.main()
- filter_dict = dump.call_args[0][0]
- # Should not include 'all' collection from TAST_CONTROL since that would
- # need to be passed in the --disabled-tests to be included
- self.assertEqual(filter_dict['default'],
- '("name:enabled.test1" || "name:enabled.test2")')
- self.assertEqual(
- filter_dict['tast_disabled_tests_from_chrome_m100'],
- '(!"name:example.m100.test1" && '\
- '("name:enabled.test1" || "name:enabled.test2"))'
- )
- if __name__ == '__main__':
- unittest.main()
|