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 Philipp Loose
Pieter Mulder Pieter Mulder
Piotr Banaszkiewicz Piotr Banaszkiewicz
Piotr Helm
Prashant Anand Prashant Anand
Pulkit Goyal Pulkit Goyal
Punyashloka Biswal 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: try:
p = make_numbered_dir(root, prefix) p = make_numbered_dir(root, prefix)
lock_path = create_cleanup_lock(p) lock_path = create_cleanup_lock(p)
register_cleanup_lock_removal(lock_path) register_cleanup_lock_removal(lock_path)
except Exception as exc: except Exception as exc:
e = exc e = exc
else: else:
consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout consider_lock_dead_if_created_before = p.stat().st_mtime - lock_timeout
cleanup_numbered_dir( # Register a cleanup for program exit
root=root, atexit.register(
prefix=prefix, cleanup_numbered_dir,
keep=keep, root,
consider_lock_dead_if_created_before=consider_lock_dead_if_created_before, prefix,
keep,
consider_lock_dead_if_created_before,
) )
return p return p
assert e is not None assert e is not None