Bug 1349516 - Add support to pytest-mozlog for tests rerun using pytest-rerunfailures; r?ahal
MozReview-Commit-ID: GrFaW74EwXC
--- a/testing/mozbase/mozlog/mozlog/pytest_mozlog/plugin.py
+++ b/testing/mozbase/mozlog/mozlog/pytest_mozlog/plugin.py
@@ -76,17 +76,17 @@ class MozLog(object):
def pytest_runtest_logreport(self, report):
'''Called 3 times per test (setup, call, teardown), indicated by report.when'''
test = report.nodeid
status = expected = 'PASS'
message = stack = None
if hasattr(report, 'wasxfail'):
expected = 'FAIL'
- if report.failed:
+ if report.failed or report.outcome == 'rerun':
status = 'FAIL' if report.when == 'call' else 'ERROR'
if report.skipped:
status = 'SKIP' if not hasattr(report, 'wasxfail') else 'FAIL'
if report.longrepr is not None:
longrepr = report.longrepr
if isinstance(longrepr, basestring):
# When using pytest-xdist, longrepr is serialised as a str
message = stack = longrepr
@@ -105,13 +105,13 @@ class MozLog(object):
elif hasattr(longrepr, "__getitem__") and len(longrepr) == 3:
# For skips, longrepr is a tuple of (file, lineno, reason)
message = report.longrepr[-1]
else:
raise ValueError("Unable to convert longrepr to message:\ntype %s\nfields:" %
(longrepr.__class__, dir(longrepr)))
if status != expected or expected != 'PASS':
self.results[test] = (status, expected, message, stack)
- if report.when == 'teardown':
+ if report.outcome == 'rerun' or report.when == 'teardown':
defaults = ('PASS', 'PASS', None, None)
status, expected, message, stack = self.results.get(test, defaults)
self.logger.test_end(test=test, status=status, expected=expected,
message=message, stack=stack)