@@ -241,6 +241,28 @@ def test_testpaths_ini(self, testdir, monkeypatch):
241241 items , reprec = testdir .inline_genitems ()
242242 assert [x .name for x in items ] == ["test_%s" % dirname ]
243243
244+ @pytest .mark .parametrize ("absolute" , [True , False ])
245+ def test_recursive_symlinks (self , testdir , absolute ):
246+ """Make sure recursive symlinks won't cause multiple collection of the same file."""
247+ tmpdir = testdir .tmpdir
248+ directory = tmpdir .mkdir ("dir" )
249+ directory .ensure ("test_recursive.py" ).write ("def test_recursive(): pass" )
250+ symlink_or_skip (str (directory ) if absolute else "." , "dir/link" )
251+
252+ items , _ = testdir .inline_genitems ()
253+ assert len (items ) == 1
254+
255+ def test_multiple_recursive_symlinks (self , testdir ):
256+ """Symlink points to recursive symlink. Should be resolved to the very end."""
257+ tmpdir = testdir .tmpdir
258+ directory = tmpdir .mkdir ("dir" )
259+ directory .ensure ("test_recursive.py" ).write ("def test_recursive(): pass" )
260+ symlink_or_skip ("." , "dir/link" )
261+ symlink_or_skip ("link" , "dir/link2" )
262+
263+ items , _ = testdir .inline_genitems ()
264+ assert len (items ) == 1
265+
244266
245267class TestCollectPluginHookRelay :
246268 def test_pytest_collect_file (self , testdir ):
0 commit comments