- add sources.
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / page / page_test_results.py
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.
4
5 import logging
6 import sys
7 import traceback
8 import unittest
9
10 class PageTestResults(unittest.TestResult):
11   def __init__(self):
12     super(PageTestResults, self).__init__()
13     self.successes = []
14     self.skipped = []
15
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)
19     else:
20       return ''.join(traceback.format_exception(*err))
21
22   def addSuccess(self, test):
23     self.successes.append(test)
24
25   def addSkip(self, test, reason):  # Python 2.7 has this in unittest.TestResult
26     self.skipped.append((test, reason))
27
28   def StartTest(self, page):
29     self.startTest(page.display_name)
30
31   def StopTest(self, page):
32     self.stopTest(page.display_name)
33
34   def AddError(self, page, err):
35     self.addError(page.display_name, err)
36
37   def AddFailure(self, page, err):
38     self.addFailure(page.display_name, err)
39
40   def AddSuccess(self, page):
41     self.addSuccess(page.display_name)
42
43   def AddSkip(self, page, reason):
44     self.addSkip(page.display_name, reason)
45
46   def AddFailureMessage(self, page, message):
47     try:
48       raise Exception(message)
49     except Exception:
50       self.AddFailure(page, sys.exc_info())
51
52   def AddErrorMessage(self, page, message):
53     try:
54       raise Exception(message)
55     except Exception:
56       self.AddError(page, sys.exc_info())
57
58   def PrintSummary(self):
59     if self.failures:
60       logging.warning('Failed pages:\n%s', '\n'.join(zip(*self.failures)[0]))
61
62     if self.errors:
63       logging.warning('Errored pages:\n%s', '\n'.join(zip(*self.errors)[0]))
64
65     if self.skipped:
66       logging.warning('Skipped pages:\n%s', '\n'.join(zip(*self.skipped)[0]))