diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/robotparser.py | 6 | ||||
-rw-r--r-- | Lib/test/test_robotparser.py | 14 |
2 files changed, 18 insertions, 2 deletions
diff --git a/Lib/robotparser.py b/Lib/robotparser.py index 730426f..1722863 100644 --- a/Lib/robotparser.py +++ b/Lib/robotparser.py @@ -68,7 +68,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) @@ -120,7 +122,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): diff --git a/Lib/test/test_robotparser.py b/Lib/test/test_robotparser.py index 0415884..aa73ec5 100644 --- a/Lib/test/test_robotparser.py +++ b/Lib/test/test_robotparser.py @@ -213,6 +213,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): |