mirror of https://github.com/scrapy/scrapy.git
Move spider settings population to Crawler.__init__
This commit is contained in:
parent
66aef0488a
commit
6f9265b44b
|
|
@ -18,13 +18,17 @@ class Crawler(object):
|
|||
|
||||
def __init__(self, spidercls, settings):
|
||||
self.spidercls = spidercls
|
||||
self.settings = settings
|
||||
self.settings = settings.copy()
|
||||
|
||||
self.signals = SignalManager(self)
|
||||
self.stats = load_object(self.settings['STATS_CLASS'])(self)
|
||||
lf_cls = load_object(self.settings['LOG_FORMATTER'])
|
||||
self.logformatter = lf_cls.from_crawler(self)
|
||||
self.extensions = ExtensionManager.from_crawler(self)
|
||||
|
||||
self.spidercls.update_settings(self.settings)
|
||||
self.settings.freeze()
|
||||
|
||||
self.crawling = False
|
||||
self.spider = None
|
||||
self.engine = None
|
||||
|
|
@ -95,11 +99,7 @@ class CrawlerRunner(object):
|
|||
def _create_crawler(self, spidercls):
|
||||
if isinstance(spidercls, six.string_types):
|
||||
spidercls = self.spiders.load(spidercls)
|
||||
|
||||
crawler_settings = self.settings.copy()
|
||||
spidercls.update_settings(crawler_settings)
|
||||
crawler_settings.freeze()
|
||||
return Crawler(spidercls, crawler_settings)
|
||||
return Crawler(spidercls, self.settings)
|
||||
|
||||
def _setup_crawler_logging(self, crawler):
|
||||
log_observer = log.start_from_crawler(crawler)
|
||||
|
|
|
|||
|
|
@ -25,16 +25,6 @@ class CrawlerTestCase(unittest.TestCase):
|
|||
self.crawler.spiders
|
||||
self.assertEqual(len(w), 1, "Warn deprecated access only once")
|
||||
|
||||
|
||||
class CrawlerRunnerTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.crawler_runner = CrawlerRunner(Settings())
|
||||
|
||||
def tearDown(self):
|
||||
return self.crawler_runner.stop()
|
||||
|
||||
@defer.inlineCallbacks
|
||||
def test_populate_spidercls_settings(self):
|
||||
spider_settings = {'TEST1': 'spider', 'TEST2': 'spider'}
|
||||
project_settings = {'TEST1': 'project', 'TEST3': 'project'}
|
||||
|
|
@ -42,12 +32,13 @@ class CrawlerRunnerTest(unittest.TestCase):
|
|||
class CustomSettingsSpider(DefaultSpider):
|
||||
custom_settings = spider_settings
|
||||
|
||||
self.crawler_runner.settings.setdict(project_settings,
|
||||
priority='project')
|
||||
settings = Settings()
|
||||
settings.setdict(project_settings, priority='project')
|
||||
crawler = Crawler(CustomSettingsSpider, settings)
|
||||
|
||||
d = self.crawler_runner.crawl(CustomSettingsSpider)
|
||||
crawler = list(self.crawler_runner.crawlers)[0]
|
||||
yield d
|
||||
self.assertEqual(crawler.settings.get('TEST1'), 'spider')
|
||||
self.assertEqual(crawler.settings.get('TEST2'), 'spider')
|
||||
self.assertEqual(crawler.settings.get('TEST3'), 'project')
|
||||
|
||||
self.assertFalse(settings.frozen)
|
||||
self.assertTrue(crawler.settings.frozen)
|
||||
|
|
|
|||
Loading…
Reference in New Issue