From d097058504374b86c2738c2ebe6f9b445d38ad75 Mon Sep 17 00:00:00 2001 From: meehand <70619157+meehand@users.noreply.github.com> Date: Wed, 3 Dec 2025 05:39:53 -0800 Subject: [PATCH] Added regression test for cached logging status (#11795) --- CHANGES/11778.misc.rst | 1 + tests/test_web_log.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 CHANGES/11778.misc.rst diff --git a/CHANGES/11778.misc.rst b/CHANGES/11778.misc.rst new file mode 100644 index 00000000000..ad29aea920a --- /dev/null +++ b/CHANGES/11778.misc.rst @@ -0,0 +1 @@ +Added regression test for cached logging status -- by :user:`meehand`. diff --git a/tests/test_web_log.py b/tests/test_web_log.py index 70419e7d70a..c78f360f05e 100644 --- a/tests/test_web_log.py +++ b/tests/test_web_log.py @@ -340,3 +340,45 @@ def log( resp = await client.get("/") assert 200 == resp.status assert "This should not be logged" not in caplog.text + + +async def test_logger_does_not_log_when_enabled_post_init( + aiohttp_server: AiohttpServer, + aiohttp_client: AiohttpClient, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test logger does nothing when not enabled even if enabled post init.""" + + async def handler(request: web.Request) -> web.Response: + return web.Response() + + enabled = False + + class Logger(AbstractAccessLogger): + + def log( + self, request: web.BaseRequest, response: web.StreamResponse, time: float + ) -> None: + self.logger.critical("This should not be logged") # pragma: no cover + + @property + def enabled(self) -> bool: + """Check if logger is enabled.""" + # Avoid formatting the log line if it will not be emitted. + return enabled + + app = web.Application() + app.router.add_get("/", handler) + server = await aiohttp_server(app, access_log_class=Logger) + client = await aiohttp_client(server) + resp = await client.get("/") + assert 200 == resp.status + assert "This should not be logged" not in caplog.text + assert not server.handler.connections[0]._force_close + + # mock enabling logging post-init + enabled = True + resp = await client.get("/") + assert 200 == resp.status + assert "This should not be logged" not in caplog.text + assert not server.handler.connections[0]._force_close