Add tests for OffsiteMiddleware() + use re.escape() in domains regexp

This commit is contained in:
Paul Tremberth 2013-11-28 13:37:01 +01:00
parent 36c8da2ad6
commit 13002564b9
2 changed files with 6 additions and 3 deletions

View File

@ -44,8 +44,7 @@ class OffsiteMiddleware(object):
allowed_domains = getattr(spider, 'allowed_domains', None)
if not allowed_domains:
return re.compile('') # allow all by default
domains = [d.replace('.', r'\.') for d in allowed_domains]
regex = r'^(.*\.)?(%s)$' % '|'.join(domains)
regex = r'^(.*\.)?(%s)$' % '|'.join(re.escape(d) for d in allowed_domains)
return re.compile(regex)
def spider_opened(self, spider):

View File

@ -23,7 +23,11 @@ class TestOffsiteMiddleware(TestCase):
Request('http://sub.scrapy.org/1'),
Request('http://offsite.tld/letmepass', dont_filter=True)]
offsite_reqs = [Request('http://scrapy2.org'),
Request('http://offsite.tld/')]
Request('http://offsite.tld/'),
Request('http://offsite.tld/scrapytest.org'),
Request('http://offsite.tld/rogue.scrapytest.org'),
Request('http://rogue.scrapytest.org.haha.com'),
Request('http://roguescrapytest.org')]
reqs = onsite_reqs + offsite_reqs
out = list(self.mw.process_spider_output(res, reqs, self.spider))