1 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
10 class PageTestResults(unittest.TestResult):
12 super(PageTestResults, self).__init__()
16 def _exc_info_to_string(self, err, test):
17 if isinstance(test, unittest.TestCase):
18 return super(PageTestResults, self)._exc_info_to_string(err, test)
20 return ''.join(traceback.format_exception(*err))
22 def addSuccess(self, test):
23 self.successes.append(test)
25 def addSkip(self, test, reason): # Python 2.7 has this in unittest.TestResult
26 self.skipped.append((test, reason))
28 def StartTest(self, page):
29 self.startTest(page.display_name)
31 def StopTest(self, page):
32 self.stopTest(page.display_name)
34 def AddError(self, page, err):
35 self.addError(page.display_name, err)
37 def AddFailure(self, page, err):
38 self.addFailure(page.display_name, err)
40 def AddSuccess(self, page):
41 self.addSuccess(page.display_name)
43 def AddSkip(self, page, reason):
44 self.addSkip(page.display_name, reason)
46 def AddFailureMessage(self, page, message):
48 raise Exception(message)
50 self.AddFailure(page, sys.exc_info())
52 def AddErrorMessage(self, page, message):
54 raise Exception(message)
56 self.AddError(page, sys.exc_info())
58 def PrintSummary(self):
60 logging.warning('Failed pages:\n%s', '\n'.join(zip(*self.failures)[0]))
63 logging.warning('Errored pages:\n%s', '\n'.join(zip(*self.errors)[0]))
66 logging.warning('Skipped pages:\n%s', '\n'.join(zip(*self.skipped)[0]))