Merge pull request #1185 from scrapy/fix-spiderloader-backwards-compatibility

[MRG +1]fixed backwards compatibility for SPIDER_MANAGER_CLASS option
This commit is contained in:
Daniel Graña 2015-04-21 17:17:14 -03:00
commit ded3f9cb0e
2 changed files with 17 additions and 2 deletions

View File

@ -192,8 +192,8 @@ def _get_spider_loader(settings):
'Please use SPIDER_LOADER_CLASS.',
category=ScrapyDeprecationWarning, stacklevel=2
)
cls_path = settings.get('SPIDER_LOADER_CLASS',
settings.get('SPIDER_MANAGER_CLASS'))
cls_path = settings.get('SPIDER_MANAGER_CLASS',
settings.get('SPIDER_LOADER_CLASS'))
loader_cls = load_object(cls_path)
verifyClass(ISpiderLoader, loader_cls)
return loader_cls.from_settings(settings.frozencopy())

View File

@ -5,6 +5,7 @@ from zope.interface.verify import DoesNotImplement
from scrapy.crawler import Crawler, CrawlerRunner
from scrapy.settings import Settings, default_settings
from scrapy.spiderloader import SpiderLoader
from scrapy.utils.spider import DefaultSpider
from scrapy.utils.misc import load_object
@ -60,6 +61,10 @@ class SpiderLoaderWithWrongInterface(object):
pass
class CustomSpiderLoader(SpiderLoader):
pass
class CrawlerRunnerTestCase(unittest.TestCase):
def test_spider_manager_verify_interface(self):
@ -87,3 +92,13 @@ class CrawlerRunnerTestCase(unittest.TestCase):
self.assertIn("CrawlerRunner.spider_loader", str(w[0].message))
sl_cls = load_object(runner.settings['SPIDER_LOADER_CLASS'])
self.assertIsInstance(spiders, sl_cls)
def test_spidermanager_deprecation(self):
with warnings.catch_warnings(record=True) as w:
runner = CrawlerRunner({
'SPIDER_MANAGER_CLASS': 'tests.test_crawler.CustomSpiderLoader'
})
self.assertIsInstance(runner.spider_loader, CustomSpiderLoader)
self.assertEqual(len(w), 1)
self.assertIn('Please use SPIDER_LOADER_CLASS', str(w[0].message))