# HG changeset patch # User drewp@bigasterisk.com # Date 1710616292 25200 # Node ID b34cd6619316772915c48cafdbbd03ac5f414f66 # Parent ddf021c870836ff842661ea935db744119730ba4 new test. server has to be able to exit between tests. diff -r ddf021c87083 -r b34cd6619316 examples/run_server_make_request.py --- a/examples/run_server_make_request.py Sat Mar 16 12:02:40 2024 -0700 +++ b/examples/run_server_make_request.py Sat Mar 16 12:11:32 2024 -0700 @@ -17,7 +17,7 @@ async def __aexit__(self, exc_type, exc, tb): self.subprocess.terminate() - + await self.subprocess.wait() async def get(self, url: str) -> aiohttp.ClientResponse: while True: try: diff -r ddf021c87083 -r b34cd6619316 examples/serve_custom_root_page.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/serve_custom_root_page.py Sat Mar 16 12:11:32 2024 -0700 @@ -0,0 +1,12 @@ +from rdferry import StarletteServer +from starlette.requests import Request +from starlette.responses import PlainTextResponse + + +def hello(request: Request) -> PlainTextResponse: + return PlainTextResponse('hello world') + + +server = StarletteServer() +server.add_route('/', hello) +server.serve() diff -r ddf021c87083 -r b34cd6619316 examples/serve_custom_root_page_test.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/examples/serve_custom_root_page_test.py Sat Mar 16 12:11:32 2024 -0700 @@ -0,0 +1,13 @@ +from pathlib import Path + +import pytest + +from examples.run_server_make_request import HttpServer + + +@pytest.mark.asyncio +async def test_http_request_to_subprocess(): + async with HttpServer( + Path('examples/serve_custom_root_page.py')) as http_server: + response = await http_server.get('http://localhost:8005/') + assert (await response.text()) == 'hello world' diff -r ddf021c87083 -r b34cd6619316 src/rdferry/server.py --- a/src/rdferry/server.py Sat Mar 16 12:02:40 2024 -0700 +++ b/src/rdferry/server.py Sat Mar 16 12:11:32 2024 -0700 @@ -17,8 +17,7 @@ if path == '/': self.root_route_is_set = True - def serve(self) -> NoReturn: + def serve(self): if not self.root_route_is_set: self.add_route('/', lambda req: PlainTextResponse('todo')) uvicorn.run(self.app, host="0.0.0.0", port=8005) - raise NotImplementedError()