| Index: tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py
|
| diff --git a/tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py b/tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py
|
| index 88b770d7a31a239050af3ddbe731dc9adf01501b..6d4d8e58af1865834ab8de7c34347c09e1002888 100644
|
| --- a/tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py
|
| +++ b/tools/telemetry/telemetry/page/page_run_end_to_end_unittest.py
|
| @@ -5,8 +5,6 @@
|
| import os
|
| import unittest
|
| import shutil
|
| -import sys
|
| -import StringIO
|
| import tempfile
|
|
|
| from telemetry import benchmark
|
| @@ -24,7 +22,7 @@
|
| from telemetry.unittest_util import options_for_unittests
|
| from telemetry.unittest_util import system_stub
|
| from telemetry.user_story import user_story_runner
|
| -from telemetry.util import exception_formatter
|
| +from telemetry.util import exception_formatter as exception_formatter_module
|
| from unittest_data.page_sets import example_domain
|
|
|
|
|
| @@ -75,14 +73,11 @@
|
| return [run for run in results.all_page_runs if run.ok or run.skipped]
|
|
|
|
|
| -def CaptureStderr(func, output_buffer):
|
| - def wrapper(*args, **kwargs):
|
| - original_stderr, sys.stderr = sys.stderr, output_buffer
|
| - try:
|
| - return func(*args, **kwargs)
|
| - finally:
|
| - sys.stderr = original_stderr
|
| - return wrapper
|
| +class FakeExceptionFormatterModule(object):
|
| + @staticmethod
|
| + def PrintFormattedException(
|
| + exception_class=None, exception=None, tb=None, msg=None):
|
| + pass
|
|
|
|
|
| # TODO: remove test cases that use real browsers and replace with a
|
| @@ -93,22 +88,14 @@
|
|
|
| def setUp(self):
|
| self._user_story_runner_logging_stub = None
|
| - self._formatted_exception_buffer = StringIO.StringIO()
|
| - self._original_formatter = exception_formatter.PrintFormattedException
|
| -
|
| - def CaptureFormattedException(self):
|
| - exception_formatter.PrintFormattedException = CaptureStderr(
|
| - exception_formatter.PrintFormattedException,
|
| - self._formatted_exception_buffer)
|
| +
|
| + def SuppressExceptionFormatting(self):
|
| + user_story_runner.exception_formatter = FakeExceptionFormatterModule
|
| self._user_story_runner_logging_stub = system_stub.Override(
|
| - user_story_runner, ['logging'])
|
| -
|
| - @property
|
| - def formatted_exception(self):
|
| - return self._formatted_exception_buffer.getvalue()
|
| + user_story_runner, ['logging'])
|
|
|
| def RestoreExceptionFormatter(self):
|
| - exception_formatter.PrintFormattedException = self._original_formatter
|
| + user_story_runner.exception_formatter = exception_formatter_module
|
| if self._user_story_runner_logging_stub:
|
| self._user_story_runner_logging_stub.Restore()
|
| self._user_story_runner_logging_stub = None
|
| @@ -117,7 +104,7 @@
|
| self.RestoreExceptionFormatter()
|
|
|
| def testRaiseBrowserGoneExceptionFromRestartBrowserBeforeEachPage(self):
|
| - self.CaptureFormattedException()
|
| + self.SuppressExceptionFormatting()
|
| ps = page_set.PageSet()
|
| expectations = test_expectations.TestExpectations()
|
| ps.pages.append(page_module.Page(
|
| @@ -151,10 +138,9 @@
|
| self.assertEquals(2, test.run_count)
|
| self.assertEquals(1, len(GetSuccessfulPageRuns(results)))
|
| self.assertEquals(1, len(results.failures))
|
| - self.assertEquals('', self.formatted_exception)
|
|
|
| def testNeedsBrowserRestartAfterEachPage(self):
|
| - self.CaptureFormattedException()
|
| + self.SuppressExceptionFormatting()
|
| ps = page_set.PageSet()
|
| expectations = test_expectations.TestExpectations()
|
| ps.pages.append(page_module.Page(
|
| @@ -183,10 +169,9 @@
|
| user_story_runner.Run(test, ps, expectations, options, results)
|
| self.assertEquals(2, len(GetSuccessfulPageRuns(results)))
|
| self.assertEquals(2, test.browser_starts)
|
| - self.assertEquals('', self.formatted_exception)
|
|
|
| def testHandlingOfCrashedTabWithExpectedFailure(self):
|
| - self.CaptureFormattedException()
|
| + self.SuppressExceptionFormatting()
|
| ps = page_set.PageSet()
|
| expectations = test_expectations.TestExpectations()
|
| expectations.Fail('chrome://crash')
|
| @@ -201,18 +186,14 @@
|
| user_story_runner.Run(DummyTest(), ps, expectations, options, results)
|
| self.assertEquals(1, len(GetSuccessfulPageRuns(results)))
|
| self.assertEquals(0, len(results.failures))
|
| - self.assertIn('DevtoolsTargetCrashException', self.formatted_exception)
|
| - # Check that only one exception is raised.
|
| - self.assertEquals(1, self.formatted_exception.count('Traceback'))
|
|
|
| def testCredentialsWhenLoginFails(self):
|
| - self.CaptureFormattedException()
|
| + self.SuppressExceptionFormatting()
|
| credentials_backend = StubCredentialsBackend(login_return_value=False)
|
| did_run = self.runCredentialsTest(credentials_backend)
|
| assert credentials_backend.did_get_login == True
|
| assert credentials_backend.did_get_login_no_longer_needed == False
|
| assert did_run == False
|
| - self.assertEquals('', self.formatted_exception)
|
|
|
| def testCredentialsWhenLoginSucceeds(self):
|
| credentials_backend = StubCredentialsBackend(login_return_value=True)
|
| @@ -503,6 +484,7 @@
|
| shutil.rmtree(options.output_dir)
|
|
|
| def _RunPageTestThatRaisesAppCrashException(self, test, max_failures):
|
| + self.SuppressExceptionFormatting()
|
| class TestPage(page_module.Page):
|
| def RunNavigateSteps(self, _):
|
| raise exceptions.AppCrashException
|
| @@ -522,7 +504,6 @@
|
| return results
|
|
|
| def testSingleTabMeansCrashWillCauseFailureValue(self):
|
| - self.CaptureFormattedException()
|
| class SingleTabTest(page_test.PageTest):
|
| # Test is not multi-tab because it does not override TabForPage.
|
| def ValidateAndMeasurePage(self, *_):
|
| @@ -532,11 +513,9 @@
|
| results = self._RunPageTestThatRaisesAppCrashException(test, max_failures=1)
|
| self.assertEquals([], GetSuccessfulPageRuns(results))
|
| self.assertEquals(2, len(results.failures)) # max_failures + 1
|
| - self.assertEquals('', self.formatted_exception)
|
|
|
| @decorators.Enabled('has tabs')
|
| def testMultipleTabsMeansCrashRaises(self):
|
| - self.CaptureFormattedException()
|
| class MultipleTabsTest(page_test.PageTest):
|
| # Test *is* multi-tab because it overrides TabForPage.
|
| def TabForPage(self, page, browser):
|
| @@ -547,9 +526,6 @@
|
| test = MultipleTabsTest()
|
| with self.assertRaises(page_test.MultiTabTestAppCrashError):
|
| self._RunPageTestThatRaisesAppCrashException(test, max_failures=1)
|
| - self.assertIn('AppCrashException', self.formatted_exception)
|
| - # Check that only one exception is raised.
|
| - self.assertEquals(1, self.formatted_exception.count('Traceback'))
|
|
|
| def testWebPageReplay(self):
|
| ps = example_domain.ExampleDomainPageSet()
|
|
|