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 3# found in the LICENSE file. 4import os 5import unittest 6 7from telemetry.core import discover 8from telemetry.core import util 9 10 11class DiscoverTest(unittest.TestCase): 12 def setUp(self): 13 self._base_dir = util.GetUnittestDataDir() 14 self._start_dir = os.path.join(self._base_dir, 'discoverable_classes') 15 self._base_class = Exception 16 17 def testDiscoverClassesBasic(self): 18 classes = discover.DiscoverClasses( 19 self._start_dir, self._base_dir, self._base_class) 20 21 actual_classes = dict( 22 (name, cls.__name__) for name, cls in classes.iteritems()) 23 expected_classes = { 24 'discover_dummyclass': 'DummyException', 25 'another_discover_dummyclass': 'DummyExceptionImpl2', 26 } 27 self.assertEqual(actual_classes, expected_classes) 28 29 def testDiscoverClassesWithPattern(self): 30 classes = discover.DiscoverClasses( 31 self._start_dir, self._base_dir, self._base_class, 32 pattern='another*') 33 34 actual_classes = dict( 35 (name, cls.__name__) for name, cls in classes.iteritems()) 36 expected_classes = { 37 'another_discover_dummyclass': 'DummyExceptionImpl2', 38 } 39 self.assertEqual(actual_classes, expected_classes) 40 41 def testDiscoverClassesByClassName(self): 42 classes = discover.DiscoverClasses( 43 self._start_dir, self._base_dir, self._base_class, 44 index_by_class_name=True) 45 46 actual_classes = dict( 47 (name, cls.__name__) for name, cls in classes.iteritems()) 48 expected_classes = { 49 'dummy_exception': 'DummyException', 50 'dummy_exception_impl1': 'DummyExceptionImpl1', 51 'dummy_exception_impl2': 'DummyExceptionImpl2', 52 } 53 self.assertEqual(actual_classes, expected_classes) 54