From 8a959d830e8631f84401aeb5fd2e0ffa9bbfe3d7 Mon Sep 17 00:00:00 2001 From: Aarni Koskela Date: Tue, 24 Feb 2026 15:22:59 +0200 Subject: [PATCH] Do not wait forever for test server to start or stop --- tests/conftest.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index d076c3ab..132d1a15 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -268,7 +268,11 @@ class TestServer(Server): await self.startup() -def serve_in_thread(server: TestServer) -> typing.Iterator[TestServer]: +def serve_in_thread( + server: TestServer, + *, + timeout: float = 10.0, +) -> typing.Iterator[TestServer]: server_exception = None server_caught_exception = threading.Event() @@ -286,15 +290,21 @@ def serve_in_thread(server: TestServer) -> typing.Iterator[TestServer]: thread.start() try: - while not server.started: - if server_caught_exception.wait(1e-3): + start_time = time.time() + while True: + if server.started: + break + if server_caught_exception.wait(1e-3): # pragma: nocover raise RuntimeError( f"Server failed to start: {server_exception!r}", ) from server_exception + if time.time() - start_time > timeout: # pragma: nocover + raise TimeoutError("Server did not start in time") + time.sleep(1e-3) yield server finally: server.should_exit = True - thread.join() + thread.join(timeout=timeout) @pytest.fixture(scope="session")