2007-08-08 22:03:29 -03:00
|
|
|
import io
|
2008-06-18 17:49:58 -03:00
|
|
|
import unittest
|
|
|
|
import urllib.robotparser
|
2011-07-08 14:43:51 -03:00
|
|
|
from urllib.error import URLError, HTTPError
|
|
|
|
from urllib.request import urlopen
|
2008-05-20 18:35:26 -03:00
|
|
|
from test import support
|
2014-06-25 06:58:15 -03:00
|
|
|
from http.server import BaseHTTPRequestHandler, HTTPServer
|
2014-06-29 09:54:56 -03:00
|
|
|
try:
|
|
|
|
import threading
|
|
|
|
except ImportError:
|
|
|
|
threading = None
|
2014-06-25 06:58:15 -03:00
|
|
|
|
2002-02-28 11:24:47 -04:00
|
|
|
|
|
|
|
class RobotTestCase(unittest.TestCase):
|
2013-03-12 02:49:12 -03:00
|
|
|
def __init__(self, index=None, parser=None, url=None, good=None, agent=None):
|
|
|
|
# workaround to make unittest discovery work (see #17066)
|
|
|
|
if not isinstance(index, int):
|
|
|
|
return
|
2002-02-28 11:24:47 -04:00
|
|
|
unittest.TestCase.__init__(self)
|
|
|
|
if good:
|
|
|
|
self.str = "RobotTest(%d, good, %s)" % (index, url)
|
|
|
|
else:
|
|
|
|
self.str = "RobotTest(%d, bad, %s)" % (index, url)
|
|
|
|
self.parser = parser
|
|
|
|
self.url = url
|
|
|
|
self.good = good
|
|
|
|
self.agent = agent
|
|
|
|
|
|
|
|
def runTest(self):
|
|
|
|
if isinstance(self.url, tuple):
|
|
|
|
agent, url = self.url
|
|
|
|
else:
|
|
|
|
url = self.url
|
|
|
|
agent = self.agent
|
|
|
|
if self.good:
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(self.parser.can_fetch(agent, url))
|
2002-02-28 11:24:47 -04:00
|
|
|
else:
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertFalse(self.parser.can_fetch(agent, url))
|
2002-02-28 11:24:47 -04:00
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.str
|
|
|
|
|
|
|
|
tests = unittest.TestSuite()
|
|
|
|
|
|
|
|
def RobotTest(index, robots_txt, good_urls, bad_urls,
|
|
|
|
agent="test_robotparser"):
|
2002-04-15 22:38:40 -03:00
|
|
|
|
2007-08-08 22:03:29 -03:00
|
|
|
lines = io.StringIO(robots_txt).readlines()
|
2008-06-18 17:49:58 -03:00
|
|
|
parser = urllib.robotparser.RobotFileParser()
|
2002-04-15 22:38:40 -03:00
|
|
|
parser.parse(lines)
|
|
|
|
for url in good_urls:
|
|
|
|
tests.addTest(RobotTestCase(index, parser, url, 1, agent))
|
|
|
|
for url in bad_urls:
|
|
|
|
tests.addTest(RobotTestCase(index, parser, url, 0, agent))
|
2002-02-28 11:24:47 -04:00
|
|
|
|
|
|
|
# Examples from http://www.robotstxt.org/wc/norobots.html (fetched 2002)
|
|
|
|
|
|
|
|
# 1.
|
|
|
|
doc = """
|
|
|
|
User-agent: *
|
|
|
|
Disallow: /cyberworld/map/ # This is an infinite virtual URL space
|
|
|
|
Disallow: /tmp/ # these will soon disappear
|
|
|
|
Disallow: /foo.html
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = ['/','/test.html']
|
|
|
|
bad = ['/cyberworld/map/index.html','/tmp/xxx','/foo.html']
|
|
|
|
|
|
|
|
RobotTest(1, doc, good, bad)
|
|
|
|
|
|
|
|
# 2.
|
|
|
|
doc = """
|
|
|
|
# robots.txt for http://www.example.com/
|
|
|
|
|
|
|
|
User-agent: *
|
|
|
|
Disallow: /cyberworld/map/ # This is an infinite virtual URL space
|
|
|
|
|
|
|
|
# Cybermapper knows where to go.
|
|
|
|
User-agent: cybermapper
|
|
|
|
Disallow:
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = ['/','/test.html',('cybermapper','/cyberworld/map/index.html')]
|
|
|
|
bad = ['/cyberworld/map/index.html']
|
|
|
|
|
|
|
|
RobotTest(2, doc, good, bad)
|
|
|
|
|
|
|
|
# 3.
|
|
|
|
doc = """
|
|
|
|
# go away
|
|
|
|
User-agent: *
|
|
|
|
Disallow: /
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = []
|
|
|
|
bad = ['/cyberworld/map/index.html','/','/tmp/']
|
|
|
|
|
|
|
|
RobotTest(3, doc, good, bad)
|
|
|
|
|
|
|
|
# Examples from http://www.robotstxt.org/wc/norobots-rfc.html (fetched 2002)
|
|
|
|
|
|
|
|
# 4.
|
|
|
|
doc = """
|
|
|
|
User-agent: figtree
|
|
|
|
Disallow: /tmp
|
|
|
|
Disallow: /a%3cd.html
|
|
|
|
Disallow: /a%2fb.html
|
|
|
|
Disallow: /%7ejoe/index.html
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = [] # XFAIL '/a/b.html'
|
|
|
|
bad = ['/tmp','/tmp.html','/tmp/a.html',
|
|
|
|
'/a%3cd.html','/a%3Cd.html','/a%2fb.html',
|
|
|
|
'/~joe/index.html'
|
|
|
|
]
|
|
|
|
|
|
|
|
RobotTest(4, doc, good, bad, 'figtree')
|
|
|
|
RobotTest(5, doc, good, bad, 'FigTree Robot libwww-perl/5.04')
|
|
|
|
|
|
|
|
# 6.
|
|
|
|
doc = """
|
|
|
|
User-agent: *
|
|
|
|
Disallow: /tmp/
|
|
|
|
Disallow: /a%3Cd.html
|
|
|
|
Disallow: /a/b.html
|
|
|
|
Disallow: /%7ejoe/index.html
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = ['/tmp',] # XFAIL: '/a%2fb.html'
|
|
|
|
bad = ['/tmp/','/tmp/a.html',
|
|
|
|
'/a%3cd.html','/a%3Cd.html',"/a/b.html",
|
2002-04-15 22:38:40 -03:00
|
|
|
'/%7Ejoe/index.html']
|
2002-02-28 11:24:47 -04:00
|
|
|
|
|
|
|
RobotTest(6, doc, good, bad)
|
|
|
|
|
|
|
|
# From bug report #523041
|
|
|
|
|
|
|
|
# 7.
|
|
|
|
doc = """
|
|
|
|
User-Agent: *
|
|
|
|
Disallow: /.
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = ['/foo.html']
|
|
|
|
bad = [] # Bug report says "/" should be denied, but that is not in the RFC
|
|
|
|
|
|
|
|
RobotTest(7, doc, good, bad)
|
|
|
|
|
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r65209 | raymond.hettinger | 2008-07-23 19:08:18 -0500 (Wed, 23 Jul 2008) | 1 line
Finish-up the partial conversion from int to Py_ssize_t for deque indices and length.
........
r65210 | raymond.hettinger | 2008-07-23 19:53:49 -0500 (Wed, 23 Jul 2008) | 1 line
Parse to the correct datatype.
........
r65211 | benjamin.peterson | 2008-07-23 21:27:46 -0500 (Wed, 23 Jul 2008) | 1 line
fix spacing
........
r65212 | benjamin.peterson | 2008-07-23 21:31:28 -0500 (Wed, 23 Jul 2008) | 1 line
fix markup
........
r65213 | benjamin.peterson | 2008-07-23 21:45:37 -0500 (Wed, 23 Jul 2008) | 1 line
add some documentation for 2to3
........
r65214 | raymond.hettinger | 2008-07-24 00:38:48 -0500 (Thu, 24 Jul 2008) | 1 line
Finish conversion from int to Py_ssize_t.
........
r65215 | raymond.hettinger | 2008-07-24 02:04:55 -0500 (Thu, 24 Jul 2008) | 1 line
Convert from long to Py_ssize_t.
........
r65216 | georg.brandl | 2008-07-24 02:09:21 -0500 (Thu, 24 Jul 2008) | 2 lines
Fix indentation.
........
r65225 | benjamin.peterson | 2008-07-25 11:55:37 -0500 (Fri, 25 Jul 2008) | 1 line
teach .bzrignore about doc tools
........
r65226 | benjamin.peterson | 2008-07-25 12:02:11 -0500 (Fri, 25 Jul 2008) | 1 line
document default value for fillvalue
........
r65233 | raymond.hettinger | 2008-07-25 13:43:33 -0500 (Fri, 25 Jul 2008) | 1 line
Issue 1592: Better error reporting for operations on closed shelves.
........
r65239 | benjamin.peterson | 2008-07-25 16:59:53 -0500 (Fri, 25 Jul 2008) | 1 line
fix indentation
........
r65246 | andrew.kuchling | 2008-07-26 08:08:19 -0500 (Sat, 26 Jul 2008) | 1 line
This sentence continues to bug me; rewrite it for the second time
........
r65247 | andrew.kuchling | 2008-07-26 08:09:06 -0500 (Sat, 26 Jul 2008) | 1 line
Remove extra words
........
r65255 | skip.montanaro | 2008-07-26 19:49:02 -0500 (Sat, 26 Jul 2008) | 3 lines
Close issue 3437 - missing state change when Allow lines are processed.
Adds test cases which use Allow: as well.
........
r65256 | skip.montanaro | 2008-07-26 19:50:41 -0500 (Sat, 26 Jul 2008) | 2 lines
note robotparser bug fix.
........
2008-07-31 13:23:04 -03:00
|
|
|
# From Google: http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=40364
|
|
|
|
|
|
|
|
# 8.
|
|
|
|
doc = """
|
|
|
|
User-agent: Googlebot
|
|
|
|
Allow: /folder1/myfile.html
|
|
|
|
Disallow: /folder1/
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = ['/folder1/myfile.html']
|
|
|
|
bad = ['/folder1/anotherfile.html']
|
|
|
|
|
|
|
|
RobotTest(8, doc, good, bad, agent="Googlebot")
|
|
|
|
|
|
|
|
# 9. This file is incorrect because "Googlebot" is a substring of
|
|
|
|
# "Googlebot-Mobile", so test 10 works just like test 9.
|
|
|
|
doc = """
|
|
|
|
User-agent: Googlebot
|
|
|
|
Disallow: /
|
|
|
|
|
|
|
|
User-agent: Googlebot-Mobile
|
|
|
|
Allow: /
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = []
|
|
|
|
bad = ['/something.jpg']
|
|
|
|
|
|
|
|
RobotTest(9, doc, good, bad, agent="Googlebot")
|
|
|
|
|
|
|
|
good = []
|
|
|
|
bad = ['/something.jpg']
|
|
|
|
|
|
|
|
RobotTest(10, doc, good, bad, agent="Googlebot-Mobile")
|
|
|
|
|
|
|
|
# 11. Get the order correct.
|
|
|
|
doc = """
|
|
|
|
User-agent: Googlebot-Mobile
|
|
|
|
Allow: /
|
|
|
|
|
|
|
|
User-agent: Googlebot
|
|
|
|
Disallow: /
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = []
|
|
|
|
bad = ['/something.jpg']
|
|
|
|
|
|
|
|
RobotTest(11, doc, good, bad, agent="Googlebot")
|
|
|
|
|
|
|
|
good = ['/something.jpg']
|
|
|
|
bad = []
|
|
|
|
|
|
|
|
RobotTest(12, doc, good, bad, agent="Googlebot-Mobile")
|
|
|
|
|
|
|
|
|
|
|
|
# 13. Google also got the order wrong in #8. You need to specify the
|
|
|
|
# URLs from more specific to more general.
|
|
|
|
doc = """
|
|
|
|
User-agent: Googlebot
|
|
|
|
Allow: /folder1/myfile.html
|
|
|
|
Disallow: /folder1/
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = ['/folder1/myfile.html']
|
|
|
|
bad = ['/folder1/anotherfile.html']
|
|
|
|
|
|
|
|
RobotTest(13, doc, good, bad, agent="googlebot")
|
|
|
|
|
|
|
|
|
2010-07-28 13:27:56 -03:00
|
|
|
# 14. For issue #6325 (query string support)
|
|
|
|
doc = """
|
|
|
|
User-agent: *
|
|
|
|
Disallow: /some/path?name=value
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = ['/some/path']
|
|
|
|
bad = ['/some/path?name=value']
|
|
|
|
|
|
|
|
RobotTest(14, doc, good, bad)
|
|
|
|
|
2010-07-29 14:55:01 -03:00
|
|
|
# 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)
|
|
|
|
|
2013-05-29 09:54:31 -03:00
|
|
|
# 16. Empty query (issue #17403). Normalizing the url first.
|
|
|
|
doc = """
|
|
|
|
User-agent: *
|
|
|
|
Allow: /some/path?
|
|
|
|
Disallow: /another/path?
|
|
|
|
"""
|
|
|
|
|
|
|
|
good = ['/some/path?']
|
|
|
|
bad = ['/another/path?']
|
|
|
|
|
|
|
|
RobotTest(16, doc, good, bad)
|
|
|
|
|
Merged revisions 65209-65216,65225-65226,65233,65239,65246-65247,65255-65256 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r65209 | raymond.hettinger | 2008-07-23 19:08:18 -0500 (Wed, 23 Jul 2008) | 1 line
Finish-up the partial conversion from int to Py_ssize_t for deque indices and length.
........
r65210 | raymond.hettinger | 2008-07-23 19:53:49 -0500 (Wed, 23 Jul 2008) | 1 line
Parse to the correct datatype.
........
r65211 | benjamin.peterson | 2008-07-23 21:27:46 -0500 (Wed, 23 Jul 2008) | 1 line
fix spacing
........
r65212 | benjamin.peterson | 2008-07-23 21:31:28 -0500 (Wed, 23 Jul 2008) | 1 line
fix markup
........
r65213 | benjamin.peterson | 2008-07-23 21:45:37 -0500 (Wed, 23 Jul 2008) | 1 line
add some documentation for 2to3
........
r65214 | raymond.hettinger | 2008-07-24 00:38:48 -0500 (Thu, 24 Jul 2008) | 1 line
Finish conversion from int to Py_ssize_t.
........
r65215 | raymond.hettinger | 2008-07-24 02:04:55 -0500 (Thu, 24 Jul 2008) | 1 line
Convert from long to Py_ssize_t.
........
r65216 | georg.brandl | 2008-07-24 02:09:21 -0500 (Thu, 24 Jul 2008) | 2 lines
Fix indentation.
........
r65225 | benjamin.peterson | 2008-07-25 11:55:37 -0500 (Fri, 25 Jul 2008) | 1 line
teach .bzrignore about doc tools
........
r65226 | benjamin.peterson | 2008-07-25 12:02:11 -0500 (Fri, 25 Jul 2008) | 1 line
document default value for fillvalue
........
r65233 | raymond.hettinger | 2008-07-25 13:43:33 -0500 (Fri, 25 Jul 2008) | 1 line
Issue 1592: Better error reporting for operations on closed shelves.
........
r65239 | benjamin.peterson | 2008-07-25 16:59:53 -0500 (Fri, 25 Jul 2008) | 1 line
fix indentation
........
r65246 | andrew.kuchling | 2008-07-26 08:08:19 -0500 (Sat, 26 Jul 2008) | 1 line
This sentence continues to bug me; rewrite it for the second time
........
r65247 | andrew.kuchling | 2008-07-26 08:09:06 -0500 (Sat, 26 Jul 2008) | 1 line
Remove extra words
........
r65255 | skip.montanaro | 2008-07-26 19:49:02 -0500 (Sat, 26 Jul 2008) | 3 lines
Close issue 3437 - missing state change when Allow lines are processed.
Adds test cases which use Allow: as well.
........
r65256 | skip.montanaro | 2008-07-26 19:50:41 -0500 (Sat, 26 Jul 2008) | 2 lines
note robotparser bug fix.
........
2008-07-31 13:23:04 -03:00
|
|
|
|
2014-06-25 06:58:15 -03:00
|
|
|
class RobotHandler(BaseHTTPRequestHandler):
|
|
|
|
|
|
|
|
def do_GET(self):
|
|
|
|
self.send_error(403, "Forbidden access")
|
|
|
|
|
|
|
|
def log_message(self, format, *args):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
2014-06-29 09:54:56 -03:00
|
|
|
@unittest.skipUnless(threading, 'threading required for this test')
|
2014-06-25 06:58:15 -03:00
|
|
|
class PasswordProtectedSiteTestCase(unittest.TestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
self.server = HTTPServer((support.HOST, 0), RobotHandler)
|
|
|
|
|
|
|
|
self.t = threading.Thread(
|
|
|
|
name='HTTPServer serving',
|
|
|
|
target=self.server.serve_forever,
|
|
|
|
# Short poll interval to make the test finish quickly.
|
|
|
|
# Time between requests is short enough that we won't wake
|
|
|
|
# up spuriously too many times.
|
|
|
|
kwargs={'poll_interval':0.01})
|
|
|
|
self.t.daemon = True # In case this function raises.
|
|
|
|
self.t.start()
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
self.server.shutdown()
|
|
|
|
self.t.join()
|
|
|
|
self.server.server_close()
|
|
|
|
|
|
|
|
def runTest(self):
|
|
|
|
self.testPasswordProtectedSite()
|
2008-07-18 17:59:44 -03:00
|
|
|
|
|
|
|
def testPasswordProtectedSite(self):
|
2014-06-25 06:58:15 -03:00
|
|
|
addr = self.server.server_address
|
|
|
|
url = 'http://' + support.HOST + ':' + str(addr[1])
|
|
|
|
robots_url = url + "/robots.txt"
|
|
|
|
parser = urllib.robotparser.RobotFileParser()
|
|
|
|
parser.set_url(url)
|
|
|
|
parser.read()
|
|
|
|
self.assertFalse(parser.can_fetch("*", robots_url))
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return '%s' % self.__class__.__name__
|
|
|
|
|
|
|
|
class NetworkTestCase(unittest.TestCase):
|
Merged revisions 57620-57771 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r57771 | thomas.wouters | 2007-08-30 23:54:39 +0200 (Thu, 30 Aug 2007) | 5 lines
Don't lie in __all__ attributes when SSL is not available: only add the SSL
classes when they are actually created.
........
r57620 | walter.doerwald | 2007-08-28 18:38:26 +0200 (Tue, 28 Aug 2007) | 5 lines
Fix title endtag in HTMLCalender.formatyearpage(). Fix documentation for
HTMLCalender.formatyearpage() (there's no themonth parameter).
This fixes issue1046.
........
r57622 | georg.brandl | 2007-08-28 20:54:44 +0200 (Tue, 28 Aug 2007) | 2 lines
Add a crasher for the thread-unsafety of file objects.
........
r57626 | skip.montanaro | 2007-08-29 01:22:52 +0200 (Wed, 29 Aug 2007) | 1 line
fixes 813986
........
r57628 | walter.doerwald | 2007-08-29 01:35:33 +0200 (Wed, 29 Aug 2007) | 2 lines
Fix test output.
........
r57631 | skip.montanaro | 2007-08-29 03:24:11 +0200 (Wed, 29 Aug 2007) | 2 lines
Install pygettext (once the scriptsinstall target is working again).
........
r57633 | skip.montanaro | 2007-08-29 03:33:45 +0200 (Wed, 29 Aug 2007) | 2 lines
Recent items.
........
r57650 | neal.norwitz | 2007-08-29 08:15:33 +0200 (Wed, 29 Aug 2007) | 1 line
Add Bill as a developer
........
r57651 | facundo.batista | 2007-08-29 12:28:28 +0200 (Wed, 29 Aug 2007) | 5 lines
Ignore test failures caused by 'resource temporarily unavailable'
exceptions raised during FailingServerTestCase tests.
[GSoC - Alan McIntyre]
........
r57680 | bill.janssen | 2007-08-30 00:35:05 +0200 (Thu, 30 Aug 2007) | 17 lines
This contains a number of things:
1) Improve the documentation of the SSL module, with a fuller
explanation of certificate usage, another reference, proper
formatting of this and that.
2) Fix Windows bug in ssl.py, and general bug in sslsocket.close().
Remove some unused code from ssl.py. Allow accept() to be called on
sslsocket sockets.
3) Use try-except-else in import of ssl in socket.py. Deprecate use of
socket.ssl().
4) Remove use of socket.ssl() in every library module, except for
test_socket_ssl.py and test_ssl.py.
........
r57714 | georg.brandl | 2007-08-30 12:09:42 +0200 (Thu, 30 Aug 2007) | 2 lines
Stronger urge to convert filenames to str before using them as argument to ZipFile.write().
........
r57716 | georg.brandl | 2007-08-30 12:38:56 +0200 (Thu, 30 Aug 2007) | 2 lines
Patch #1680959: add test suite for pipes module.
........
r57717 | georg.brandl | 2007-08-30 14:32:23 +0200 (Thu, 30 Aug 2007) | 3 lines
* Skip test_pipes on non-POSIX.
* Don't raise TestSkipped within a test function.
........
r57723 | mark.summerfield | 2007-08-30 17:03:03 +0200 (Thu, 30 Aug 2007) | 3 lines
Added more cross-references.
........
r57726 | walter.doerwald | 2007-08-30 17:30:09 +0200 (Thu, 30 Aug 2007) | 2 lines
Rewrap line.
........
r57727 | walter.doerwald | 2007-08-30 17:34:55 +0200 (Thu, 30 Aug 2007) | 2 lines
Set startinpos before calling the error handler.
........
r57730 | bill.janssen | 2007-08-30 19:07:28 +0200 (Thu, 30 Aug 2007) | 3 lines
Added docstrings to methods and functions.
........
r57743 | bill.janssen | 2007-08-30 20:08:06 +0200 (Thu, 30 Aug 2007) | 1 line
added note on new ssl module and deprecation of socket.ssl
........
r57747 | martin.v.loewis | 2007-08-30 20:14:01 +0200 (Thu, 30 Aug 2007) | 1 line
Fix popen usage.
........
r57748 | martin.v.loewis | 2007-08-30 20:15:22 +0200 (Thu, 30 Aug 2007) | 1 line
Fix typo.
........
r57750 | martin.v.loewis | 2007-08-30 20:25:47 +0200 (Thu, 30 Aug 2007) | 1 line
Bug #1746880: Correctly install DLLs into system32 folder on Win64.
........
r57760 | martin.v.loewis | 2007-08-30 21:04:09 +0200 (Thu, 30 Aug 2007) | 1 line
Bug #1709599: Run test_1565150 only if the file system is NTFS.
........
r57762 | martin.v.loewis | 2007-08-30 22:10:57 +0200 (Thu, 30 Aug 2007) | 2 lines
Bump autoconf minimum version to 2.61.
........
r57764 | lars.gustaebel | 2007-08-30 22:24:31 +0200 (Thu, 30 Aug 2007) | 2 lines
Warn about possible risks when extracting untrusted archives.
........
r57769 | thomas.wouters | 2007-08-30 23:01:17 +0200 (Thu, 30 Aug 2007) | 7 lines
Somewhat-preliminary slice-object and extended slicing support for ctypes.
The exact behaviour of omitted and negative indices for the Pointer type may
need a closer look (especially as it's subtly different from simple slices)
but there's time yet before 2.6, and not enough before 3.0a1 :-)
........
2007-08-30 19:15:33 -03:00
|
|
|
|
2014-02-23 03:45:15 -04:00
|
|
|
@unittest.skip('does not handle the gzip encoding delivered by pydotorg')
|
2008-07-18 17:59:44 -03:00
|
|
|
def testPythonOrg(self):
|
(partially)
Merged revisions 79534,79537,79539,79558,79606 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r79534 | florent.xicluna | 2010-03-31 23:21:54 +0200 (mer, 31 mar 2010) | 2 lines
Fix test for xml.etree when using a non-ascii path. And use check_warnings instead of catch_warnings.
........
r79537 | florent.xicluna | 2010-03-31 23:40:32 +0200 (mer, 31 mar 2010) | 2 lines
Fix typo
........
r79539 | florent.xicluna | 2010-04-01 00:01:03 +0200 (jeu, 01 avr 2010) | 2 lines
Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
........
r79558 | florent.xicluna | 2010-04-01 20:17:09 +0200 (jeu, 01 avr 2010) | 2 lines
#7092: Fix some -3 warnings, and fix Lib/platform.py when the path contains a double-quote.
........
r79606 | florent.xicluna | 2010-04-02 19:26:42 +0200 (ven, 02 avr 2010) | 2 lines
Backport some robotparser test and skip the test if the external resource is not available.
........
2010-04-02 15:52:12 -03:00
|
|
|
support.requires('network')
|
2010-09-07 18:09:09 -03:00
|
|
|
with support.transient_internet('www.python.org'):
|
|
|
|
parser = urllib.robotparser.RobotFileParser(
|
|
|
|
"http://www.python.org/robots.txt")
|
|
|
|
parser.read()
|
|
|
|
self.assertTrue(
|
|
|
|
parser.can_fetch("*", "http://www.python.org/robots.txt"))
|
2008-07-18 17:59:44 -03:00
|
|
|
|
2013-03-12 02:49:12 -03:00
|
|
|
def load_tests(loader, suite, pattern):
|
|
|
|
suite = unittest.makeSuite(NetworkTestCase)
|
|
|
|
suite.addTest(tests)
|
2014-06-25 06:58:15 -03:00
|
|
|
suite.addTest(PasswordProtectedSiteTestCase())
|
2013-03-12 02:49:12 -03:00
|
|
|
return suite
|
2002-02-28 11:24:47 -04:00
|
|
|
|
|
|
|
if __name__=='__main__':
|
2013-03-12 02:49:12 -03:00
|
|
|
unittest.main()
|