Replace cleanup_numbered_dir with atexit.register

This commit is contained in:
piotrhm 2020-03-20 15:38:55 +01:00 committed by Bruno Oliveira
parent c871d8b2b6
commit bde0ebcda9
3 changed files with 10 additions and 6 deletions

View File

@ -227,6 +227,7 @@ Pedro Algarvio
Philipp Loose
Pieter Mulder
Piotr Banaszkiewicz
Piotr Helm
Prashant Anand
Pulkit Goyal
Punyashloka Biswal

View File

@ -0,0 +1 @@
Fix issue where directories from tmpdir are not removed properly when multiple instances of pytest are running in parallel.

View File

@ -333,16 +333,18 @@ def make_numbered_dir_with_cleanup(
try:
p = make_numbered_dir(root, prefix)
lock_path = create_cleanup_lock(p)
register_cleanup_lock_removal(lock_path)
register_cleanup_lock_removal(lock_path)
except Exception as exc:
e = exc
else:
consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
cleanup_numbered_dir(
root=root,
prefix=prefix,
keep=keep,
consider_lock_dead_if_created_before=consider_lock_dead_if_created_before,
# Register a cleanup for program exit
atexit.register(
cleanup_numbered_dir,
root,
prefix,
keep,
consider_lock_dead_if_created_before,
)
return p
assert e is not None