Chromium Code Reviews| Index: tools/telemetry/telemetry/unittest/output_formatter_test_runner.py |
| diff --git a/tools/telemetry/telemetry/unittest/output_formatter_test_runner.py b/tools/telemetry/telemetry/unittest/output_formatter_test_runner.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d44612035f309474b2a0be474eb5cded7364221a |
| --- /dev/null |
| +++ b/tools/telemetry/telemetry/unittest/output_formatter_test_runner.py |
| @@ -0,0 +1,93 @@ |
| +# Copyright 2014 The Chromium Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +import unittest |
| + |
| +from telemetry.core import util |
| +from telemetry.unittest import options_for_unittests |
| + |
|
nednguyen
2014/07/09 17:26:46
I don't see why we want to add prefix OutputFormat
Ken Russell (switch to Gerrit)
2014/07/09 20:20:20
Agree that OutputFormatterTestSuite is a mouthful.
dtu
2014/07/10 00:35:01
Done. I moved everything from here into output_for
dtu
2014/07/10 00:35:02
Done.
|
| + |
| +class OutputFormatterTestSuite(unittest.TestSuite): |
| + """TestSuite that can delegate start and stop calls to a result object.""" |
| + def run(self, result): # pylint: disable=W0221 |
| + result.startTestSuite(self) |
| + result = super(OutputFormatterTestSuite, self).run(result) |
| + result.stopTestSuite(self) |
| + return result |
| + |
| + |
| +class OutputFormatterTestRunner(object): |
| + def run(self, test, output_formatters, repeat_count, args): |
| + util.AddDirToPythonPath(util.GetUnittestDataDir()) |
| + result = OutputFormatterTestResult(output_formatters) |
| + result.startTestRun() |
| + try: |
| + options_for_unittests.Push(args) |
| + for _ in xrange(repeat_count): |
| + test(result) |
| + finally: |
| + options_for_unittests.Pop() |
| + result.stopTestRun() |
| + |
| + return result |
| + |
| + |
| +class OutputFormatterTestResult(unittest.TestResult): |
| + def __init__(self, output_formatters): |
| + super(OutputFormatterTestResult, self).__init__() |
| + self.successes = [] |
| + self._output_formatters = output_formatters |
| + |
| + @property |
| + def failures_and_errors(self): |
| + return self.failures + self.errors |
| + |
| + def startTest(self, test): |
| + super(OutputFormatterTestResult, self).startTest(test) |
| + for output_formatter in self._output_formatters: |
| + output_formatter.StartTest(test) |
| + |
| + def startTestSuite(self, suite): |
| + for output_formatter in self._output_formatters: |
| + output_formatter.StartTestSuite(suite) |
| + |
| + def startTestRun(self): |
| + super(OutputFormatterTestResult, self).startTestRun() |
| + for output_formatter in self._output_formatters: |
| + output_formatter.StartTestRun() |
| + |
| + def stopTest(self, test): |
| + super(OutputFormatterTestResult, self).stopTest(test) |
| + for output_formatter in self._output_formatters: |
| + output_formatter.StopTest(test) |
| + |
| + def stopTestSuite(self, suite): |
| + for output_formatter in self._output_formatters: |
| + output_formatter.StopTestSuite(suite) |
| + |
| + def stopTestRun(self): |
| + super(OutputFormatterTestResult, self).stopTestRun() |
| + for output_formatter in self._output_formatters: |
| + output_formatter.StopTestRun(self) |
| + |
| + def addError(self, test, err): |
| + super(OutputFormatterTestResult, self).addError(test, err) |
| + for output_formatter in self._output_formatters: |
| + output_formatter.Error(test, err) |
| + |
| + def addFailure(self, test, err): |
| + super(OutputFormatterTestResult, self).addFailure(test, err) |
| + for output_formatter in self._output_formatters: |
| + output_formatter.Failure(test, err) |
| + |
| + def addSuccess(self, test): |
| + super(OutputFormatterTestResult, self).addSuccess(test) |
| + self.successes.append(test) |
| + for output_formatter in self._output_formatters: |
| + output_formatter.Success(test) |
| + |
| + def addSkip(self, test, reason): |
| + super(OutputFormatterTestResult, self).addSkip(test, reason) |
| + for output_formatter in self._output_formatters: |
| + output_formatter.Skip(test, reason) |