diff --git a/changelog/7981.bugfix.rst b/changelog/7981.bugfix.rst new file mode 100644 index 000000000..0a254b5d4 --- /dev/null +++ b/changelog/7981.bugfix.rst @@ -0,0 +1 @@ +Fixed symlinked directories not being followed during collection. Regressed in pytest 6.1.0. diff --git a/src/_pytest/pathlib.py b/src/_pytest/pathlib.py index dda86d6be..6054a7c46 100644 --- a/src/_pytest/pathlib.py +++ b/src/_pytest/pathlib.py @@ -566,7 +566,7 @@ def visit( entries = sorted(os.scandir(path), key=lambda entry: entry.name) yield from 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) diff --git a/testing/test_collection.py b/testing/test_collection.py index 3e1b816b7..71908636b 100644 --- a/testing/test_collection.py +++ b/testing/test_collection.py @@ -1178,6 +1178,15 @@ def test_collect_symlink_out_of_tree(testdir): assert result.ret == 0 +def test_collect_symlink_dir(testdir: Testdir) -> None: + """A symlinked directory is collected.""" + dir = testdir.mkdir("dir") + dir.join("test_it.py").write("def test_it(): pass") + symlink_or_skip(dir, testdir.tmpdir.join("symlink_dir")) + result = testdir.runpytest() + result.assert_outcomes(passed=2) + + def test_collectignore_via_conftest(testdir): """collect_ignore in parent conftest skips importing child (issue #4592).""" tests = testdir.mkpydir("tests")