Kaydet (Commit) 7c2867fc authored tarafından Senthil Kumaran's avatar Senthil Kumaran

Fix for the Issue918368 - urllib doesn't correct server returned urls

üst a7e734fc
...@@ -598,6 +598,18 @@ class Utility_Tests(unittest.TestCase): ...@@ -598,6 +598,18 @@ class Utility_Tests(unittest.TestCase):
self.assertEqual(('user', 'a:b'),urllib.splitpasswd('user:a:b')) 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. # Just commented them out.
# Can't really tell why keep failing in windows and sparc. # Can't really tell why keep failing in windows and sparc.
# Everywhere else they work ok, but on those machines, someteimes # Everywhere else they work ok, but on those machines, someteimes
...@@ -693,6 +705,7 @@ def test_main(): ...@@ -693,6 +705,7 @@ def test_main():
urlencode_Tests, urlencode_Tests,
Pathname_Tests, Pathname_Tests,
Utility_Tests, Utility_Tests,
URLopener_Tests,
#FTPWrapperTests, #FTPWrapperTests,
) )
......
...@@ -176,6 +176,9 @@ class URLopener: ...@@ -176,6 +176,9 @@ class URLopener:
def open(self, fullurl, data=None): def open(self, fullurl, data=None):
"""Use URLopener().open(file) instead of open(file, 'r').""" """Use URLopener().open(file) instead of open(file, 'r')."""
fullurl = unwrap(toBytes(fullurl)) 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: if self.tempcache and fullurl in self.tempcache:
filename, headers = self.tempcache[fullurl] filename, headers = self.tempcache[fullurl]
fp = open(filename, 'rb') fp = open(filename, 'rb')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment