Index: tools/telemetry/telemetry/unittest/gtest_testrunner.py
|
diff --git a/tools/telemetry/telemetry/unittest/gtest_testrunner.py b/tools/telemetry/telemetry/unittest/gtest_testrunner.py
|
new file mode 100755
|
index 0000000000000000000000000000000000000000..ae11f22e0d7c0a2aa7775a4ee8691065dd0e2348
|
--- /dev/null
|
+++ b/tools/telemetry/telemetry/unittest/gtest_testrunner.py
|
@@ -0,0 +1,48 @@
|
+#!/usr/bin/env python
|
+# Copyright 2013 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.
|
+
|
+"""Implements a unittest TestRunner with GTest output.
|
+
|
+This output is ported from gtest.cc's PrettyUnitTestResultPrinter, but
|
+designed to be a drop-in replacement for unittest's TextTestRunner.
|
+"""
|
+
|
+import sys
|
+import time
|
+import unittest
|
+
|
+from telemetry.unittest import gtest_unittest_results
|
+
|
+
|
+class GTestTestSuite(unittest.TestSuite):
|
+ def __call__(self, *args, **kwargs):
|
+ result = args[0]
|
+ timestamp = time.time()
|
+ unit = 'test' if len(self._tests) == 1 else 'tests'
|
+ if not any(isinstance(x, unittest.TestSuite) for x in self._tests):
|
+ print '[----------] %d %s' % (len(self._tests), unit)
|
+ for test in self._tests:
|
+ if result.shouldStop:
|
+ break
|
+ test(result)
|
+ endts = time.time()
|
+ ms = (endts - timestamp) * 1000
|
+ if not any(isinstance(x, unittest.TestSuite) for x in self._tests):
|
+ print '[----------] %d %s (%d ms total)' % (len(self._tests), unit, ms)
|
+ print
|
+ return result
|
+
|
+
|
+class GTestTestRunner(object):
|
+ def __init__(self, print_result_after_run=True):
|
+ self.print_result_after_run = print_result_after_run
|
+ self.result = gtest_unittest_results.GTestUnittestResults(sys.stdout)
|
+
|
+ def run(self, test):
|
+ "Run the given test case or test suite."
|
+ test(self.result)
|
+ if self.print_result_after_run:
|
+ self.result.PrintSummary()
|
+ return self.result
|
|