From aa6a72707daabfb6217f52e4774f2ff038f83dcc Mon Sep 17 00:00:00 2001 From: Mikhail Korobov Date: Sat, 30 May 2015 06:59:15 +0500 Subject: [PATCH] fixed CrawlerProcess when settings are passed as dicts See https://github.com/scrapy/scrapy/pull/1156 --- scrapy/crawler.py | 4 ++-- tests/test_crawler.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/scrapy/crawler.py b/scrapy/crawler.py index 9b35b3642..2cd658276 100644 --- a/scrapy/crawler.py +++ b/scrapy/crawler.py @@ -209,8 +209,8 @@ class CrawlerProcess(CrawlerRunner): def __init__(self, settings): super(CrawlerProcess, self).__init__(settings) install_shutdown_handlers(self._signal_shutdown) - configure_logging(settings) - log_scrapy_info(settings) + configure_logging(self.settings) + log_scrapy_info(self.settings) def _signal_shutdown(self, signum, _): install_shutdown_handlers(self._signal_kill) diff --git a/tests/test_crawler.py b/tests/test_crawler.py index 906573887..53f517c27 100644 --- a/tests/test_crawler.py +++ b/tests/test_crawler.py @@ -1,7 +1,7 @@ import warnings import unittest -from scrapy.crawler import Crawler, CrawlerRunner +from scrapy.crawler import Crawler, CrawlerRunner, CrawlerProcess from scrapy.settings import Settings, default_settings from scrapy.spiderloader import SpiderLoader from scrapy.utils.spider import DefaultSpider @@ -104,3 +104,13 @@ class CrawlerRunnerTestCase(unittest.TestCase): self.assertEqual(len(w), 1) self.assertIn('Please use SPIDER_LOADER_CLASS', str(w[0].message)) + +class CrawlerProcessTest(unittest.TestCase): + def test_crawler_process_accepts_dict(self): + runner = CrawlerProcess({'foo': 'bar'}) + self.assertEqual(runner.settings['foo'], 'bar') + self.assertEqual( + runner.settings['RETRY_ENABLED'], + default_settings.RETRY_ENABLED + ) + self.assertIsInstance(runner.settings, Settings)