summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/core/runner.py
diff options
context:
space:
mode:
authorAníbal Limón <anibal.limon@linux.intel.com>2017-05-26 15:37:32 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-06-02 13:36:13 +0100
commitb4b9e22c40b7ce315d0286fe656581f81d965043 (patch)
tree9741e2f485ced305130ccd352151663cc6dc6cab /meta/lib/oeqa/core/runner.py
parentc7600278b6c39a311f822b1a7d39339bac3076c2 (diff)
downloadpoky-b4b9e22c40b7ce315d0286fe656581f81d965043.tar.gz
oeqa/core: Move OETestContext.log{Summary, Details} into OETestResult
Those methods are used to write in the log the results so it makes sense to have defined at OETestResult because is a format of the result itself. [YOCTO #11450] (From OE-Core rev: 33a783f59ed4e232f41f8b09dfa7955f2ddc2f80) Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/core/runner.py')
-rw-r--r--meta/lib/oeqa/core/runner.py88
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
5import time 5import time
6import unittest 6import unittest
7import logging 7import logging
8import re
8 9
9xmlEnabled = False 10xmlEnabled = False
10try: 11try:
@@ -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
47class OETestRunner(_TestRunner): 135class OETestRunner(_TestRunner):
48 streamLoggerClass = OEStreamLogger 136 streamLoggerClass = OEStreamLogger
49 137