From f8de153725c273cb2d5411d45c9cd7b4d4f18c97 Mon Sep 17 00:00:00 2001 From: Luiz Silva Date: Fri, 6 Dec 2019 14:49:31 -0300 Subject: [PATCH] Use getlist to obtain STICKY_META_KEYS setting --- scrapy/spidermiddlewares/stickymeta.py | 2 +- tests/test_spidermiddleware_stickymeta.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/scrapy/spidermiddlewares/stickymeta.py b/scrapy/spidermiddlewares/stickymeta.py index 3ebce594b..121da9f84 100644 --- a/scrapy/spidermiddlewares/stickymeta.py +++ b/scrapy/spidermiddlewares/stickymeta.py @@ -7,7 +7,7 @@ class StickyMetaParamsMiddleware(object): @classmethod def from_crawler(cls, crawler): - keys_to_sticky = crawler.settings.get('STICKY_META_KEYS', []) + keys_to_sticky = crawler.settings.getlist('STICKY_META_KEYS') if not keys_to_sticky: raise NotConfigured return cls(keys_to_sticky) diff --git a/tests/test_spidermiddleware_stickymeta.py b/tests/test_spidermiddleware_stickymeta.py index c1ab21373..b3955af39 100644 --- a/tests/test_spidermiddleware_stickymeta.py +++ b/tests/test_spidermiddleware_stickymeta.py @@ -45,3 +45,9 @@ class TestStickyMetaParamsMiddleware(TestCase): for result in results: if isinstance(result, Request): self.assertEqual(result.meta, {'param2': 'Stickied!'}) + + def test_comma_separated_string_setting(self): + crawler = get_crawler(Spider, {'STICKY_META_KEYS': 'param1,param2'}) + middleware = self.create_middleware(crawler) + assert type(middleware.keys_to_sticky) is list + assert middleware.keys_to_sticky == ['param1', 'param2']