From fc93930656d99d43936bb7c52232845d66bd5a27 Mon Sep 17 00:00:00 2001 From: Stefan Allius Date: Wed, 7 May 2025 23:42:55 +0200 Subject: [PATCH] add unit test for error handling in build_config() --- app/src/server.py | 8 +++++--- app/tests/cnf/invalid_config.toml | 1 + app/tests/test_server.py | 11 +++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 app/tests/cnf/invalid_config.toml diff --git a/app/src/server.py b/app/src/server.py index 7970291..26ee093 100644 --- a/app/src/server.py +++ b/app/src/server.py @@ -137,7 +137,7 @@ class Server(): if config_err is not None: logging.info(f'config_err: {config_err}') - return # fixme raise an exception + return logging.info('******') @@ -239,7 +239,9 @@ async def healthy(): return Response(status=200, response="I'm fine") -async def handle_client(reader: StreamReader, writer: StreamWriter, inv_class): +async def handle_client(reader: StreamReader, + writer: StreamWriter, + inv_class): # pragma: no cover '''Handles a new incoming connection and starts an async loop''' with inv_class(reader, writer) as inv: @@ -247,7 +249,7 @@ async def handle_client(reader: StreamReader, writer: StreamWriter, inv_class): @app.before_serving -async def startup_app(): +async def startup_app(): # pragma: no cover HypercornLogHndl.save() loop = asyncio.get_event_loop() Proxy.class_init() diff --git a/app/tests/cnf/invalid_config.toml b/app/tests/cnf/invalid_config.toml new file mode 100644 index 0000000..80075f2 --- /dev/null +++ b/app/tests/cnf/invalid_config.toml @@ -0,0 +1 @@ +mqtt.port = ":1883" diff --git a/app/tests/test_server.py b/app/tests/test_server.py index e8db647..1f17893 100644 --- a/app/tests/test_server.py +++ b/app/tests/test_server.py @@ -123,6 +123,17 @@ class TestServerClass: assert logging.getLogger('hypercorn.access').level == logging.INFO assert logging.getLogger('hypercorn.error').level == logging.INFO + def test_build_config_error(self, caplog): + s = self.FakeServer() + s.src_dir = 'app/src/' + s.toml_config = 'app/tests/cnf/invalid_config.toml' + + with caplog.at_level(logging.ERROR): + s.build_config() + assert "Can't read from app/tests/cnf/invalid_config.toml" in caplog.text + assert "Key 'port' error:" in caplog.text + + class TestHypercornLogHndl: class FakeServer(Server): def __init__(self):