Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(212)

Unified Diff: tools/telemetry/telemetry/unittest/run_tests.py

Issue 355203002: Revert of [telemetry] Refactor run_tests to remove old cruft. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/unittest/run_tests.py
diff --git a/tools/telemetry/telemetry/unittest/run_tests.py b/tools/telemetry/telemetry/unittest/run_tests.py
index 727bfc84421f1eb05e25997977c93fc3622fbc32..2605f342b2b5530cdfa9b90d0fece005cedfcdf2 100644
--- a/tools/telemetry/telemetry/unittest/run_tests.py
+++ b/tools/telemetry/telemetry/unittest/run_tests.py
@@ -3,86 +3,73 @@
# found in the LICENSE file.
import logging
-import sys
import unittest
from telemetry import decorators
-from telemetry.core import browser_finder
from telemetry.core import browser_options
-from telemetry.core import command_line
from telemetry.core import discover
from telemetry.core import util
-from telemetry.unittest import gtest_unittest_results
+from telemetry.unittest import gtest_testrunner
from telemetry.unittest import options_for_unittests
-
-
-class Environment(object):
- def __init__(self, top_level_dir, test_dirs):
- self._top_level_dir = top_level_dir
- self._test_dirs = tuple(test_dirs)
-
- @property
- def top_level_dir(self):
- return self._top_level_dir
-
- @property
- def test_dirs(self):
- return self._test_dirs
def Discover(start_dir, top_level_dir=None, pattern='test*.py'):
loader = unittest.defaultTestLoader
- loader.suiteClass = gtest_unittest_results.GTestTestSuite
+ loader.suiteClass = gtest_testrunner.GTestTestSuite
+ subsuites = []
- test_suites = []
modules = discover.DiscoverModules(start_dir, top_level_dir, pattern)
for module in modules:
if hasattr(module, 'suite'):
- suite = module.suite()
+ new_suite = module.suite()
else:
- suite = loader.loadTestsFromModule(module)
- if suite.countTestCases():
- test_suites.append(suite)
- return test_suites
+ new_suite = loader.loadTestsFromModule(module)
+ if new_suite.countTestCases():
+ subsuites.append(new_suite)
+ return gtest_testrunner.GTestTestSuite(subsuites)
def FilterSuite(suite, predicate):
new_suite = suite.__class__()
- for test in suite:
- if isinstance(test, unittest.TestSuite):
- subsuite = FilterSuite(test, predicate)
- if subsuite.countTestCases():
- new_suite.addTest(subsuite)
- else:
- assert isinstance(test, unittest.TestCase)
- if predicate(test):
- new_suite.addTest(test)
+ for x in suite:
+ if isinstance(x, unittest.TestSuite):
+ subsuite = FilterSuite(x, predicate)
+ if subsuite.countTestCases() == 0:
+ continue
+
+ new_suite.addTest(subsuite)
+ continue
+
+ assert isinstance(x, unittest.TestCase)
+ if predicate(x):
+ new_suite.addTest(x)
return new_suite
-def DiscoverTests(search_dirs, top_level_dir, possible_browser,
- selected_tests=None, run_disabled_tests=False):
+def DiscoverAndRunTests(dir_name, args, top_level_dir, possible_browser,
+ default_options, runner):
+ if not runner:
+ runner = gtest_testrunner.GTestTestRunner(print_result_after_run=True)
+ suite = Discover(dir_name, top_level_dir, '*_unittest.py')
def IsTestSelected(test):
- if selected_tests:
+ if len(args) != 0:
found = False
- for name in selected_tests:
+ for name in args:
if name in test.id():
found = True
if not found:
return False
- if run_disabled_tests:
+ if default_options.run_disabled_tests:
return True
# pylint: disable=W0212
if not hasattr(test, '_testMethodName'):
return True
method = getattr(test, test._testMethodName)
return decorators.IsEnabled(method, possible_browser)
-
- wrapper_suite = gtest_unittest_results.GTestTestSuite()
- for search_dir in search_dirs:
- wrapper_suite.addTests(Discover(search_dir, top_level_dir, '*_unittest.py'))
- return FilterSuite(wrapper_suite, IsTestSelected)
+ filtered_suite = FilterSuite(suite, IsTestSelected)
+ test_result = runner.run(filtered_suite)
+ return test_result
def RestoreLoggingLevel(func):
@@ -100,61 +87,53 @@
return _LoggingRestoreWrapper
-environment = None
+@RestoreLoggingLevel
+def Main(args, start_dir, top_level_dir, runner=None):
+ """Unit test suite that collects all test cases for telemetry."""
+ # Add unittest_data to the path so we can import packages from it.
+ util.AddDirToPythonPath(util.GetUnittestDataDir())
+ default_options = browser_options.BrowserFinderOptions()
+ default_options.browser_type = 'any'
-class RunTestsCommand(command_line.OptparseCommand):
- """Run unit tests"""
+ parser = default_options.CreateParser('run_tests [options] [test names]')
+ parser.add_option('--repeat-count', dest='run_test_repeat_count',
+ type='int', default=1,
+ help='Repeats each a provided number of times.')
+ parser.add_option('-d', '--also-run-disabled-tests',
+ dest='run_disabled_tests',
+ action='store_true', default=False,
+ help='Ignore @Disabled and @Enabled restrictions.')
- usage = '[test_name ...] [<options>]'
+ _, args = parser.parse_args(args)
- @classmethod
- def CreateParser(cls):
- options = browser_options.BrowserFinderOptions()
- options.browser_type = 'any'
- parser = options.CreateParser('%%prog %s' % cls.usage)
- return parser
+ if default_options.verbosity == 0:
+ logging.getLogger().setLevel(logging.WARN)
- @classmethod
- def AddCommandLineArgs(cls, parser):
- parser.add_option('--repeat-count', dest='run_test_repeat_count',
- type='int', default=1,
- help='Repeats each a provided number of times.')
- parser.add_option('-d', '--also-run-disabled-tests',
- dest='run_disabled_tests',
- action='store_true', default=False,
- help='Ignore @Disabled and @Enabled restrictions.')
+ from telemetry.core import browser_finder
+ try:
+ browser_to_create = browser_finder.FindBrowser(default_options)
+ except browser_finder.BrowserFinderException, ex:
+ logging.error(str(ex))
+ return 1
- @classmethod
- def ProcessCommandLineArgs(cls, parser, args):
- if args.verbosity == 0:
- logging.getLogger().setLevel(logging.WARN)
+ if browser_to_create == None:
+ logging.error('No browser found of type %s. Cannot run tests.',
+ default_options.browser_type)
+ logging.error('Re-run with --browser=list to see available browser types.')
+ return 1
- try:
- possible_browser = browser_finder.FindBrowser(args)
- except browser_finder.BrowserFinderException, ex:
- parser.error(ex)
+ options_for_unittests.Set(default_options,
+ browser_to_create.browser_type)
+ try:
+ success = True
+ for _ in xrange(default_options.run_test_repeat_count):
+ success = success and DiscoverAndRunTests(
+ start_dir, args, top_level_dir, browser_to_create, default_options,
+ runner)
+ if success:
+ return 0
+ finally:
+ options_for_unittests.Set(None, None)
- if not possible_browser:
- parser.error('No browser found of type %s. Cannot run tests.\n'
- 'Re-run with --browser=list to see '
- 'available browser types.' % args.browser_type)
-
- cls.test_suite = DiscoverTests(
- environment.test_dirs, environment.top_level_dir, possible_browser,
- args.positional_args, args.run_disabled_tests)
-
- @RestoreLoggingLevel
- def Run(self, args):
- util.AddDirToPythonPath(util.GetUnittestDataDir())
-
- result = gtest_unittest_results.GTestUnittestResults(sys.stdout)
- try:
- options_for_unittests.Set(args)
- for _ in xrange(args.run_test_repeat_count):
- self.test_suite(result)
- finally:
- options_for_unittests.Set(None)
-
- result.PrintSummary()
- return len(result.failures) + len(result.errors)
+ return 1
« no previous file with comments | « tools/telemetry/telemetry/unittest/options_for_unittests.py ('k') | tools/telemetry/telemetry/unittest/run_tests_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698