xfail and skipped tests are removed from the "last-failed" cache
This accommodates the case where a failing test is marked as skipped/failed later
This commit is contained in:
parent
22212c4d61
commit
eb1bd3449e
|
@ -117,7 +117,7 @@ class LFPlugin:
|
||||||
return "run-last-failure: %s" % mode
|
return "run-last-failure: %s" % mode
|
||||||
|
|
||||||
def pytest_runtest_logreport(self, report):
|
def pytest_runtest_logreport(self, report):
|
||||||
if report.passed and report.when == 'call':
|
if (report.when == 'call' and report.passed) or report.skipped:
|
||||||
self.lastfailed.pop(report.nodeid, None)
|
self.lastfailed.pop(report.nodeid, None)
|
||||||
elif report.failed:
|
elif report.failed:
|
||||||
self.lastfailed[report.nodeid] = True
|
self.lastfailed[report.nodeid] = True
|
||||||
|
|
|
@ -460,6 +460,28 @@ class TestLastFailed(object):
|
||||||
result.stdout.fnmatch_lines('*1 failed*')
|
result.stdout.fnmatch_lines('*1 failed*')
|
||||||
assert self.get_cached_last_failed(testdir) == ['test_xfail_strict_considered_failure.py::test']
|
assert self.get_cached_last_failed(testdir) == ['test_xfail_strict_considered_failure.py::test']
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('mark', ['mark.xfail', 'mark.skip'])
|
||||||
|
def test_failed_changed_to_xfail_or_skip(self, testdir, mark):
|
||||||
|
testdir.makepyfile('''
|
||||||
|
import pytest
|
||||||
|
def test():
|
||||||
|
assert 0
|
||||||
|
''')
|
||||||
|
result = testdir.runpytest()
|
||||||
|
assert self.get_cached_last_failed(testdir) == ['test_failed_changed_to_xfail_or_skip.py::test']
|
||||||
|
assert result.ret == 1
|
||||||
|
|
||||||
|
testdir.makepyfile('''
|
||||||
|
import pytest
|
||||||
|
@pytest.{mark}
|
||||||
|
def test():
|
||||||
|
assert 0
|
||||||
|
'''.format(mark=mark))
|
||||||
|
result = testdir.runpytest()
|
||||||
|
assert result.ret == 0
|
||||||
|
assert self.get_cached_last_failed(testdir) == []
|
||||||
|
assert result.ret == 0
|
||||||
|
|
||||||
def get_cached_last_failed(self, testdir):
|
def get_cached_last_failed(self, testdir):
|
||||||
config = testdir.parseconfigure()
|
config = testdir.parseconfigure()
|
||||||
return sorted(config.cache.get("cache/lastfailed", {}))
|
return sorted(config.cache.get("cache/lastfailed", {}))
|
||||||
|
|
Loading…
Reference in New Issue