Skip to content

Commit

Permalink
Merge pull request pytest-dev#6910 from nicoddemus/resultlog-logreport
Browse files Browse the repository at this point in the history
Handle unknown stats in pytest_report_teststatus hook
  • Loading branch information
nicoddemus committed Mar 13, 2020
1 parent c9fd1bd commit 3267f64
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
1 change: 1 addition & 0 deletions changelog/6910.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix crash when plugins return an unknown stats while using the ``--reportlog`` option.
4 changes: 2 additions & 2 deletions src/_pytest/resultlog.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,10 @@ def pytest_runtest_logreport(self, report):
longrepr = ""
elif report.passed:
longrepr = ""
elif report.failed:
longrepr = str(report.longrepr)
elif report.skipped:
longrepr = str(report.longrepr[2])
else:
longrepr = str(report.longrepr)
self.log_outcome(report, code, longrepr)

def pytest_collectreport(self, report):
Expand Down
36 changes: 36 additions & 0 deletions testing/test_resultlog.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,42 @@ def test_no_resultlog_on_slaves(testdir):
assert resultlog_key not in config._store


def test_unknown_teststatus(testdir):
"""Ensure resultlog correctly handles unknown status from pytest_report_teststatus
Inspired on pytest-rerunfailures.
"""
testdir.makepyfile(
"""
def test():
assert 0
"""
)
testdir.makeconftest(
"""
import pytest
def pytest_report_teststatus(report):
if report.outcome == 'rerun':
return "rerun", "r", "RERUN"
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport():
res = yield
report = res.get_result()
if report.when == "call":
report.outcome = 'rerun'
"""
)
result = testdir.runpytest("--resultlog=result.log")
result.stdout.fnmatch_lines(
["test_unknown_teststatus.py r *[[]100%[]]", "* 1 rerun *"]
)

lines = testdir.tmpdir.join("result.log").readlines(cr=0)
assert lines[0] == "r test_unknown_teststatus.py::test"


def test_failure_issue380(testdir):
testdir.makeconftest(
"""
Expand Down

0 comments on commit 3267f64

Please sign in to comment.