Fix enabled addons not being logged (#6036)

This commit is contained in:
Víctor Ruiz 2023-09-04 08:03:35 +02:00 committed by GitHub
parent 276bce0641
commit c1dd5493ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View File

@ -29,7 +29,6 @@ class AddonManager:
which to read the add-on configuration
:type settings: :class:`~scrapy.settings.Settings`
"""
enabled: List[Any] = []
for clspath in build_component_list(settings["ADDONS"]):
try:
addoncls = load_object(clspath)
@ -48,7 +47,7 @@ class AddonManager:
logger.info(
"Enabled addons:\n%(addons)s",
{
"addons": enabled,
"addons": self.addons,
},
extra={"crawler": self.crawler},
)

View File

@ -1,6 +1,7 @@
import itertools
import unittest
from typing import Any, Dict
from unittest.mock import patch
from scrapy import Spider
from scrapy.crawler import Crawler, CrawlerRunner
@ -156,3 +157,22 @@ class AddonManagerTest(unittest.TestCase):
crawler.settings.getwithbase("DOWNLOAD_HANDLERS")["https"], "AddonHandler"
)
self.assertEqual(crawler.settings.get(FALLBACK_SETTING), "UserHandler")
def test_logging_message(self):
class LoggedAddon:
def update_settings(self, settings):
pass
with patch("scrapy.addons.logger") as logger_mock:
with patch("scrapy.addons.create_instance") as create_instance_mock:
settings_dict = {
"ADDONS": {LoggedAddon: 1},
}
addon = LoggedAddon()
create_instance_mock.return_value = addon
crawler = get_crawler(settings_dict=settings_dict)
logger_mock.info.assert_called_once_with(
"Enabled addons:\n%(addons)s",
{"addons": [addon]},
extra={"crawler": crawler},
)