fix #4135 - handle symlinks in tmp path cleanup

This commit is contained in:
Ronny Pfannschmidt 2018-10-14 21:20:34 +02:00
parent 0be84cd68b
commit 1dfa303b1e
3 changed files with 12 additions and 1 deletions

View File

@ -0,0 +1 @@
pathlib based tmpdir cleanup now correctly handles symlinks in the folder.

View File

@ -173,6 +173,8 @@ def delete_a_numbered_dir(path):
def ensure_deletable(path, consider_lock_dead_if_created_before): def ensure_deletable(path, consider_lock_dead_if_created_before):
"""checks if a lock exists and breaks it if its considered dead""" """checks if a lock exists and breaks it if its considered dead"""
if path.is_symlink():
return False
lock = get_lock_path(path) lock = get_lock_path(path)
if not lock.exists(): if not lock.exists():
return True return True

View File

@ -232,7 +232,7 @@ class TestNumberedDir(object):
assert not lock.exists() assert not lock.exists()
def test_cleanup_keep(self, tmp_path): def _do_cleanup(self, tmp_path):
self.test_make(tmp_path) self.test_make(tmp_path)
from _pytest.pathlib import cleanup_numbered_dir from _pytest.pathlib import cleanup_numbered_dir
@ -242,6 +242,9 @@ class TestNumberedDir(object):
keep=2, keep=2,
consider_lock_dead_if_created_before=0, consider_lock_dead_if_created_before=0,
) )
def test_cleanup_keep(self, tmp_path):
self._do_cleanup(tmp_path)
a, b = tmp_path.iterdir() a, b = tmp_path.iterdir()
print(a, b) print(a, b)
@ -275,3 +278,8 @@ class TestNumberedDir(object):
rmtree(adir, force=True) rmtree(adir, force=True)
assert not adir.exists() assert not adir.exists()
def test_cleanup_symlink(self, tmp_path):
the_symlink = tmp_path / (self.PREFIX + "current")
the_symlink.symlink_to(tmp_path / (self.PREFIX + "5"))
self._do_cleanup(tmp_path)