From 2c93cb3097cd21e054345c213febc3845e491c31 Mon Sep 17 00:00:00 2001 From: Jason Morcos Date: Sun, 2 Aug 2026 10:13:56 -0700 Subject: [PATCH] test: make worker cleanup checks deterministic --- tests/test_worker_cleanup.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tests/test_worker_cleanup.py b/tests/test_worker_cleanup.py index 080c5e4..995fd59 100644 --- a/tests/test_worker_cleanup.py +++ b/tests/test_worker_cleanup.py @@ -23,21 +23,29 @@ class _Descriptor: return None +class _ObservedEvent(threading.Event): + def __init__(self): + super().__init__() + self.waiting = threading.Event() + + def wait(self, timeout=None): + self.waiting.set() + return super().wait(timeout) + + def _assert_worker_stops(target, name: str): - stop = threading.Event() - entered = threading.Event() + stop = _ObservedEvent() errors: list[str] = [] def run(): - entered.set() try: target(stop) except Exception as error: # noqa: BLE001 # pragma: no cover errors.append(type(error).__name__) - worker = threading.Thread(target=run, name=name) + worker = threading.Thread(target=run, name=name, daemon=True) worker.start() - assert entered.wait(0.5), f"{name} did not enter its worker" + assert stop.waiting.wait(0.5), f"{name} did not enter an interruptible wait" stop.set() worker.join(0.5) assert not worker.is_alive(), f"{name} did not stop"