Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_robotparser.py @ 84007:dbfbdf2b5c19 3.3
Fix #17967: For ftp urls CWD to target instead of hopping to each directory
towards target. This fixes a bug where target is accessible, but parent
directories are restricted.
| author | Senthil Kumaran <senthil@uthcode.com> |
|---|---|
| date | Sat, 01 Jun 2013 08:27:06 -0700 |
| parents | 30128355f53b |
| children |
| rev | line source |
|---|---|
|
42501
f6069f9dd52d
SF patch# 1770008 by Christian Heimes (plus some extras).
Guido van Rossum <guido@python.org>
parents:
41554
diff
changeset
|
1 import io |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47201
diff
changeset
|
2 import unittest |
|
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47201
diff
changeset
|
3 import urllib.robotparser |
|
71261
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
4 from urllib.error import URLError, HTTPError |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
5 from urllib.request import urlopen |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
43095
diff
changeset
|
6 from test import support |
| 22088 | 7 |
| 8 class RobotTestCase(unittest.TestCase): | |
|
82625
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
9 def __init__(self, index=None, parser=None, url=None, good=None, agent=None): |
|
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
10 # workaround to make unittest discovery work (see #17066) |
|
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
11 if not isinstance(index, int): |
|
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
12 return |
| 22088 | 13 unittest.TestCase.__init__(self) |
| 14 if good: | |
| 15 self.str = "RobotTest(%d, good, %s)" % (index, url) | |
| 16 else: | |
| 17 self.str = "RobotTest(%d, bad, %s)" % (index, url) | |
| 18 self.parser = parser | |
| 19 self.url = url | |
| 20 self.good = good | |
| 21 self.agent = agent | |
| 22 | |
| 23 def runTest(self): | |
| 24 if isinstance(self.url, tuple): | |
| 25 agent, url = self.url | |
| 26 else: | |
| 27 url = self.url | |
| 28 agent = self.agent | |
| 29 if self.good: | |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48594
diff
changeset
|
30 self.assertTrue(self.parser.can_fetch(agent, url)) |
| 22088 | 31 else: |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48594
diff
changeset
|
32 self.assertFalse(self.parser.can_fetch(agent, url)) |
| 22088 | 33 |
| 34 def __str__(self): | |
| 35 return self.str | |
| 36 | |
| 37 tests = unittest.TestSuite() | |
| 38 | |
| 39 def RobotTest(index, robots_txt, good_urls, bad_urls, | |
| 40 agent="test_robotparser"): | |
|
23075
b7e87732f6ab
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
22088
diff
changeset
|
41 |
|
42501
f6069f9dd52d
SF patch# 1770008 by Christian Heimes (plus some extras).
Guido van Rossum <guido@python.org>
parents:
41554
diff
changeset
|
42 lines = io.StringIO(robots_txt).readlines() |
|
48334
5a416a6417d3
Make a new urllib package .
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
47201
diff
changeset
|
43 parser = urllib.robotparser.RobotFileParser() |
|
23075
b7e87732f6ab
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
22088
diff
changeset
|
44 parser.parse(lines) |
|
b7e87732f6ab
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
22088
diff
changeset
|
45 for url in good_urls: |
|
b7e87732f6ab
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
22088
diff
changeset
|
46 tests.addTest(RobotTestCase(index, parser, url, 1, agent)) |
|
b7e87732f6ab
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
22088
diff
changeset
|
47 for url in bad_urls: |
|
b7e87732f6ab
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
22088
diff
changeset
|
48 tests.addTest(RobotTestCase(index, parser, url, 0, agent)) |
| 22088 | 49 |
| 50 # Examples from http://www.robotstxt.org/wc/norobots.html (fetched 2002) | |
| 51 | |
| 52 # 1. | |
| 53 doc = """ | |
| 54 User-agent: * | |
| 55 Disallow: /cyberworld/map/ # This is an infinite virtual URL space | |
| 56 Disallow: /tmp/ # these will soon disappear | |
| 57 Disallow: /foo.html | |
| 58 """ | |
| 59 | |
| 60 good = ['/','/test.html'] | |
| 61 bad = ['/cyberworld/map/index.html','/tmp/xxx','/foo.html'] | |
| 62 | |
| 63 RobotTest(1, doc, good, bad) | |
| 64 | |
| 65 # 2. | |
| 66 doc = """ | |
| 67 # robots.txt for http://www.example.com/ | |
| 68 | |
| 69 User-agent: * | |
| 70 Disallow: /cyberworld/map/ # This is an infinite virtual URL space | |
| 71 | |
| 72 # Cybermapper knows where to go. | |
| 73 User-agent: cybermapper | |
| 74 Disallow: | |
| 75 | |
| 76 """ | |
| 77 | |
| 78 good = ['/','/test.html',('cybermapper','/cyberworld/map/index.html')] | |
| 79 bad = ['/cyberworld/map/index.html'] | |
| 80 | |
| 81 RobotTest(2, doc, good, bad) | |
| 82 | |
| 83 # 3. | |
| 84 doc = """ | |
| 85 # go away | |
| 86 User-agent: * | |
| 87 Disallow: / | |
| 88 """ | |
| 89 | |
| 90 good = [] | |
| 91 bad = ['/cyberworld/map/index.html','/','/tmp/'] | |
| 92 | |
| 93 RobotTest(3, doc, good, bad) | |
| 94 | |
| 95 # Examples from http://www.robotstxt.org/wc/norobots-rfc.html (fetched 2002) | |
| 96 | |
| 97 # 4. | |
| 98 doc = """ | |
| 99 User-agent: figtree | |
| 100 Disallow: /tmp | |
| 101 Disallow: /a%3cd.html | |
| 102 Disallow: /a%2fb.html | |
| 103 Disallow: /%7ejoe/index.html | |
| 104 """ | |
| 105 | |
| 106 good = [] # XFAIL '/a/b.html' | |
| 107 bad = ['/tmp','/tmp.html','/tmp/a.html', | |
| 108 '/a%3cd.html','/a%3Cd.html','/a%2fb.html', | |
| 109 '/~joe/index.html' | |
| 110 ] | |
| 111 | |
| 112 RobotTest(4, doc, good, bad, 'figtree') | |
| 113 RobotTest(5, doc, good, bad, 'FigTree Robot libwww-perl/5.04') | |
| 114 | |
| 115 # 6. | |
| 116 doc = """ | |
| 117 User-agent: * | |
| 118 Disallow: /tmp/ | |
| 119 Disallow: /a%3Cd.html | |
| 120 Disallow: /a/b.html | |
| 121 Disallow: /%7ejoe/index.html | |
| 122 """ | |
| 123 | |
| 124 good = ['/tmp',] # XFAIL: '/a%2fb.html' | |
| 125 bad = ['/tmp/','/tmp/a.html', | |
| 126 '/a%3cd.html','/a%3Cd.html',"/a/b.html", | |
|
23075
b7e87732f6ab
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
22088
diff
changeset
|
127 '/%7Ejoe/index.html'] |
| 22088 | 128 |
| 129 RobotTest(6, doc, good, bad) | |
| 130 | |
| 131 # From bug report #523041 | |
| 132 | |
| 133 # 7. | |
| 134 doc = """ | |
| 135 User-Agent: * | |
| 136 Disallow: /. | |
| 137 """ | |
| 138 | |
| 139 good = ['/foo.html'] | |
| 140 bad = [] # Bug report says "/" should be denied, but that is not in the RFC | |
| 141 | |
| 142 RobotTest(7, doc, good, bad) | |
| 143 | |
|
48594
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
144 # From Google: http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=40364 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
145 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
146 # 8. |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
147 doc = """ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
148 User-agent: Googlebot |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
149 Allow: /folder1/myfile.html |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
150 Disallow: /folder1/ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
151 """ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
152 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
153 good = ['/folder1/myfile.html'] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
154 bad = ['/folder1/anotherfile.html'] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
155 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
156 RobotTest(8, doc, good, bad, agent="Googlebot") |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
157 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
158 # 9. This file is incorrect because "Googlebot" is a substring of |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
159 # "Googlebot-Mobile", so test 10 works just like test 9. |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
160 doc = """ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
161 User-agent: Googlebot |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
162 Disallow: / |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
163 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
164 User-agent: Googlebot-Mobile |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
165 Allow: / |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
166 """ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
167 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
168 good = [] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
169 bad = ['/something.jpg'] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
170 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
171 RobotTest(9, doc, good, bad, agent="Googlebot") |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
172 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
173 good = [] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
174 bad = ['/something.jpg'] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
175 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
176 RobotTest(10, doc, good, bad, agent="Googlebot-Mobile") |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
177 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
178 # 11. Get the order correct. |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
179 doc = """ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
180 User-agent: Googlebot-Mobile |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
181 Allow: / |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
182 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
183 User-agent: Googlebot |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
184 Disallow: / |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
185 """ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
186 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
187 good = [] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
188 bad = ['/something.jpg'] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
189 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
190 RobotTest(11, doc, good, bad, agent="Googlebot") |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
191 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
192 good = ['/something.jpg'] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
193 bad = [] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
194 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
195 RobotTest(12, doc, good, bad, agent="Googlebot-Mobile") |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
196 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
197 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
198 # 13. Google also got the order wrong in #8. You need to specify the |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
199 # URLs from more specific to more general. |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
200 doc = """ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
201 User-agent: Googlebot |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
202 Allow: /folder1/myfile.html |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
203 Disallow: /folder1/ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
204 """ |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
205 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
206 good = ['/folder1/myfile.html'] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
207 bad = ['/folder1/anotherfile.html'] |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
208 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
209 RobotTest(13, doc, good, bad, agent="googlebot") |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
210 |
|
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
211 |
|
63271
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
212 # 14. For issue #6325 (query string support) |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
213 doc = """ |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
214 User-agent: * |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
215 Disallow: /some/path?name=value |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
216 """ |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
217 |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
218 good = ['/some/path'] |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
219 bad = ['/some/path?name=value'] |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
220 |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
221 RobotTest(14, doc, good, bad) |
|
3119c4d7276b
Merged revisions 83209 via svnmerge from
Senthil Kumaran <orsenthil@gmail.com>
parents:
60202
diff
changeset
|
222 |
|
63464
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
223 # 15. For issue #4108 (obey first * entry) |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
224 doc = """ |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
225 User-agent: * |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
226 Disallow: /some/path |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
227 |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
228 User-agent: * |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
229 Disallow: /another/path |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
230 """ |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
231 |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
232 good = ['/another/path'] |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
233 bad = ['/some/path'] |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
234 |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
235 RobotTest(15, doc, good, bad) |
|
415ea2c3cfe8
Merged revisions 83238 via svnmerge from
Georg Brandl <georg@python.org>
parents:
63271
diff
changeset
|
236 |
|
83971
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
237 # 16. Empty query (issue #17403). Normalizing the url first. |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
238 doc = """ |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
239 User-agent: * |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
240 Allow: /some/path? |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
241 Disallow: /another/path? |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
242 """ |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
243 |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
244 good = ['/some/path?'] |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
245 bad = ['/another/path?'] |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
246 |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
247 RobotTest(16, doc, good, bad) |
|
30128355f53b
#17403: urllib.parse.robotparser normalizes the urls before adding to ruleline.
Senthil Kumaran <senthil@uthcode.com>
parents:
82625
diff
changeset
|
248 |
|
48594
35b1a20470db
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
48563
diff
changeset
|
249 |
|
48535
dece17edbed0
Bug 3347: robotparser failed because it didn't convert bytes to string.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
48334
diff
changeset
|
250 class NetworkTestCase(unittest.TestCase): |
|
dece17edbed0
Bug 3347: robotparser failed because it didn't convert bytes to string.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
48334
diff
changeset
|
251 |
|
dece17edbed0
Bug 3347: robotparser failed because it didn't convert bytes to string.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
48334
diff
changeset
|
252 def testPasswordProtectedSite(self): |
|
60202
5496503b8b1a
Merged revision 79605 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
253 support.requires('network') |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
254 with support.transient_internet('mueblesmoraleda.com'): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
255 url = 'http://mueblesmoraleda.com' |
|
71261
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
256 robots_url = url + "/robots.txt" |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
257 # First check the URL is usable for our purposes, since the |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
258 # test site is a bit flaky. |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
259 try: |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
260 urlopen(robots_url) |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
261 except HTTPError as e: |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
262 if e.code not in {401, 403}: |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
263 self.skipTest( |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
264 "%r should return a 401 or 403 HTTP error, not %r" |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
265 % (robots_url, e.code)) |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
266 else: |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
267 self.skipTest( |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
268 "%r should return a 401 or 403 HTTP error, not succeed" |
|
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
269 % (robots_url)) |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
270 parser = urllib.robotparser.RobotFileParser() |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
271 parser.set_url(url) |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
272 try: |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
273 parser.read() |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
274 except URLError: |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
275 self.skipTest('%s is unavailable' % url) |
|
71261
6e72490bbff6
Avoid failing in test_robotparser when mueblesmoraleda.com is flaky and
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
276 self.assertEqual(parser.can_fetch("*", robots_url), False) |
|
43095
4a07a288f5c4
Merged revisions 57620-57771 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
42501
diff
changeset
|
277 |
|
48535
dece17edbed0
Bug 3347: robotparser failed because it didn't convert bytes to string.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
48334
diff
changeset
|
278 def testPythonOrg(self): |
|
60202
5496503b8b1a
Merged revision 79605 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55593
diff
changeset
|
279 support.requires('network') |
|
64536
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
280 with support.transient_internet('www.python.org'): |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
281 parser = urllib.robotparser.RobotFileParser( |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
282 "http://www.python.org/robots.txt") |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
283 parser.read() |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
284 self.assertTrue( |
|
2400f55ea312
Merged revisions 84597-84599 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63464
diff
changeset
|
285 parser.can_fetch("*", "http://www.python.org/robots.txt")) |
|
48535
dece17edbed0
Bug 3347: robotparser failed because it didn't convert bytes to string.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
48334
diff
changeset
|
286 |
|
82625
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
287 def load_tests(loader, suite, pattern): |
|
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
288 suite = unittest.makeSuite(NetworkTestCase) |
|
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
289 suite.addTest(tests) |
|
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
290 return suite |
| 22088 | 291 |
| 292 if __name__=='__main__': | |
|
82625
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
293 support.use_resources = ['network'] |
|
fa051c6276a0
#17066: test_robotparser now works with unittest test discovery. Patch by Zachary Ware.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
71261
diff
changeset
|
294 unittest.main() |
