From 3a4bc61301875644bf4b0c2582594dde56000ecf Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 2 Feb 2025 16:42:32 -0800 Subject: [PATCH 1/2] Run test webserver within main async loop --- src/reactpy/testing/backend.py | 8 ++++---- tests/test_asgi/test_standalone.py | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/reactpy/testing/backend.py b/src/reactpy/testing/backend.py index 439513755..aa3cc1d6b 100644 --- a/src/reactpy/testing/backend.py +++ b/src/reactpy/testing/backend.py @@ -121,7 +121,8 @@ async def __aenter__(self) -> BackendFixture: self.log_records = self._exit_stack.enter_context(capture_reactpy_logs()) # Wait for the server to start - Thread(target=self.webserver.run, daemon=True).start() + self.webserver.config.setup_event_loop() + self.webserver_task = asyncio.create_task(self.webserver.serve()) await asyncio.sleep(1) return self @@ -139,9 +140,8 @@ async def __aexit__( msg = "Unexpected logged exception" raise LogAssertionError(msg) from logged_errors[0] - await asyncio.wait_for( - self.webserver.shutdown(), timeout=90 if GITHUB_ACTIONS else 5 - ) + await self.webserver.shutdown() + self.webserver_task.cancel() async def restart(self) -> None: """Restart the server""" diff --git a/tests/test_asgi/test_standalone.py b/tests/test_asgi/test_standalone.py index 47b0ae492..954a33470 100644 --- a/tests/test_asgi/test_standalone.py +++ b/tests/test_asgi/test_standalone.py @@ -1,3 +1,4 @@ +import asyncio from collections.abc import MutableMapping import pytest @@ -155,8 +156,8 @@ def sample(): async with DisplayFixture(backend=server, driver=page) as new_display: await new_display.show(sample) url = f"http://{server.host}:{server.port}" - response = request( - "HEAD", url, timeout=REACTPY_TESTS_DEFAULT_TIMEOUT.current + response = await asyncio.to_thread( + request, "HEAD", url, timeout=REACTPY_TESTS_DEFAULT_TIMEOUT.current ) assert response.status_code == 200 assert response.headers["content-type"] == "text/html; charset=utf-8" From 7272247faea1cfeac1a48a8b21256e6e91d9d8ba Mon Sep 17 00:00:00 2001 From: Archmonger <16909269+Archmonger@users.noreply.github.com> Date: Sun, 2 Feb 2025 16:46:31 -0800 Subject: [PATCH 2/2] Fix lint --- src/reactpy/testing/backend.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/reactpy/testing/backend.py b/src/reactpy/testing/backend.py index aa3cc1d6b..94f85687c 100644 --- a/src/reactpy/testing/backend.py +++ b/src/reactpy/testing/backend.py @@ -3,7 +3,6 @@ import asyncio import logging from contextlib import AsyncExitStack -from threading import Thread from types import TracebackType from typing import Any, Callable from urllib.parse import urlencode, urlunparse @@ -16,7 +15,6 @@ from reactpy.config import REACTPY_TESTS_DEFAULT_TIMEOUT from reactpy.core.component import component from reactpy.core.hooks import use_callback, use_effect, use_state -from reactpy.testing.common import GITHUB_ACTIONS from reactpy.testing.logs import ( LogAssertionError, capture_reactpy_logs,