diff options
Diffstat (limited to 'meta/lib/oeqa/core/runner.py')
-rw-r--r-- | meta/lib/oeqa/core/runner.py | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/meta/lib/oeqa/core/runner.py b/meta/lib/oeqa/core/runner.py index 0b04e8d586..75058384ae 100644 --- a/meta/lib/oeqa/core/runner.py +++ b/meta/lib/oeqa/core/runner.py | |||
@@ -5,6 +5,7 @@ import os | |||
5 | import time | 5 | import time |
6 | import unittest | 6 | import unittest |
7 | import logging | 7 | import logging |
8 | import re | ||
8 | 9 | ||
9 | xmlEnabled = False | 10 | xmlEnabled = False |
10 | try: | 11 | try: |
@@ -44,6 +45,93 @@ class OETestResult(_TestResult): | |||
44 | self.tc._results['skipped'] = self.skipped | 45 | self.tc._results['skipped'] = self.skipped |
45 | self.tc._results['expectedFailures'] = self.expectedFailures | 46 | self.tc._results['expectedFailures'] = self.expectedFailures |
46 | 47 | ||
48 | def logSummary(self, component, context_msg=''): | ||
49 | elapsed_time = self.tc._run_end_time - self.tc._run_start_time | ||
50 | self.tc.logger.info("SUMMARY:") | ||
51 | self.tc.logger.info("%s (%s) - Ran %d test%s in %.3fs" % (component, | ||
52 | context_msg, self.testsRun, self.testsRun != 1 and "s" or "", | ||
53 | elapsed_time)) | ||
54 | |||
55 | if self.wasSuccessful(): | ||
56 | msg = "%s - OK - All required tests passed" % component | ||
57 | else: | ||
58 | msg = "%s - FAIL - Required tests failed" % component | ||
59 | skipped = len(self.tc._results['skipped']) | ||
60 | if skipped: | ||
61 | msg += " (skipped=%d)" % skipped | ||
62 | self.tc.logger.info(msg) | ||
63 | |||
64 | def _getDetailsNotPassed(self, case, type, desc): | ||
65 | found = False | ||
66 | |||
67 | for (scase, msg) in self.tc._results[type]: | ||
68 | # XXX: When XML reporting is enabled scase is | ||
69 | # xmlrunner.result._TestInfo instance instead of | ||
70 | # string. | ||
71 | if xmlEnabled: | ||
72 | if case.id() == scase.test_id: | ||
73 | found = True | ||
74 | break | ||
75 | scase_str = scase.test_id | ||
76 | else: | ||
77 | if case == scase: | ||
78 | found = True | ||
79 | break | ||
80 | scase_str = str(scase) | ||
81 | |||
82 | # When fails at module or class level the class name is passed as string | ||
83 | # so figure out to see if match | ||
84 | m = re.search("^setUpModule \((?P<module_name>.*)\)$", scase_str) | ||
85 | if m: | ||
86 | if case.__class__.__module__ == m.group('module_name'): | ||
87 | found = True | ||
88 | break | ||
89 | |||
90 | m = re.search("^setUpClass \((?P<class_name>.*)\)$", scase_str) | ||
91 | if m: | ||
92 | class_name = "%s.%s" % (case.__class__.__module__, | ||
93 | case.__class__.__name__) | ||
94 | |||
95 | if class_name == m.group('class_name'): | ||
96 | found = True | ||
97 | break | ||
98 | |||
99 | if found: | ||
100 | return (found, msg) | ||
101 | |||
102 | return (found, None) | ||
103 | |||
104 | def logDetails(self): | ||
105 | self.tc.logger.info("RESULTS:") | ||
106 | for case_name in self.tc._registry['cases']: | ||
107 | case = self.tc._registry['cases'][case_name] | ||
108 | |||
109 | result_types = ['failures', 'errors', 'skipped', 'expectedFailures'] | ||
110 | result_desc = ['FAILED', 'ERROR', 'SKIPPED', 'EXPECTEDFAIL'] | ||
111 | |||
112 | fail = False | ||
113 | desc = None | ||
114 | for idx, name in enumerate(result_types): | ||
115 | (fail, msg) = self._getDetailsNotPassed(case, result_types[idx], | ||
116 | result_desc[idx]) | ||
117 | if fail: | ||
118 | desc = result_desc[idx] | ||
119 | break | ||
120 | |||
121 | oeid = -1 | ||
122 | for d in case.decorators: | ||
123 | if hasattr(d, 'oeid'): | ||
124 | oeid = d.oeid | ||
125 | |||
126 | if fail: | ||
127 | self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(), | ||
128 | oeid, desc)) | ||
129 | if msg: | ||
130 | self.tc.logger.info(msg) | ||
131 | else: | ||
132 | self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(), | ||
133 | oeid, 'PASSED')) | ||
134 | |||
47 | class OETestRunner(_TestRunner): | 135 | class OETestRunner(_TestRunner): |
48 | streamLoggerClass = OEStreamLogger | 136 | streamLoggerClass = OEStreamLogger |
49 | 137 | ||