From 8cf0bbdf75f17fabfb51aa30741f5de8fc64f67a Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Sat, 31 Oct 2020 14:46:50 +0200 Subject: [PATCH] Merge pull request #7982 from bluetech/symlink-collect pathlib: fix symlinked directories not followed during collection (cherry picked from commit a14a229d1bb9a7fe75799caa974b2cfb8f02f8b3) Changed pytester -> testdir. --- changelog/7981.bugfix.rst | 1 + src/_pytest/pathlib.py | 2 +- testing/test_collection.py | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 changelog/7981.bugfix.rst 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")