diff --git a/scrapy/addons.py b/scrapy/addons.py index 02dd4fde8..2634bf907 100644 --- a/scrapy/addons.py +++ b/scrapy/addons.py @@ -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}, ) diff --git a/tests/test_addons.py b/tests/test_addons.py index 5d053ed52..b7cac5039 100644 --- a/tests/test_addons.py +++ b/tests/test_addons.py @@ -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}, + )