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

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

Issue 382433002: [telemetry] OutputFormatter for unit tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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/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)

Powered by Google App Engine
This is Rietveld 408576698