OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 import os | 4 import os |
5 import unittest | 5 import unittest |
6 | 6 |
7 from telemetry.core import discover | 7 from telemetry.core import discover |
8 from telemetry.core import util | 8 from telemetry.core import util |
9 | 9 |
10 | 10 |
11 class DiscoverTest(unittest.TestCase): | 11 class DiscoverTest(unittest.TestCase): |
12 def setUp(self): | 12 def setUp(self): |
13 self._base_dir = util.GetUnittestDataDir() | 13 self._base_dir = util.GetUnittestDataDir() |
14 self._start_dir = os.path.join(self._base_dir, 'discoverable_classes') | 14 self._start_dir = os.path.join(self._base_dir, 'discoverable_classes') |
15 self._base_class = Exception | 15 self._base_class = Exception |
16 | 16 |
| 17 def testDiscoverClassesWithDefaults(self): |
| 18 classes = discover.DiscoverClasses( |
| 19 self._start_dir, self._base_dir, self._base_class) |
17 | 20 |
18 def testDiscoverClassesWithIndexByModuleName(self): | 21 actual_classes = list(cls.__name__ for cls in classes) |
| 22 expected_classes = [ |
| 23 'DummyException', 'DummyExceptionImpl1', 'DummyExceptionImpl2', |
| 24 'DummyExceptionWithParameterImpl1', 'DummyExceptionWithParameterImpl2' |
| 25 ] |
| 26 self.assertItemsEqual(actual_classes, expected_classes) |
| 27 |
| 28 |
| 29 def testDiscoverClassesOneClassPerModule(self): |
19 classes = discover.DiscoverClasses( | 30 classes = discover.DiscoverClasses( |
20 self._start_dir, self._base_dir, self._base_class, | 31 self._start_dir, self._base_dir, self._base_class, |
21 index_by_class_name=False) | 32 one_class_per_module=True) |
22 | 33 |
23 actual_classes = dict( | 34 actual_classes = list(cls.__name__ for cls in classes) |
24 (name, cls.__name__) for name, cls in classes.iteritems()) | 35 expected_classes = ['DummyExceptionImpl1', 'DummyException', |
25 expected_classes = { | 36 'DummyExceptionWithParameterImpl2'] |
26 'another_discover_dummyclass': 'DummyExceptionWithParameterImpl1', | 37 self.assertItemsEqual(actual_classes, expected_classes) |
27 'discover_dummyclass': 'DummyException', | |
28 'parameter_discover_dummyclass': 'DummyExceptionWithParameterImpl2' | |
29 } | |
30 self.assertEqual(actual_classes, expected_classes) | |
31 | 38 |
32 def testDiscoverDirectlyConstructableClassesWithIndexByClassName(self): | 39 def testDiscoverDirectlyConstructableClasses(self): |
33 classes = discover.DiscoverClasses( | 40 classes = discover.DiscoverClasses( |
34 self._start_dir, self._base_dir, self._base_class, | 41 self._start_dir, self._base_dir, self._base_class, |
35 directly_constructable=True) | 42 directly_constructable=True) |
36 | 43 |
37 actual_classes = dict( | 44 actual_classes = list(cls.__name__ for cls in classes) |
38 (name, cls.__name__) for name, cls in classes.iteritems()) | 45 expected_classes = [ |
39 expected_classes = { | 46 'DummyException', 'DummyExceptionImpl1', 'DummyExceptionImpl2' |
40 'dummy_exception': 'DummyException', | 47 ] |
41 'dummy_exception_impl1': 'DummyExceptionImpl1', | 48 self.assertItemsEqual(actual_classes, expected_classes) |
42 'dummy_exception_impl2': 'DummyExceptionImpl2', | |
43 } | |
44 self.assertEqual(actual_classes, expected_classes) | |
45 | 49 |
46 def testDiscoverClassesWithIndexByClassName(self): | 50 def testDiscoverOneDirectlyConstructableClassPerModule(self): |
47 classes = discover.DiscoverClasses( | |
48 self._start_dir, self._base_dir, self._base_class) | |
49 | |
50 actual_classes = dict( | |
51 (name, cls.__name__) for name, cls in classes.iteritems()) | |
52 expected_classes = { | |
53 'dummy_exception': 'DummyException', | |
54 'dummy_exception_impl1': 'DummyExceptionImpl1', | |
55 'dummy_exception_impl2': 'DummyExceptionImpl2', | |
56 'dummy_exception_with_parameter_impl1': | |
57 'DummyExceptionWithParameterImpl1', | |
58 'dummy_exception_with_parameter_impl2': | |
59 'DummyExceptionWithParameterImpl2' | |
60 } | |
61 self.assertEqual(actual_classes, expected_classes) | |
62 | |
63 | |
64 def testDiscoverClassesWithPatternAndIndexByModule(self): | |
65 classes = discover.DiscoverClasses( | 51 classes = discover.DiscoverClasses( |
66 self._start_dir, self._base_dir, self._base_class, | 52 self._start_dir, self._base_dir, self._base_class, |
67 pattern='another*', index_by_class_name=False) | 53 directly_constructable=True, one_class_per_module=True) |
68 | 54 |
69 actual_classes = dict( | 55 actual_classes = list(cls.__name__ for cls in classes) |
70 (name, cls.__name__) for name, cls in classes.iteritems()) | 56 expected_classes = ['DummyException', 'DummyExceptionImpl1'] |
71 expected_classes = { | 57 self.assertItemsEqual(actual_classes, expected_classes) |
72 'another_discover_dummyclass': 'DummyExceptionWithParameterImpl1' | |
73 } | |
74 self.assertEqual(actual_classes, expected_classes) | |
75 | 58 |
76 def testDiscoverDirectlyConstructableClassesWithPatternAndIndexByClassName( | 59 def testDiscoverClassesWithPattern(self): |
77 self): | 60 classes = discover.DiscoverClasses( |
| 61 self._start_dir, self._base_dir, self._base_class, |
| 62 pattern='another*') |
| 63 |
| 64 actual_classes = list(cls.__name__ for cls in classes) |
| 65 expected_classes = ['DummyExceptionImpl1', 'DummyExceptionImpl2', |
| 66 'DummyExceptionWithParameterImpl1'] |
| 67 self.assertItemsEqual(actual_classes, expected_classes) |
| 68 |
| 69 def testDiscoverOneClassPerModuleWithPattern(self): |
| 70 classes = discover.DiscoverClasses( |
| 71 self._start_dir, self._base_dir, self._base_class, |
| 72 pattern='another*', one_class_per_module=True) |
| 73 |
| 74 actual_classes = list(cls.__name__ for cls in classes) |
| 75 expected_classes = ['DummyExceptionImpl1'] |
| 76 self.assertItemsEqual(actual_classes, expected_classes) |
| 77 |
| 78 def testDiscoverDirectlyConstructableClassesWithPattern(self): |
78 classes = discover.DiscoverClasses( | 79 classes = discover.DiscoverClasses( |
79 self._start_dir, self._base_dir, self._base_class, | 80 self._start_dir, self._base_dir, self._base_class, |
80 pattern='another*', directly_constructable=True) | 81 pattern='another*', directly_constructable=True) |
81 | 82 |
82 actual_classes = dict( | 83 actual_classes = list(cls.__name__ for cls in classes) |
83 (name, cls.__name__) for name, cls in classes.iteritems()) | 84 expected_classes = ['DummyExceptionImpl1', 'DummyExceptionImpl2'] |
84 expected_classes = { | 85 self.assertItemsEqual(actual_classes, expected_classes) |
85 'dummy_exception_impl1': 'DummyExceptionImpl1', | |
86 'dummy_exception_impl2': 'DummyExceptionImpl2', | |
87 } | |
88 self.assertEqual(actual_classes, expected_classes) | |
89 | 86 |
90 def testDiscoverClassesWithPatternAndIndexByClassName(self): | 87 def testDiscoverOneDirectlyConstructableClassPerModuleWithPattern(self): |
91 classes = discover.DiscoverClasses( | 88 classes = discover.DiscoverClasses( |
92 self._start_dir, self._base_dir, self._base_class, | 89 self._start_dir, self._base_dir, self._base_class, |
93 pattern='another*') | 90 pattern='another*', directly_constructable=True, |
| 91 one_class_per_module=True) |
94 | 92 |
95 actual_classes = dict( | 93 actual_classes = list(cls.__name__ for cls in classes) |
96 (name, cls.__name__) for name, cls in classes.iteritems()) | 94 expected_classes = ['DummyExceptionImpl1'] |
97 expected_classes = { | 95 self.assertItemsEqual(actual_classes, expected_classes) |
98 'dummy_exception_impl1': 'DummyExceptionImpl1', | |
99 'dummy_exception_impl2': 'DummyExceptionImpl2', | |
100 'dummy_exception_with_parameter_impl1': | |
101 'DummyExceptionWithParameterImpl1', | |
102 } | |
103 self.assertEqual(actual_classes, expected_classes) | |
OLD | NEW |