From 0dfad68136f3556fa052d0eb4ed556de5b1e53ca Mon Sep 17 00:00:00 2001 From: Mridankan Mandal Date: Thu, 16 Jul 2026 17:13:40 +0530 Subject: [PATCH] Use caplog in compression warning test Signed-off-by: Mridankan Mandal --- ...st_downloadermiddleware_httpcompression.py | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/tests/test_downloadermiddleware_httpcompression.py b/tests/test_downloadermiddleware_httpcompression.py index efc9caf53..35af15484 100644 --- a/tests/test_downloadermiddleware_httpcompression.py +++ b/tests/test_downloadermiddleware_httpcompression.py @@ -538,23 +538,9 @@ class TestHttpCompression: mw.open_spider(spider) response = self._getresponse(f"bomb-{compression_id}") # 11_511_612 B - with ( - LogCapture( - "scrapy.downloadermiddlewares.httpcompression", - propagate=False, - level=WARNING, - ) as log, - pytest.raises(IgnoreRequest) as exc_info, - ): + with pytest.raises(IgnoreRequest) as exc_info: mw.process_response(response.request, response) assert exc_info.value.__cause__.decompressed_size < 1_100_000 - log.check( - ( - "scrapy.downloadermiddlewares.httpcompression", - "WARNING", - str(exc_info.value), - ), - ) def test_compression_bomb_setting_br(self): _skip_if_no_br() @@ -572,6 +558,32 @@ class TestHttpCompression: self._test_compression_bomb_setting("zstd") + def test_compression_bomb_setting_logs_warning( + self, caplog: pytest.LogCaptureFixture + ): + settings = {"DOWNLOAD_MAXSIZE": 1_000_000} + crawler = get_crawler(Spider, settings_dict=settings) + spider = crawler._create_spider("scrapytest.org") + mw = HttpCompressionMiddleware.from_crawler(crawler) + mw.open_spider(spider) + + response = self._getresponse("bomb-gzip") # 11_511_612 B + with ( + caplog.at_level( + WARNING, logger="scrapy.downloadermiddlewares.httpcompression" + ), + pytest.raises(IgnoreRequest) as exc_info, + ): + mw.process_response(response.request, response) + assert exc_info.value.__cause__.decompressed_size < 1_100_000 + assert caplog.record_tuples == [ + ( + "scrapy.downloadermiddlewares.httpcompression", + WARNING, + str(exc_info.value), + ) + ] + def _test_compression_bomb_spider_attr(self, compression_id): class DownloadMaxSizeSpider(Spider): download_maxsize = 1_000_000