made Spider name required again (do not default)

This commit is contained in:
Pablo Hoffman 2010-04-05 12:34:29 -03:00
parent 70ac6642d5
commit 0dfec04439
25 changed files with 44 additions and 47 deletions

View File

@ -41,7 +41,7 @@ class Command(ScrapyCommand):
log.msg("Could not find spider: %s" % opts.spider, log.ERROR)
else:
spider = scrapymanager._create_spider_for_request(request, \
BaseSpider())
BaseSpider('default'))
scrapymanager.crawl_request(request, spider)
scrapymanager.start()

View File

@ -15,9 +15,9 @@ class CrawlSpider(BaseSpider):
request_processors = None
rules = []
def __init__(self):
def __init__(self, *a, **kw):
"""Initialize dispatcher"""
super(CrawlSpider, self).__init__()
super(CrawlSpider, self).__init__(*a, **kw)
# auto follow start urls
if self.start_urls:

View File

@ -55,7 +55,7 @@ class Shell(object):
request = Request(url)
spider = scrapymanager._create_spider_for_request(request, \
BaseSpider(), log_multiple=True)
BaseSpider('default'), log_multiple=True)
print "Fetching %s..." % request
response = threads.blockingCallFromThread(reactor, scrapyengine.schedule, \

View File

@ -52,7 +52,7 @@ class BaseSpider(object_ref):
if not self.allowed_domains:
self.allowed_domains = []
if not self.name:
self.name = 'default'
raise ValueError("%s must have a name" % type(self).__name__)
# XXX: SEP-12 forward compatibility (remove for 0.10)
self.domain_name = self.name

View File

@ -109,7 +109,7 @@ class CompiledRuleInitializationTest(unittest.TestCase):
class RulesTest(unittest.TestCase):
def test_rules_manager_basic(self):
spider = BaseSpider()
spider = BaseSpider('foo')
response1 = HtmlResponse('http://example.org')
response2 = HtmlResponse('http://othersite.org')
rulesman = RulesManager([], spider)
@ -134,7 +134,7 @@ class RulesTest(unittest.TestCase):
self.failUnlessEqual(rule1.follow, True)
def test_rules_manager_empty_rule(self):
spider = BaseSpider()
spider = BaseSpider('foo')
response = HtmlResponse('http://example.org')
rulesman = RulesManager([Rule(follow=True)], spider)
@ -144,7 +144,7 @@ class RulesTest(unittest.TestCase):
self.failUnless(isinstance(rule.matcher, BaseMatcher))
def test_rules_manager_default_matcher(self):
spider = BaseSpider()
spider = BaseSpider('foo')
response = HtmlResponse('http://example.org')
callback = lambda x: None
@ -156,7 +156,7 @@ class RulesTest(unittest.TestCase):
self.failUnless(isinstance(rule.matcher, UrlMatcher))
def test_rules_manager_matchers(self):
spider = BaseSpider()
spider = BaseSpider('foo')
response1 = HtmlResponse('http://example.org')
response2 = HtmlResponse('http://othersite.org')
@ -200,7 +200,7 @@ class RulesTest(unittest.TestCase):
def test_rules_manager_callbacks(self):
mycallback = lambda: True
spider = BaseSpider()
spider = BaseSpider('foo')
spider.parse_item = lambda: True
response1 = HtmlResponse('http://example.org')
@ -229,7 +229,7 @@ class RulesTest(unittest.TestCase):
def test_rules_manager_callback_with_arguments(self):
spider = BaseSpider()
spider = BaseSpider('foo')
response = HtmlResponse('http://example.org')
kwargs = {'a': 1}

View File

@ -60,7 +60,7 @@ class CrawlSpiderTest(unittest.TestCase):
Spider.request_extractors = extractors
Spider.request_processors = processors
return Spider()
return Spider('foo')
def test_start_url_auto_rule(self):
spider = self.spider_factory()

View File

@ -32,11 +32,11 @@ class FileTestCase(unittest.TestCase):
request = Request('file://%s' % self.tmpname + '^')
assert request.url.upper().endswith('%5E')
return download_file(request, BaseSpider()).addCallback(_test)
return download_file(request, BaseSpider('foo')).addCallback(_test)
def test_non_existent(self):
request = Request('file://%s' % self.mktemp())
d = download_file(request, BaseSpider())
d = download_file(request, BaseSpider('foo'))
return self.assertFailure(d, IOError)
@ -66,20 +66,20 @@ class HttpTestCase(unittest.TestCase):
def test_download(self):
request = Request(self.getURL('file'))
d = download_http(request, BaseSpider())
d = download_http(request, BaseSpider('foo'))
d.addCallback(lambda r: r.body)
d.addCallback(self.assertEquals, "0123456789")
return d
def test_redirect_status(self):
request = Request(self.getURL('redirect'))
d = download_http(request, BaseSpider())
d = download_http(request, BaseSpider('foo'))
d.addCallback(lambda r: r.status)
d.addCallback(self.assertEquals, 302)
return d
def test_timeout_download_from_spider(self):
spider = BaseSpider()
spider = BaseSpider('foo')
spider.download_timeout = 0.000001
request = Request(self.getURL('wait'))
d = download_http(request, spider)
@ -91,7 +91,7 @@ class HttpTestCase(unittest.TestCase):
self.assertEquals(request.headers, {})
request = Request(self.getURL('host'))
return download_http(request, BaseSpider()).addCallback(_test)
return download_http(request, BaseSpider('foo')).addCallback(_test)
def test_host_header_seted_in_request_headers(self):
def _test(response):
@ -99,9 +99,9 @@ class HttpTestCase(unittest.TestCase):
self.assertEquals(request.headers.get('Host'), 'example.com')
request = Request(self.getURL('host'), headers={'Host': 'example.com'})
return download_http(request, BaseSpider()).addCallback(_test)
return download_http(request, BaseSpider('foo')).addCallback(_test)
d = download_http(request, BaseSpider())
d = download_http(request, BaseSpider('foo'))
d.addCallback(lambda r: r.body)
d.addCallback(self.assertEquals, 'example.com')
return d
@ -109,14 +109,14 @@ class HttpTestCase(unittest.TestCase):
def test_payload(self):
body = '1'*100 # PayloadResource requires body length to be 100
request = Request(self.getURL('payload'), method='POST', body=body)
d = download_http(request, BaseSpider())
d = download_http(request, BaseSpider('foo'))
d.addCallback(lambda r: r.body)
d.addCallback(self.assertEquals, body)
return d
def test_broken_download(self):
request = Request(self.getURL('broken'))
d = download_http(request, BaseSpider())
d = download_http(request, BaseSpider('foo'))
return self.assertFailure(d, PartialDownloadError)
@ -152,7 +152,7 @@ class HttpProxyTestCase(unittest.TestCase):
http_proxy = self.getURL('')
request = Request('https://example.com', meta={'proxy': http_proxy})
return download_http(request, BaseSpider()).addCallback(_test)
return download_http(request, BaseSpider('foo')).addCallback(_test)
def test_download_without_proxy(self):
def _test(response):
@ -161,4 +161,4 @@ class HttpProxyTestCase(unittest.TestCase):
self.assertEquals(response.body, '/path/to/resource')
request = Request(self.getURL('path/to/resource'))
return download_http(request, BaseSpider()).addCallback(_test)
return download_http(request, BaseSpider('foo')).addCallback(_test)

View File

@ -10,7 +10,7 @@ from scrapy.contrib.downloadermiddleware.cookies import CookiesMiddleware
class CookiesMiddlewareTest(TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = CookiesMiddleware()
def tearDown(self):

View File

@ -21,7 +21,7 @@ class DecompressionMiddlewareTest(TestCase):
def setUp(self):
self.mw = DecompressionMiddleware()
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
def test_known_compression_formats(self):
for fmt in self.test_formats:

View File

@ -9,7 +9,7 @@ from scrapy.spider import BaseSpider
class TestDefaultHeadersMiddleware(TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = DefaultHeadersMiddleware()
self.default_headers = dict([(k, [v]) for k, v in \
settings.get('DEFAULT_REQUEST_HEADERS').iteritems()])

View File

@ -18,7 +18,7 @@ class HttpAuthMiddlewareTest(unittest.TestCase):
def test_auth(self):
self.mw.default_useragent = 'default_useragent'
spider = TestSpider()
spider = TestSpider('foo')
req = Request('http://scrapytest.org/')
assert self.mw.process_request(req, spider) is None
self.assertEquals(req.headers['Authorization'], 'Basic Zm9vOmJhcg==')

View File

@ -20,7 +20,7 @@ FORMAT = {
class HttpCompressionTest(TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = HttpCompressionMiddleware()
def _getresponse(self, coding):

View File

@ -8,7 +8,7 @@ from scrapy.http import Response, Request
from scrapy.spider import BaseSpider
from scrapy.conf import settings
spider = BaseSpider()
spider = BaseSpider('foo')
class TestDefaultHeadersMiddleware(TestCase):

View File

@ -8,7 +8,7 @@ from scrapy.http import Request, Response, HtmlResponse, Headers
class RedirectMiddlewareTest(unittest.TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = RedirectMiddleware()
def test_priority_adjust(self):

View File

@ -10,7 +10,7 @@ from scrapy.http import Request, Response
class RetryTest(unittest.TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = RetryMiddleware()
self.mw.max_retry_times = 2

View File

@ -9,7 +9,7 @@ from scrapy.conf import settings
class UserAgentMiddlewareTest(TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = UserAgentMiddleware()
def tearDown(self):

View File

@ -8,7 +8,7 @@ from scrapy.contrib.dupefilter import RequestFingerprintDupeFilter, NullDupeFilt
class RequestFingerprintDupeFilterTest(unittest.TestCase):
def test_filter(self):
spider = BaseSpider()
spider = BaseSpider('foo')
filter = RequestFingerprintDupeFilter()
filter.open_spider(spider)
@ -28,7 +28,7 @@ class RequestFingerprintDupeFilterTest(unittest.TestCase):
class NullDupeFilterTest(unittest.TestCase):
def test_filter(self):
spider = BaseSpider()
spider = BaseSpider('foo')
filter = NullDupeFilter()
filter.open_spider(spider)

View File

@ -10,7 +10,7 @@ class DuplicatesFilterMiddlewareTest(unittest.TestCase):
def setUp(self):
self.mw = DuplicatesFilterMiddleware()
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw.open_spider(self.spider)
def tearDown(self):

View File

@ -9,7 +9,6 @@ from scrapy.spider import BaseSpider
from scrapy.contrib.spiders.init import InitSpider
from scrapy.contrib.spiders.crawl import CrawlSpider
from scrapy.contrib.spiders.feed import XMLFeedSpider, CSVFeedSpider
from scrapy.contrib.dupefilter import RequestFingerprintDupeFilter, NullDupeFilter
class BaseSpiderTest(unittest.TestCase):
@ -77,10 +76,8 @@ class BaseSpiderTest(unittest.TestCase):
def test_spider_without_name(self):
"""Constructor arguments are assigned to spider attributes"""
spider = self.spider_class()
self.assertEqual(spider.name, 'default')
spider = self.spider_class(foo='bar')
self.assertEqual(spider.foo, 'bar')
self.assertRaises(ValueError, self.spider_class)
self.assertRaises(ValueError, self.spider_class, somearg='foo')
class InitSpiderTest(BaseSpiderTest):

View File

@ -8,7 +8,7 @@ from scrapy.contrib.spidermiddleware.httperror import HttpErrorMiddleware
class TestHttpErrorMiddleware(TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = HttpErrorMiddleware()
self.req = Request('http://scrapytest.org')

View File

@ -8,7 +8,7 @@ from scrapy.contrib.spidermiddleware.offsite import OffsiteMiddleware
class TestOffsiteMiddleware(TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.spider.name = 'scrapytest.org'
self.spider.allowed_domains = ['scrapytest.org', 'scrapy.org']

View File

@ -8,7 +8,7 @@ from scrapy.contrib.spidermiddleware.referer import RefererMiddleware
class TestRefererMiddleware(TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = RefererMiddleware()
def test_process_spider_output(self):

View File

@ -9,7 +9,7 @@ from scrapy.utils.url import canonicalize_url
class TestUrlFilterMiddleware(TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = UrlFilterMiddleware()
def test_process_spider_output(self):

View File

@ -12,7 +12,7 @@ class TestUrlLengthMiddleware(TestCase):
settings.disabled = False
settings.overrides['URLLENGTH_LIMIT'] = 25
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
self.mw = UrlLengthMiddleware()
def test_process_spider_output(self):

View File

@ -9,7 +9,7 @@ from scrapy.stats.signals import stats_spider_opened, stats_spider_closing, \
class StatsCollectorTest(unittest.TestCase):
def setUp(self):
self.spider = BaseSpider()
self.spider = BaseSpider('foo')
def test_collector(self):
stats = StatsCollector()