mirror of https://github.com/scrapy/scrapy.git
Merge pull request #1725 from redapple/spiderstate-notconfigured
[MRG+1] Disable SpiderState extension if no JOBDIR set
This commit is contained in:
commit
85f0596c43
|
|
@ -2,6 +2,7 @@ import os
|
|||
from six.moves import cPickle as pickle
|
||||
|
||||
from scrapy import signals
|
||||
from scrapy.exceptions import NotConfigured
|
||||
from scrapy.utils.job import job_dir
|
||||
|
||||
class SpiderState(object):
|
||||
|
|
@ -12,7 +13,11 @@ class SpiderState(object):
|
|||
|
||||
@classmethod
|
||||
def from_crawler(cls, crawler):
|
||||
obj = cls(job_dir(crawler.settings))
|
||||
jobdir = job_dir(crawler.settings)
|
||||
if not jobdir:
|
||||
raise NotConfigured
|
||||
|
||||
obj = cls(jobdir)
|
||||
crawler.signals.connect(obj.spider_closed, signal=signals.spider_closed)
|
||||
crawler.signals.connect(obj.spider_opened, signal=signals.spider_opened)
|
||||
return obj
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ from twisted.trial import unittest
|
|||
|
||||
from scrapy.extensions.spiderstate import SpiderState
|
||||
from scrapy.spiders import Spider
|
||||
from scrapy.exceptions import NotConfigured
|
||||
from scrapy.utils.test import get_crawler
|
||||
|
||||
|
||||
class SpiderStateTest(unittest.TestCase):
|
||||
|
|
@ -34,3 +36,7 @@ class SpiderStateTest(unittest.TestCase):
|
|||
ss.spider_opened(spider)
|
||||
self.assertEqual(spider.state, {})
|
||||
ss.spider_closed(spider)
|
||||
|
||||
def test_not_configured(self):
|
||||
crawler = get_crawler(Spider)
|
||||
self.assertRaises(NotConfigured, SpiderState.from_crawler, crawler)
|
||||
|
|
|
|||
Loading…
Reference in New Issue