Index: tools/telemetry/telemetry/unittest/gtest_output_formatter_unittest.py |
diff --git a/tools/telemetry/telemetry/unittest/gtest_output_formatter_unittest.py b/tools/telemetry/telemetry/unittest/gtest_output_formatter_unittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0eff246f0fb05480384170f9baed66cd703adda8 |
--- /dev/null |
+++ b/tools/telemetry/telemetry/unittest/gtest_output_formatter_unittest.py |
@@ -0,0 +1,125 @@ |
+# 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 |
+import sys |
+ |
+from telemetry.unittest import gtest_output_formatter |
+from telemetry.unittest import simple_mock |
+ |
+ |
+class DummyException(Exception): |
+ pass |
+try: |
+ raise DummyException('Dummy exception') |
+except DummyException: |
+ DUMMY_EXCEPTION = sys.exc_info() |
+ |
+ |
+class TestFoo(unittest.TestCase): |
+ # Test method doesn't have test- prefix intentionally. This is so that |
+ # run_test script won't run this test. |
+ def runTezt(self): |
+ pass |
+ |
+ |
+class TestOutputStream(object): |
+ def __init__(self): |
+ self._output_data = [] |
+ |
+ @property |
+ def output_data(self): |
+ return ''.join(self._output_data) |
+ |
+ def write(self, data): |
+ self._output_data.append(data) |
+ |
+ def flush(self): |
+ pass |
+ |
+ |
+class TestResultWithSuccesses(unittest.TestResult): |
+ def __init__(self): |
+ super(TestResultWithSuccesses, self).__init__() |
+ self.successes = [] |
+ |
+ def addSuccess(self, test): |
+ super(TestResultWithSuccesses, self).addSuccess(test) |
+ self.successes.append(test) |
+ |
+ |
+class GTestOutputFormatterTest(unittest.TestCase): |
+ def setUp(self): |
+ super(GTestOutputFormatterTest, self).setUp() |
+ self._stream = TestOutputStream() |
+ self._formatter = gtest_output_formatter.GTestOutputFormatter(self._stream) |
+ |
+ self._mock_timer = simple_mock.MockTimer() |
+ self._real_time_time = gtest_output_formatter.time.time |
+ gtest_output_formatter.time.time = self._mock_timer.GetTime |
+ |
+ def tearDown(self): |
+ gtest_output_formatter.time.time = self._real_time_time |
+ |
+ def testTestSuiteWithWrapperSuite(self): |
+ suite = unittest.TestSuite() |
+ suite.addTest(unittest.TestSuite()) |
+ self._formatter.StartTestSuite(suite) |
+ self._formatter.StopTestSuite(suite) |
+ |
+ self.assertEqual(self._stream.output_data, '') |
+ |
+ def testTestSuiteWithTestCase(self): |
+ suite = unittest.TestSuite() |
+ suite.addTest(TestFoo(methodName='runTezt')) |
+ self._formatter.StartTestSuite(suite) |
+ self._mock_timer.SetTime(0.042) |
+ self._formatter.StopTestSuite(suite) |
+ |
+ expected = ('[----------] 1 test\n' |
+ '[----------] 1 test (42 ms total)\n\n') |
+ self.assertEqual(self._stream.output_data, expected) |
+ |
+ def testCaseFailure(self): |
+ test = TestFoo(methodName='runTezt') |
+ self._formatter.StartTest(test) |
+ self._mock_timer.SetTime(0.042) |
+ self._formatter.Failure(test, DUMMY_EXCEPTION) |
+ |
+ expected = ('[ RUN ] gtest_output_formatter_unittest.TestFoo.runTezt\n' |
+ '[ FAILED ] gtest_output_formatter_unittest.TestFoo.runTezt ' |
+ '(42 ms)\n') |
+ self.assertEqual(self._stream.output_data, expected) |
+ |
+ def testCaseSuccess(self): |
+ test = TestFoo(methodName='runTezt') |
+ self._formatter.StartTest(test) |
+ self._mock_timer.SetTime(0.042) |
+ self._formatter.Success(test) |
+ |
+ expected = ('[ RUN ] gtest_output_formatter_unittest.TestFoo.runTezt\n' |
+ '[ OK ] gtest_output_formatter_unittest.TestFoo.runTezt ' |
+ '(42 ms)\n') |
+ self.assertEqual(self._stream.output_data, expected) |
+ |
+ def testStopTestRun(self): |
+ result = TestResultWithSuccesses() |
+ self._formatter.StopTestRun(result) |
+ |
+ expected = '[ PASSED ] 0 tests.\n\n' |
+ self.assertEqual(self._stream.output_data, expected) |
+ |
+ def testStopTestRunWithFailureAndSuccess(self): |
+ test = TestFoo(methodName='runTezt') |
+ result = TestResultWithSuccesses() |
+ result.addSuccess(test) |
+ result.addFailure(test, DUMMY_EXCEPTION) |
+ self._formatter.StopTestRun(result) |
+ |
+ expected = ( |
+ '[ PASSED ] 1 test.\n' |
+ '[ FAILED ] 1 test, listed below:\n' |
+ '[ FAILED ] gtest_output_formatter_unittest.TestFoo.runTezt\n\n' |
+ '1 FAILED TEST\n\n') |
+ self.assertEqual(self._stream.output_data, expected) |