1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-01 13:09:50 +00:00

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>
This commit is contained in:
Yeoh Ee Peng
2018-10-18 17:11:05 +08:00
committed by Richard Purdie
parent 52fba04068
commit b3b337adb3
+29 -41
View File
@@ -61,40 +61,43 @@ class OETestResult(_TestResult):
else: else:
msg = "%s - FAIL - Required tests failed" % component msg = "%s - FAIL - Required tests failed" % component
skipped = len(self.skipped) skipped = len(self.skipped)
if skipped: if skipped:
msg += " (skipped=%d)" % skipped msg += " (skipped=%d)" % skipped
self.tc.logger.info(msg) self.tc.logger.info(msg)
def _getDetailsNotPassed(self, case, type, desc): def _getTestResultDetails(self, case):
found = False result_types = {'failures': 'FAILED', 'errors': 'ERROR', 'skipped': 'SKIPPED',
'expectedFailures': 'EXPECTEDFAIL', 'successes': 'PASSED'}
for (scase, msg) in getattr(self, type): for rtype in result_types:
if case.id() == scase.id(): found = False
found = True for (scase, msg) in getattr(self, rtype):
break if case.id() == scase.id():
scase_str = str(scase.id())
# When fails at module or class level the class name is passed as string
# so figure out to see if match
m = re.search("^setUpModule \((?P<module_name>.*)\)$", scase_str)
if m:
if case.__class__.__module__ == m.group('module_name'):
found = True found = True
break break
scase_str = str(scase.id())
m = re.search("^setUpClass \((?P<class_name>.*)\)$", scase_str) # When fails at module or class level the class name is passed as string
if m: # so figure out to see if match
class_name = "%s.%s" % (case.__class__.__module__, m = re.search("^setUpModule \((?P<module_name>.*)\)$", scase_str)
case.__class__.__name__) if m:
if case.__class__.__module__ == m.group('module_name'):
found = True
break
if class_name == m.group('class_name'): m = re.search("^setUpClass \((?P<class_name>.*)\)$", scase_str)
found = True if m:
break class_name = "%s.%s" % (case.__class__.__module__,
case.__class__.__name__)
if found: if class_name == m.group('class_name'):
return (found, msg) found = True
break
return (found, None) if found:
return result_types[rtype], msg
return 'UNKNOWN', None
def addSuccess(self, test): def addSuccess(self, test):
#Added so we can keep track of successes too #Added so we can keep track of successes too
@@ -106,17 +109,7 @@ class OETestResult(_TestResult):
for case_name in self.tc._registry['cases']: for case_name in self.tc._registry['cases']:
case = self.tc._registry['cases'][case_name] case = self.tc._registry['cases'][case_name]
result_types = ['failures', 'errors', 'skipped', 'expectedFailures', 'successes'] (status, log) = self._getTestResultDetails(case)
result_desc = ['FAILED', 'ERROR', 'SKIPPED', 'EXPECTEDFAIL', 'PASSED']
fail = False
desc = None
for idx, name in enumerate(result_types):
(fail, msg) = self._getDetailsNotPassed(case, result_types[idx],
result_desc[idx])
if fail:
desc = result_desc[idx]
break
oeid = -1 oeid = -1
if hasattr(case, 'decorators'): if hasattr(case, 'decorators'):
@@ -124,12 +117,7 @@ class OETestResult(_TestResult):
if hasattr(d, 'oeid'): if hasattr(d, 'oeid'):
oeid = d.oeid oeid = d.oeid
if fail: self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(), oeid, status))
self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(),
oeid, desc))
else:
self.tc.logger.info("RESULTS - %s - Testcase %s: %s" % (case.id(),
oeid, 'UNKNOWN'))
class OEListTestsResult(object): class OEListTestsResult(object):
def wasSuccessful(self): def wasSuccessful(self):