Mercurial > code > home > repos > rdferry
changeset 5:b34cd6619316
new test. server has to be able to exit between tests.
author | drewp@bigasterisk.com |
---|---|
date | Sat, 16 Mar 2024 12:11:32 -0700 |
parents | ddf021c87083 |
children | d885fce5e4e7 |
files | examples/run_server_make_request.py examples/serve_custom_root_page.py examples/serve_custom_root_page_test.py src/rdferry/server.py |
diffstat | 4 files changed, 27 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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:
--- /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()
--- /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'
--- 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()