fixup! Fix regression with --lf and non-selected failures
This commit is contained in:
parent
bf3b26b3f7
commit
ceb4f3f701
|
@ -0,0 +1 @@
|
||||||
|
Fix regression with ``--lf`` not re-running all tests with known failures from non-selected tests.
|
|
@ -168,6 +168,7 @@ class LFPlugin(object):
|
||||||
if result is None:
|
if result is None:
|
||||||
rootpath = Path(self.config.rootdir)
|
rootpath = Path(self.config.rootdir)
|
||||||
result = {rootpath / nodeid.split("::")[0] for nodeid in self.lastfailed}
|
result = {rootpath / nodeid.split("::")[0] for nodeid in self.lastfailed}
|
||||||
|
result = {x for x in result if x.exists()}
|
||||||
self._last_failed_paths = result
|
self._last_failed_paths = result
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -176,17 +177,13 @@ class LFPlugin(object):
|
||||||
Ignore this file path if we are in --lf mode and it is not in the list of
|
Ignore this file path if we are in --lf mode and it is not in the list of
|
||||||
previously failed files.
|
previously failed files.
|
||||||
"""
|
"""
|
||||||
if (
|
if self.active and self.config.getoption("lf") and path.isfile():
|
||||||
self.active
|
last_failed_paths = self.last_failed_paths()
|
||||||
and self._previously_failed_count
|
if last_failed_paths:
|
||||||
and self.config.getoption("lf")
|
skip_it = Path(path) not in self.last_failed_paths()
|
||||||
and path.isfile()
|
if skip_it:
|
||||||
and self.lastfailed
|
self._skipped_files += 1
|
||||||
):
|
return skip_it
|
||||||
skip_it = Path(path) not in self.last_failed_paths()
|
|
||||||
if skip_it:
|
|
||||||
self._skipped_files += 1
|
|
||||||
return skip_it
|
|
||||||
|
|
||||||
def pytest_report_collectionfinish(self):
|
def pytest_report_collectionfinish(self):
|
||||||
if self.active and self.config.getoption("verbose") >= 0:
|
if self.active and self.config.getoption("verbose") >= 0:
|
||||||
|
|
|
@ -832,7 +832,7 @@ class TestLastFailed(object):
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_lastfailed_with_unknown_failure(self, testdir):
|
def test_lastfailed_with_known_failures_not_being_selected(self, testdir):
|
||||||
testdir.makepyfile(
|
testdir.makepyfile(
|
||||||
**{
|
**{
|
||||||
"pkg1/test_1.py": """def test_1(): assert 0""",
|
"pkg1/test_1.py": """def test_1(): assert 0""",
|
||||||
|
@ -852,6 +852,28 @@ class TestLastFailed(object):
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Recreate file with known failure.
|
||||||
|
testdir.makepyfile(**{"pkg1/test_1.py": """def test_1(): assert 0"""})
|
||||||
|
result = testdir.runpytest("--lf")
|
||||||
|
result.stdout.fnmatch_lines(
|
||||||
|
[
|
||||||
|
"collected 1 item",
|
||||||
|
"run-last-failure: rerun previous 1 failure (skipped 1 file)",
|
||||||
|
"* 1 failed in *",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# Remove/rename test.
|
||||||
|
testdir.makepyfile(**{"pkg1/test_1.py": """def test_renamed(): assert 0"""})
|
||||||
|
result = testdir.runpytest("--lf")
|
||||||
|
result.stdout.fnmatch_lines(
|
||||||
|
[
|
||||||
|
"collected 1 item",
|
||||||
|
"run-last-failure: 1 known failures not in selected tests",
|
||||||
|
"* 1 failed in *",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TestNewFirst(object):
|
class TestNewFirst(object):
|
||||||
def test_newfirst_usecase(self, testdir):
|
def test_newfirst_usecase(self, testdir):
|
||||||
|
|
Loading…
Reference in New Issue