From d76fa59b35edfffa91ce24e19c9f17f75f510546 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Fri, 28 Sep 2018 22:06:43 +0200 Subject: [PATCH] fix lock timeouts for good this time --- src/_pytest/tmpdir.py | 14 +++++++++----- testing/test_tmpdir.py | 14 +++++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/_pytest/tmpdir.py b/src/_pytest/tmpdir.py index c6a079f4e..b9bd12afc 100644 --- a/src/_pytest/tmpdir.py +++ b/src/_pytest/tmpdir.py @@ -20,6 +20,8 @@ import tempfile import itertools +LOCK_TIMEOUT = 60 * 60 * 3 + get_lock_path = operator.methodcaller("joinpath", ".lock") @@ -155,21 +157,21 @@ def cleanup_candidates(root, prefix, keep): def cleanup_numbered_dir(root, prefix, keep, consider_lock_dead_if_created_before): for path in cleanup_candidates(root, prefix, keep): try_cleanup(path, consider_lock_dead_if_created_before) - known_garbage = list(root.glob("garbage-*")) - for path in known_garbage: + for path in root.glob("garbage-*"): try_cleanup(path, consider_lock_dead_if_created_before) def make_numbered_dir_with_cleanup(root, prefix, keep, lock_timeout): + e = None for i in range(10): try: p = make_numbered_dir(root, prefix) lock_path = create_cleanup_lock(p) register_cleanup_lock_removal(lock_path) - except Exception: - raise + except Exception as e: + pass 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( root=root, prefix=prefix, @@ -177,6 +179,8 @@ def make_numbered_dir_with_cleanup(root, prefix, keep, lock_timeout): consider_lock_dead_if_created_before=consider_lock_dead_if_created_before, ) return p + assert e is not None + raise e @attr.s diff --git a/testing/test_tmpdir.py b/testing/test_tmpdir.py index 360614673..02687f6fc 100644 --- a/testing/test_tmpdir.py +++ b/testing/test_tmpdir.py @@ -239,7 +239,10 @@ class TestNumberedDir(object): from _pytest.tmpdir import cleanup_numbered_dir cleanup_numbered_dir( - root=tmp_path, prefix=self.PREFIX, keep=2, consider_lock_dead_after=0 + root=tmp_path, + prefix=self.PREFIX, + keep=2, + consider_lock_dead_if_created_before=0, ) a, b = tmp_path.iterdir() print(a, b) @@ -251,5 +254,10 @@ class TestNumberedDir(object): p = tmpdir.make_numbered_dir(root=tmp_path, prefix=self.PREFIX) tmpdir.create_cleanup_lock(p) - assert not tmpdir.ensure_deletable(p, p.stat().st_mtime + 1) - assert tmpdir.ensure_deletable(p, p.stat().st_mtime - 1) + + assert not tmpdir.ensure_deletable( + p, consider_lock_dead_if_created_before=p.stat().st_mtime - 1 + ) + assert tmpdir.ensure_deletable( + p, consider_lock_dead_if_created_before=p.stat().st_mtime + 1 + )