From 97d77c79c28bfbde9781ae88e45d0a236cc10a6a Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Wed, 22 Sep 2010 16:09:13 -0300 Subject: [PATCH] Added tests for CrawlerSettings and SpiderSettings classes --- scrapy/tests/test_settings.py | 54 ++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/scrapy/tests/test_settings.py b/scrapy/tests/test_settings.py index dfccf5dff..9da67652c 100644 --- a/scrapy/tests/test_settings.py +++ b/scrapy/tests/test_settings.py @@ -1,6 +1,8 @@ import unittest -from scrapy.settings import Settings +from scrapy.settings import Settings, SpiderSettings +from scrapy.utils.test import get_crawler +from scrapy.spider import BaseSpider class SettingsTest(unittest.TestCase): @@ -46,6 +48,56 @@ class SettingsTest(unittest.TestCase): self.assertEqual(settings.get('TEST_STRx'), None) self.assertEqual(settings.get('TEST_STRx', 'default'), 'default') +class CrawlerSettingsTest(unittest.TestCase): + + def test_global_defaults(self): + crawler = get_crawler() + self.assertEqual(crawler.settings.getint('DOWNLOAD_TIMEOUT'), 180) + + def test_defaults(self): + crawler = get_crawler() + crawler.settings.defaults['DOWNLOAD_TIMEOUT'] = '99' + self.assertEqual(crawler.settings.getint('DOWNLOAD_TIMEOUT'), 99) + + def test_settings_module(self): + crawler = get_crawler({'DOWNLOAD_TIMEOUT': '3'}) + self.assertEqual(crawler.settings.getint('DOWNLOAD_TIMEOUT'), 3) + + def test_overrides(self): + crawler = get_crawler({'DOWNLOAD_TIMEOUT': '3'}) + crawler.settings.overrides['DOWNLOAD_TIMEOUT'] = '15' + self.assertEqual(crawler.settings.getint('DOWNLOAD_TIMEOUT'), 15) + +class SpiderSettingsTest(unittest.TestCase): + + def test_global_defaults(self): + crawler = get_crawler() + settings = SpiderSettings(BaseSpider('name'), crawler.settings) + self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 180) + + def test_defaults(self): + crawler = get_crawler() + crawler.settings.defaults['DOWNLOAD_TIMEOUT'] = '99' + settings = SpiderSettings(BaseSpider('name'), crawler.settings) + self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 99) + + def test_crawler_defaults(self): + crawler = get_crawler({'DOWNLOAD_TIMEOUT': '3'}) + settings = SpiderSettings(BaseSpider('name'), crawler.settings) + self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 3) + + def test_spider_overrides_crawler(self): + crawler = get_crawler({'DOWNLOAD_TIMEOUT': '3'}) + crawler.settings.defaults['DOWNLOAD_TIMEOUT'] = '99' + settings = SpiderSettings(BaseSpider('name', DOWNLOAD_TIMEOUT='12'), crawler.settings) + self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 12) + + def test_overrides_most_precedence(self): + crawler = get_crawler({'DOWNLOAD_TIMEOUT': '3'}) + crawler.settings.overrides['DOWNLOAD_TIMEOUT'] = '15' + settings = SpiderSettings(BaseSpider('name', DOWNLOAD_TIMEOUT='12'), crawler.settings) + self.assertEqual(settings.getint('DOWNLOAD_TIMEOUT'), 15) + if __name__ == "__main__": unittest.main()