1#!/usr/bin/env python 2# Copyright 2016 the V8 project authors. All rights reserved. 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6import itertools 7import os 8import sys 9import tempfile 10import unittest 11 12# Needed because the test runner contains relative imports. 13TOOLS_PATH = os.path.dirname(os.path.dirname(os.path.dirname( 14 os.path.abspath(__file__)))) 15sys.path.append(TOOLS_PATH) 16 17from testrunner.local.testsuite import TestSuite, TestGenerator 18from testrunner.objects.testcase import TestCase 19from testrunner.test_config import TestConfig 20 21 22class TestSuiteTest(unittest.TestCase): 23 def setUp(self): 24 test_dir = os.path.dirname(__file__) 25 self.test_root = os.path.join(test_dir, "fake_testsuite") 26 self.test_config = TestConfig( 27 command_prefix=[], 28 extra_flags=[], 29 isolates=False, 30 mode_flags=[], 31 no_harness=False, 32 noi18n=False, 33 random_seed=0, 34 run_skipped=False, 35 shell_dir='fake_testsuite/fake_d8', 36 timeout=10, 37 verbose=False, 38 ) 39 40 self.suite = TestSuite.Load( 41 self.test_root, self.test_config, "standard_runner") 42 43 def testLoadingTestSuites(self): 44 self.assertEquals(self.suite.name, "fake_testsuite") 45 self.assertEquals(self.suite.test_config, self.test_config) 46 47 # Verify that the components of the TestSuite aren't loaded yet. 48 self.assertIsNone(self.suite.tests) 49 self.assertIsNone(self.suite.statusfile) 50 51 def testLoadingTestsFromDisk(self): 52 tests = self.suite.load_tests_from_disk( 53 statusfile_variables={}) 54 def is_generator(iterator): 55 return iterator == iter(iterator) 56 57 self.assertTrue(is_generator(tests)) 58 self.assertEquals(tests.test_count_estimate, 2) 59 60 slow_tests, fast_tests = list(tests.slow_tests), list(tests.fast_tests) 61 # Verify that the components of the TestSuite are loaded. 62 self.assertTrue(len(slow_tests) == len(fast_tests) == 1) 63 self.assertTrue(all(test.is_slow for test in slow_tests)) 64 self.assertFalse(any(test.is_slow for test in fast_tests)) 65 self.assertIsNotNone(self.suite.statusfile) 66 67 def testMergingTestGenerators(self): 68 tests = self.suite.load_tests_from_disk( 69 statusfile_variables={}) 70 more_tests = self.suite.load_tests_from_disk( 71 statusfile_variables={}) 72 73 # Merge the test generators 74 tests.merge(more_tests) 75 self.assertEquals(tests.test_count_estimate, 4) 76 77 # Check the tests are sorted by speed 78 test_speeds = [] 79 for test in tests: 80 test_speeds.append(test.is_slow) 81 82 self.assertEquals(test_speeds, [True, True, False, False]) 83 84 85if __name__ == '__main__': 86 unittest.main() 87