run_tests_unittest.py revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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 import decorators
8from telemetry.core import util
9from telemetry.unittest import run_tests
10
11
12class MockPlatform(object):
13  def __init__(self, os_name, os_version_name):
14    self.os_name = os_name
15    self.os_version_name = os_version_name
16
17  def GetOSName(self):
18    return self.os_name
19
20  def GetOSVersionName(self):
21    return self.os_version_name
22
23
24class RunTestsUnitTest(unittest.TestCase):
25
26  def setUp(self):
27    self.suite = run_tests.Discover(
28        util.GetTelemetryDir(), util.GetTelemetryDir(), 'disabled_cases.py')
29
30  def _GetEnabledTests(self, browser_type, platform):
31    # pylint: disable=W0212
32    def MockPredicate(test):
33      method = getattr(test, test._testMethodName)
34      return decorators.IsEnabled(method, browser_type, platform)
35
36    enabled_tests = set()
37    for i in run_tests.FilterSuite(self.suite, MockPredicate)._tests:
38      for j in i._tests:
39        for k in j._tests:
40          enabled_tests.add(k._testMethodName)
41    return enabled_tests
42
43  def testSystemMacMavericks(self):
44    self.assertEquals(
45        set(['testAllEnabled',
46             'testMacOnly',
47             'testMavericksOnly',
48             'testNoChromeOS',
49             'testNoWinLinux',
50             'testSystemOnly']),
51        self._GetEnabledTests('system', MockPlatform('mac', 'mavericks')))
52
53  def testSystemMacLion(self):
54    self.assertEquals(
55        set(['testAllEnabled',
56             'testMacOnly',
57             'testNoChromeOS',
58             'testNoMavericks',
59             'testNoWinLinux',
60             'testSystemOnly']),
61        self._GetEnabledTests('system', MockPlatform('mac', 'lion')))
62
63  def testCrosGuestChromeOS(self):
64    self.assertEquals(
65        set(['testAllEnabled',
66             'testChromeOSOnly',
67             'testNoMac',
68             'testNoMavericks',
69             'testNoSystem',
70             'testNoWinLinux']),
71        self._GetEnabledTests('cros-guest', MockPlatform('chromeos', '')))
72
73  def testCanaryWindowsWin7(self):
74    self.assertEquals(
75        set(['testAllEnabled',
76             'testNoChromeOS',
77             'testNoMac',
78             'testNoMavericks',
79             'testNoSystem',
80             'testWinOrLinuxOnly']),
81        self._GetEnabledTests('canary', MockPlatform('win', 'win7')))
82