#4108: the first default entry (User-agent: *) wins.

This commit is contained in:
Georg Brandl 2010-07-29 17:55:01 +00:00
parent 70120e202d
commit 0a0fc07d37
3 changed files with 21 additions and 2 deletions

View File

@ -216,6 +216,20 @@ bad = ['/some/path?name=value']
RobotTest(14, doc, good, bad)
# 15. For issue #4108 (obey first * entry)
doc = """
User-agent: *
Disallow: /some/path
User-agent: *
Disallow: /another/path
"""
good = ['/another/path']
bad = ['/some/path']
RobotTest(15, doc, good, bad)
class NetworkTestCase(unittest.TestCase):

View File

@ -66,7 +66,9 @@ class RobotFileParser:
def _add_entry(self, entry):
if "*" in entry.useragents:
# the default entry is considered last
self.default_entry = entry
if self.default_entry is None:
# the first default entry wins
self.default_entry = entry
else:
self.entries.append(entry)
@ -118,7 +120,7 @@ class RobotFileParser:
entry.rulelines.append(RuleLine(line[1], True))
state = 2
if state == 2:
self.entries.append(entry)
self._add_entry(entry)
def can_fetch(self, useragent, url):

View File

@ -475,6 +475,9 @@ C-API
Library
-------
- Issue #4108: In urllib.robotparser, if there are multiple 'User-agent: *'
entries, consider the first one.
- Issue #6630: Allow customizing regex flags when subclassing the
string.Template class.