| #!/usr/bin/env python |
| # Copyright 2016 the V8 project 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 itertools |
| import os |
| import sys |
| import tempfile |
| import unittest |
| |
| # Needed because the test runner contains relative imports. |
| TOOLS_PATH = os.path.dirname(os.path.dirname(os.path.dirname( |
| os.path.abspath(__file__)))) |
| sys.path.append(TOOLS_PATH) |
| |
| from testrunner.local.testsuite import TestSuite, TestGenerator |
| from testrunner.objects.testcase import TestCase |
| from testrunner.test_config import TestConfig |
| |
| |
| class TestSuiteTest(unittest.TestCase): |
| def setUp(self): |
| test_dir = os.path.dirname(__file__) |
| self.test_root = os.path.join(test_dir, "fake_testsuite") |
| self.test_config = TestConfig( |
| command_prefix=[], |
| extra_flags=[], |
| isolates=False, |
| mode_flags=[], |
| no_harness=False, |
| noi18n=False, |
| random_seed=0, |
| run_skipped=False, |
| shell_dir='fake_testsuite/fake_d8', |
| timeout=10, |
| verbose=False, |
| ) |
| |
| self.suite = TestSuite.Load( |
| self.test_root, self.test_config, "standard_runner") |
| |
| def testLoadingTestSuites(self): |
| self.assertEquals(self.suite.name, "fake_testsuite") |
| self.assertEquals(self.suite.test_config, self.test_config) |
| |
| # Verify that the components of the TestSuite aren't loaded yet. |
| self.assertIsNone(self.suite.tests) |
| self.assertIsNone(self.suite.statusfile) |
| |
| def testLoadingTestsFromDisk(self): |
| tests = self.suite.load_tests_from_disk( |
| statusfile_variables={}) |
| def is_generator(iterator): |
| return iterator == iter(iterator) |
| |
| self.assertTrue(is_generator(tests)) |
| self.assertEquals(tests.test_count_estimate, 2) |
| |
| slow_tests, fast_tests = list(tests.slow_tests), list(tests.fast_tests) |
| # Verify that the components of the TestSuite are loaded. |
| self.assertTrue(len(slow_tests) == len(fast_tests) == 1) |
| self.assertTrue(all(test.is_slow for test in slow_tests)) |
| self.assertFalse(any(test.is_slow for test in fast_tests)) |
| self.assertIsNotNone(self.suite.statusfile) |
| |
| def testMergingTestGenerators(self): |
| tests = self.suite.load_tests_from_disk( |
| statusfile_variables={}) |
| more_tests = self.suite.load_tests_from_disk( |
| statusfile_variables={}) |
| |
| # Merge the test generators |
| tests.merge(more_tests) |
| self.assertEquals(tests.test_count_estimate, 4) |
| |
| # Check the tests are sorted by speed |
| test_speeds = [] |
| for test in tests: |
| test_speeds.append(test.is_slow) |
| |
| self.assertEquals(test_speeds, [True, True, False, False]) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |