pathlib: fix symlinked directories not followed during collection

This commit is contained in:
Ran Benita 2020-10-31 13:55:02 +02:00
parent a7e38c5c61
commit 6cdae8ed40
3 changed files with 12 additions and 1 deletions

View File

@ -0,0 +1 @@
Fixed symlinked directories not being followed during collection. Regressed in pytest 6.1.0.

View File

@ -558,7 +558,7 @@ def visit(
entries = sorted(os.scandir(path), key=lambda entry: entry.name) entries = sorted(os.scandir(path), key=lambda entry: entry.name)
yield from entries yield from entries
for entry in entries: for entry in entries:
if entry.is_dir(follow_symlinks=False) and recurse(entry): if entry.is_dir() and recurse(entry):
yield from visit(entry.path, recurse) yield from visit(entry.path, recurse)

View File

@ -9,6 +9,7 @@ from _pytest.config import ExitCode
from _pytest.main import _in_venv from _pytest.main import _in_venv
from _pytest.main import Session from _pytest.main import Session
from _pytest.pathlib import symlink_or_skip from _pytest.pathlib import symlink_or_skip
from _pytest.pytester import Pytester
from _pytest.pytester import Testdir from _pytest.pytester import Testdir
@ -1178,6 +1179,15 @@ def test_collect_symlink_out_of_tree(testdir):
assert result.ret == 0 assert result.ret == 0
def test_collect_symlink_dir(pytester: Pytester) -> None:
"""A symlinked directory is collected."""
dir = pytester.mkdir("dir")
dir.joinpath("test_it.py").write_text("def test_it(): pass", "utf-8")
pytester.path.joinpath("symlink_dir").symlink_to(dir)
result = pytester.runpytest()
result.assert_outcomes(passed=2)
def test_collectignore_via_conftest(testdir): def test_collectignore_via_conftest(testdir):
"""collect_ignore in parent conftest skips importing child (issue #4592).""" """collect_ignore in parent conftest skips importing child (issue #4592)."""
tests = testdir.mkpydir("tests") tests = testdir.mkpydir("tests")