Skip to content

Commit 85f0596

Browse files
committed
Merge pull request scrapy#1725 from redapple/spiderstate-notconfigured
[MRG+1] Disable SpiderState extension if no JOBDIR set
2 parents 6660175 + 2969537 commit 85f0596

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

scrapy/extensions/spiderstate.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from six.moves import cPickle as pickle
33

44
from scrapy import signals
5+
from scrapy.exceptions import NotConfigured
56
from scrapy.utils.job import job_dir
67

78
class SpiderState(object):
@@ -12,7 +13,11 @@ def __init__(self, jobdir=None):
1213

1314
@classmethod
1415
def from_crawler(cls, crawler):
15-
obj = cls(job_dir(crawler.settings))
16+
jobdir = job_dir(crawler.settings)
17+
if not jobdir:
18+
raise NotConfigured
19+
20+
obj = cls(jobdir)
1621
crawler.signals.connect(obj.spider_closed, signal=signals.spider_closed)
1722
crawler.signals.connect(obj.spider_opened, signal=signals.spider_opened)
1823
return obj

tests/test_spiderstate.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
from scrapy.extensions.spiderstate import SpiderState
66
from scrapy.spiders import Spider
7+
from scrapy.exceptions import NotConfigured
8+
from scrapy.utils.test import get_crawler
79

810

911
class SpiderStateTest(unittest.TestCase):
@@ -34,3 +36,7 @@ def test_state_attribute(self):
3436
ss.spider_opened(spider)
3537
self.assertEqual(spider.state, {})
3638
ss.spider_closed(spider)
39+
40+
def test_not_configured(self):
41+
crawler = get_crawler(Spider)
42+
self.assertRaises(NotConfigured, SpiderState.from_crawler, crawler)

0 commit comments

Comments
 (0)