1# Copyright 2014 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import unittest 6 7from telemetry.core import util 8from telemetry.testing import run_tests 9 10 11class MockArgs(object): 12 def __init__(self): 13 self.positional_args = [] 14 self.exact_test_filter = True 15 self.run_disabled_tests = False 16 self.skip = [] 17 18 19class MockPossibleBrowser(object): 20 def __init__(self, browser_type, os_name, os_version_name, 21 supports_tab_control): 22 self.browser_type = browser_type 23 self.platform = MockPlatform(os_name, os_version_name) 24 self.supports_tab_control = supports_tab_control 25 26 27class MockPlatform(object): 28 def __init__(self, os_name, os_version_name): 29 self.os_name = os_name 30 self.os_version_name = os_version_name 31 32 def GetOSName(self): 33 return self.os_name 34 35 def GetOSVersionName(self): 36 return self.os_version_name 37 38 39class RunTestsUnitTest(unittest.TestCase): 40 41 def _GetEnabledTests(self, browser_type, os_name, os_version_name, 42 supports_tab_control, args=None): 43 if not args: 44 args = MockArgs() 45 runner = run_tests.typ.Runner() 46 host = runner.host 47 runner.top_level_dir = util.GetTelemetryDir() 48 runner.args.tests = [host.join(util.GetTelemetryDir(), 49 'telemetry', 'testing', 'disabled_cases.py')] 50 possible_browser = MockPossibleBrowser( 51 browser_type, os_name, os_version_name, supports_tab_control) 52 runner.classifier = run_tests.GetClassifier(args, possible_browser) 53 _, test_set = runner.find_tests(runner.args) 54 return set(test.name.split('.')[-1] for test in test_set.parallel_tests) 55 56 def testSystemMacMavericks(self): 57 self.assertEquals( 58 set(['testAllEnabled', 59 'testMacOnly', 60 'testMavericksOnly', 61 'testNoChromeOS', 62 'testNoWinLinux', 63 'testSystemOnly', 64 'testHasTabs']), 65 self._GetEnabledTests('system', 'mac', 'mavericks', True)) 66 67 def testSystemMacLion(self): 68 self.assertEquals( 69 set(['testAllEnabled', 70 'testMacOnly', 71 'testNoChromeOS', 72 'testNoMavericks', 73 'testNoWinLinux', 74 'testSystemOnly', 75 'testHasTabs']), 76 self._GetEnabledTests('system', 'mac', 'lion', True)) 77 78 def testCrosGuestChromeOS(self): 79 self.assertEquals( 80 set(['testAllEnabled', 81 'testChromeOSOnly', 82 'testNoMac', 83 'testNoMavericks', 84 'testNoSystem', 85 'testNoWinLinux', 86 'testHasTabs']), 87 self._GetEnabledTests('cros-guest', 'chromeos', '', True)) 88 89 def testCanaryWindowsWin7(self): 90 self.assertEquals( 91 set(['testAllEnabled', 92 'testNoChromeOS', 93 'testNoMac', 94 'testNoMavericks', 95 'testNoSystem', 96 'testWinOrLinuxOnly', 97 'testHasTabs']), 98 self._GetEnabledTests('canary', 'win', 'win7', True)) 99 100 def testDoesntHaveTabs(self): 101 self.assertEquals( 102 set(['testAllEnabled', 103 'testNoChromeOS', 104 'testNoMac', 105 'testNoMavericks', 106 'testNoSystem', 107 'testWinOrLinuxOnly']), 108 self._GetEnabledTests('canary', 'win', 'win7', False)) 109 110 def testSkip(self): 111 args = MockArgs() 112 args.skip = ['telemetry.*testNoMac', '*NoMavericks', 113 'telemetry.testing.disabled_cases.DisabledCases.testNoSystem'] 114 self.assertEquals( 115 set(['testAllEnabled', 116 'testNoChromeOS', 117 'testWinOrLinuxOnly', 118 'testHasTabs']), 119 self._GetEnabledTests('canary', 'win', 'win7', True, args)) 120