summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorYeoh Ee Peng <ee.peng.yeoh@intel.com>2018-10-18 17:11:05 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-12-16 14:31:27 +0000
commitb3b337adb388d3261a48f4e2e82454013c56ccb8 (patch)
treeb6b3cdc050385007376a0e997b9d1d17a7ebc22b /meta
parent52fba040681820ab036c091acadfbecf58357297 (diff)
downloadpoky-b3b337adb388d3261a48f4e2e82454013c56ccb8.tar.gz
oeqa/core/runner: refactor for OEQA to write json testresult
Refactor the original _getDetailsNotPassed method to return testresult details (test status and log), which will be reused by future OEQA code to write json testresult. Take the opportunity to consolidate and simplify the logic used to gather test status and log within the TestResult instance. (From OE-Core rev: 79ee7d1c371a86edeb61c99679985118da657e5d) (From OE-Core rev: bc444181f9658423856621b2f2c60364642ae5b1) Signed-off-by: Yeoh Ee Peng <ee.peng.yeoh@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/lib/oeqa/core/runner.py70
1 files changed, 29 insertions, 41 deletions
diff --git a/meta/lib/oeqa/core/runner.py b/meta/lib/oeqa/core/runner.py
index 429c216a69..a7b7463388 100644
--- a/meta/lib/oeqa/core/runner.py
+++ b/meta/lib/oeqa/core/runner.py
@@ -61,40 +61,43 @@ class OETestResult(_TestResult):
61 else: 61 else:
62 msg = "%s - FAIL - Required tests failed" % component 62 msg = "%s - FAIL - Required tests failed" % component
63 skipped = len(self.skipped) 63 skipped = len(self.skipped)
64 if skipped: 64 if skipped:
65 msg += " (skipped=%d)" % skipped 65 msg += " (skipped=%d)" % skipped
66 self.tc.logger.info(msg) 66 self.tc.logger.info(msg)
67 67
68 def _getDetailsNotPassed(self, case, type, desc): 68 def _getTestResultDetails(self, case):
69 found = False 69 result_types = {'failures': 'FAILED', 'errors': 'ERROR', 'skipped': 'SKIPPED',
70 'expectedFailures': 'EXPECTEDFAIL', 'successes': 'PASSED'}
70 71
71 for (scase, msg) in getattr(self, type): 72 for rtype in result_types:
72 if case.id() == scase.id(): 73 found = False
73 found = True 74 for (scase, msg) in getattr(self, rtype):
74 break 75 if case.id() == scase.id():
75 scase_str = str(scase.id())
76
77 # When fails at module or class level the class name is passed as string
78 # so figure out to see if match
79 m = re.search("^setUpModule \((?P<module_name>.*)\)$", scase_str)
80 if m:
81 if case.__class__.__module__ == m.group('module_name'):
82 found = True 76 found = True
83 break 77 break
78 scase_str = str(scase.id())
84 79
85 m = re.search("^setUpClass \((?P<class_name>.*)\)$", scase_str) 80 # When fails at module or class level the class name is passed as string
86 if m: 81 # so figure out to see if match
87 class_name = "%s.%s" % (case.__class__.__module__, 82 m = re.search("^setUpModule \((?P<module_name>.*)\)$", scase_str)
88 case.__class__.__name__) 83 if m:
84 if case.__class__.__module__ == m.group('module_name'):
85 found = True
86 break
89 87
90 if class_name == m.group('class_name'): 88 m = re.search("^setUpClass \((?P<class_name>.*)\)$", scase_str)
91 found = True 89 if m:
92 break 90 class_name = "%s.%s" % (case.__class__.__module__,
91 case.__class__.__name__)
92
93 if class_name == m.group('class_name'):
94 found = True
95 break
93 96
94 if found: 97 if found:
95 return (found, msg) 98 return result_types[rtype], msg
96 99
97 return (found, None) 100 return 'UNKNOWN', None
98 101
99 def addSuccess(self, test): 102 def addSuccess(self, test):
100 #Added so we can keep track of successes too 103 #Added so we can keep track of successes too
@@ -106,17 +109,7 @@ class OETestResult(_TestResult):
106 for case_name in self.tc._registry['cases']: 109 for case_name in self.tc._registry['cases']:
107 case = self.tc._registry['cases'][case_name] 110 case = self.tc._registry['cases'][case_name]
108 111
109 result_types = ['failures', 'errors', 'skipped', 'expectedFailures', 'successes'] 112 (status, log) = self._getTestResultDetails(case)
110 result_desc = ['FAILED', 'ERROR', 'SKIPPED', 'EXPECTEDFAIL', 'PASSED']
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 113
121 oeid = -1 114 oeid = -1
122 if hasattr(case, 'decorators'): 115 if hasattr(case, 'decorators'):
@@ -124,12 +117,7 @@ class OETestResult(_TestResult):
124 if hasattr(d, 'oeid'): 117 if hasattr(d, 'oeid'):
125 oeid = d.oeid 118 oeid = d.oeid
126 119
127 if fail: 120 self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(), oeid, status))
128 self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(),
129 oeid, desc))
130 else:
131 self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(),
132 oeid, 'UNKNOWN'))
133 121
134class OEListTestsResult(object): 122class OEListTestsResult(object):
135 def wasSuccessful(self): 123 def wasSuccessful(self):