| Index: tools/telemetry/telemetry/page/page_test_runner.py
|
| diff --git a/tools/telemetry/telemetry/page/page_test_runner.py b/tools/telemetry/telemetry/page/page_test_runner.py
|
| index 1bfc6c5c94183d49f2f9087102904ed10441fcbe..22a05176d7e1c51644d32f3c0601e0b13d362d7c 100644
|
| --- a/tools/telemetry/telemetry/page/page_test_runner.py
|
| +++ b/tools/telemetry/telemetry/page/page_test_runner.py
|
| @@ -4,6 +4,7 @@
|
| import os
|
| import sys
|
|
|
| +from telemetry import test as test_module
|
| from telemetry.core import browser_options
|
| from telemetry.core import discover
|
| from telemetry.core import profile_types
|
| @@ -11,15 +12,14 @@ from telemetry.page import page_test
|
| from telemetry.page import page_runner
|
| from telemetry.page import page_set
|
|
|
| -def Main(test_dir, profile_creators_dir, page_set_filenames):
|
| +def Main(base_dir, page_set_filenames):
|
| """Turns a PageTest into a command-line program.
|
|
|
| Args:
|
| - test_dir: Path to directory containing PageTests.
|
| - profile_creators_dir: Path to a directory containing ProfileCreators
|
| + base_dir: Path to directory containing tests and ProfileCreators.
|
| """
|
| runner = PageTestRunner()
|
| - sys.exit(runner.Run(test_dir, profile_creators_dir, page_set_filenames))
|
| + sys.exit(runner.Run(base_dir, page_set_filenames))
|
|
|
| class PageTestRunner(object):
|
| def __init__(self):
|
| @@ -35,16 +35,19 @@ class PageTestRunner(object):
|
| def test_class_name(self):
|
| return 'test'
|
|
|
| - def Run(self, test_dir, profile_creators_dir, page_set_filenames):
|
| - test, ps = self.ParseCommandLine(
|
| - sys.argv, test_dir, profile_creators_dir, page_set_filenames)
|
| + def Run(self, base_dir, page_set_filenames):
|
| + test, ps = self.ParseCommandLine(sys.argv, base_dir, page_set_filenames)
|
| results = page_runner.Run(test, ps, self._options)
|
| results.PrintSummary()
|
| return min(255, len(results.failures + results.errors))
|
|
|
| - def FindTestConstructors(self, test_dir):
|
| - return discover.DiscoverClasses(
|
| - test_dir, os.path.join(test_dir, '..'), self.test_class)
|
| + def FindTestConstructors(self, base_dir):
|
| + # Look for both Tests and PageTests, but Tests get priority, because
|
| + test_constructors = discover.DiscoverClasses(
|
| + base_dir, base_dir, self.test_class)
|
| + test_constructors.update(discover.DiscoverClasses(
|
| + base_dir, base_dir, test_module.Test, index_by_class_name=True))
|
| + return test_constructors
|
|
|
| def FindTestName(self, test_constructors, args):
|
| """Find the test name in an arbitrary argument list.
|
| @@ -122,23 +125,22 @@ class PageTestRunner(object):
|
| raise Exception('Did not understand "%s". Pass a page set, file or URL.' %
|
| page_set_arg)
|
|
|
| - def ParseCommandLine(self, args, test_dir, profile_creators_dir,
|
| - page_set_filenames):
|
| + def ParseCommandLine(self, args, base_dir, page_set_filenames):
|
| # Need to collect profile creators before creating command line parser.
|
| - if profile_creators_dir:
|
| - profile_types.FindProfileCreators(profile_creators_dir)
|
| + profile_types.FindProfileCreators(base_dir)
|
|
|
| self._options = browser_options.BrowserOptions()
|
| self._parser = self._options.CreateParser(
|
| '%%prog [options] %s page_set' % self.test_class_name)
|
|
|
| - test_constructors = self.FindTestConstructors(test_dir)
|
| + test_constructors = self.FindTestConstructors(base_dir)
|
| test_name = self.FindTestName(test_constructors, args)
|
| test = None
|
| if test_name:
|
| test = test_constructors[test_name]()
|
| - test.AddOutputOptions(self._parser)
|
| - test.AddCommandLineOptions(self._parser)
|
| + if not isinstance(test, test_module.Test):
|
| + test.AddOutputOptions(self._parser)
|
| + test.AddCommandLineOptions(self._parser)
|
| page_runner.AddCommandLineOptions(self._parser)
|
|
|
| _, self._args = self._parser.parse_args()
|
| @@ -155,12 +157,18 @@ class PageTestRunner(object):
|
| test_list_string = ',\n'.join(sorted(test_constructors.keys()))
|
| self.PrintParseError(error_message + test_list_string)
|
|
|
| - ps = self.GetPageSet(test, page_set_filenames)
|
| + if isinstance(test, test_module.Test):
|
| + ps = test.CreatePageSet(self._options)
|
| + else:
|
| + ps = self.GetPageSet(test, page_set_filenames)
|
|
|
| if len(self._args) > 2:
|
| self.PrintParseError('Too many arguments.')
|
|
|
| - return test, ps
|
| + if isinstance(test, test_module.Test):
|
| + return test.test(), ps
|
| + else:
|
| + return test, ps
|
|
|
| def PrintParseError(self, message):
|
| self._parser.error(message)
|
|
|