Index: tools/telemetry/telemetry/results/gtest_test_results_unittest.py |
diff --git a/tools/telemetry/telemetry/results/gtest_test_results_unittest.py b/tools/telemetry/telemetry/results/gtest_test_results_unittest.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7175f10aa5de3b1806f736500b22023f7013b198 |
--- /dev/null |
+++ b/tools/telemetry/telemetry/results/gtest_test_results_unittest.py |
@@ -0,0 +1,130 @@ |
+# 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 os |
+import traceback |
+ |
+from telemetry.page import page_set |
+from telemetry.results import base_test_results_unittest |
+from telemetry.results import gtest_test_results |
+from telemetry.unittest import simple_mock |
+ |
+ |
+def _MakePageSet(): |
+ ps = page_set.PageSet(file_path=os.path.dirname(__file__)) |
+ ps.AddPageWithDefaultRunNavigate('http://www.foo.com/') |
+ ps.AddPageWithDefaultRunNavigate('http://www.bar.com/') |
+ ps.AddPageWithDefaultRunNavigate('http://www.baz.com/') |
+ ps.AddPageWithDefaultRunNavigate('http://www.roz.com/') |
+ return ps |
+ |
+ |
+class SummaryGtestTestResults( |
+ gtest_test_results.GTestTestResults): |
+ |
+ def __init__(self): |
+ super(SummaryGtestTestResults, self).__init__( |
+ base_test_results_unittest.TestOutputStream()) |
+ self.output_data = self._output_stream.output_data |
+ |
+ |
+class GTestTestResultsTest( |
+ base_test_results_unittest.BaseTestResultsUnittest): |
+ |
+ def setUp(self): |
+ super(GTestTestResultsTest, self).setUp() |
+ self._mock_timer = simple_mock.MockTimer() |
+ self._real_gtest_time_time = gtest_test_results.time.time |
+ gtest_test_results.time.time = self._mock_timer.GetTime |
+ |
+ def testSingleSuccessPage(self): |
+ test_page_set = _MakePageSet() |
+ |
+ results = SummaryGtestTestResults() |
+ results.StartTest(test_page_set.pages[0]) |
+ self._mock_timer.SetTime(0.007) |
+ results.AddSuccess(test_page_set.pages[0]) |
+ |
+ results.PrintSummary() |
+ expected = ('[ RUN ] http://www.foo.com/\n' |
+ '[ OK ] http://www.foo.com/ (7 ms)\n' |
+ '[ PASSED ] 1 test.\n\n') |
+ self.assertEquals(expected, ''.join(results.output_data)) |
+ |
+ def testSingleFailedPage(self): |
+ test_page_set = _MakePageSet() |
+ |
+ results = SummaryGtestTestResults() |
+ results.StartTest(test_page_set.pages[0]) |
+ exception = self.CreateException() |
+ results.AddFailure(test_page_set.pages[0], exception) |
+ results.PrintSummary() |
+ exception_trace = ''.join(traceback.format_exception(*exception)) |
+ expected = ('[ RUN ] http://www.foo.com/\n' |
+ '%s\n' |
+ '[ FAILED ] http://www.foo.com/ (0 ms)\n' |
+ '[ PASSED ] 0 tests.\n' |
+ '[ FAILED ] 1 test, listed below:\n' |
+ '[ FAILED ] http://www.foo.com/\n\n' |
+ '1 FAILED TEST\n\n' % exception_trace) |
+ self.assertEquals(expected, ''.join(results.output_data)) |
+ |
+ def testSingleErrorPage(self): |
+ test_page_set = _MakePageSet() |
+ results = SummaryGtestTestResults() |
+ results.StartTest(test_page_set.pages[0]) |
+ exception = self.CreateException() |
+ results.AddError(test_page_set.pages[0], exception) |
+ results.PrintSummary() |
+ exception_trace = ''.join(traceback.format_exception(*exception)) |
+ expected = ('[ RUN ] http://www.foo.com/\n' |
+ '%s\n' |
+ '[ FAILED ] http://www.foo.com/ (0 ms)\n' |
+ '[ PASSED ] 0 tests.\n' |
+ '[ FAILED ] 1 test, listed below:\n' |
+ '[ FAILED ] http://www.foo.com/\n\n' |
+ '1 FAILED TEST\n\n' % exception_trace) |
+ self.assertEquals(expected, ''.join(results.output_data)) |
+ |
+ def testPassAndFailedPages(self): |
+ test_page_set = _MakePageSet() |
+ results = SummaryGtestTestResults() |
+ exception = self.CreateException() |
+ |
+ results.StartTest(test_page_set.pages[0]) |
+ self._mock_timer.SetTime(0.007) |
+ results.AddSuccess(test_page_set.pages[0]) |
+ |
+ results.StartTest(test_page_set.pages[1]) |
+ self._mock_timer.SetTime(0.009) |
+ results.AddError(test_page_set.pages[1], exception) |
+ |
+ results.StartTest(test_page_set.pages[2]) |
+ self._mock_timer.SetTime(0.015) |
+ results.AddFailure(test_page_set.pages[2], exception) |
+ |
+ results.StartTest(test_page_set.pages[3]) |
+ self._mock_timer.SetTime(0.020) |
+ results.AddSuccess(test_page_set.pages[3]) |
+ |
+ results.PrintSummary() |
+ exception_trace = ''.join(traceback.format_exception(*exception)) |
+ expected = ('[ RUN ] http://www.foo.com/\n' |
+ '[ OK ] http://www.foo.com/ (7 ms)\n' |
+ '[ RUN ] http://www.bar.com/\n' |
+ '%s\n' |
+ '[ FAILED ] http://www.bar.com/ (2 ms)\n' |
+ '[ RUN ] http://www.baz.com/\n' |
+ '%s\n' |
+ '[ FAILED ] http://www.baz.com/ (6 ms)\n' |
+ '[ RUN ] http://www.roz.com/\n' |
+ '[ OK ] http://www.roz.com/ (5 ms)\n' |
+ '[ PASSED ] 2 tests.\n' |
+ '[ FAILED ] 2 tests, listed below:\n' |
+ '[ FAILED ] http://www.bar.com/\n' |
+ '[ FAILED ] http://www.baz.com/\n\n' |
+ '2 FAILED TESTS\n\n' % (exception_trace, exception_trace)) |
+ self.assertEquals(expected, ''.join(results.output_data)) |
+ |
+ def tearDown(self): |
+ gtest_test_results.time.time = self._real_gtest_time_time |