mirror of https://github.com/python/cpython
Fix for the Issue918368 - urllib doesn't correct server returned urls
This commit is contained in:
parent
a7e734fcee
commit
7c2867fcb1
|
@ -598,6 +598,18 @@ class Utility_Tests(unittest.TestCase):
|
|||
self.assertEqual(('user', 'a:b'),urllib.splitpasswd('user:a:b'))
|
||||
|
||||
|
||||
class URLopener_Tests(unittest.TestCase):
|
||||
"""Testcase to test the open method of URLopener class."""
|
||||
|
||||
def test_quoted_open(self):
|
||||
class DummyURLopener(urllib.URLopener):
|
||||
def open_spam(self, url):
|
||||
return url
|
||||
|
||||
self.assertEqual(DummyURLopener().open(
|
||||
'spam://example/ /'),'//example/%20/')
|
||||
|
||||
|
||||
# Just commented them out.
|
||||
# Can't really tell why keep failing in windows and sparc.
|
||||
# Everywhere else they work ok, but on those machines, someteimes
|
||||
|
@ -693,6 +705,7 @@ def test_main():
|
|||
urlencode_Tests,
|
||||
Pathname_Tests,
|
||||
Utility_Tests,
|
||||
URLopener_Tests,
|
||||
#FTPWrapperTests,
|
||||
)
|
||||
|
||||
|
|
|
@ -176,6 +176,9 @@ class URLopener:
|
|||
def open(self, fullurl, data=None):
|
||||
"""Use URLopener().open(file) instead of open(file, 'r')."""
|
||||
fullurl = unwrap(toBytes(fullurl))
|
||||
# percent encode url, fixing lame server errors for e.g, like space
|
||||
# within url paths.
|
||||
fullurl = quote(fullurl, safe="%/:=&?~#+!$,;'@()*[]")
|
||||
if self.tempcache and fullurl in self.tempcache:
|
||||
filename, headers = self.tempcache[fullurl]
|
||||
fp = open(filename, 'rb')
|
||||
|
|
Loading…
Reference in New Issue