diff options
| author | Senthil Kumaran <orsenthil@gmail.com> | 2009-04-21 03:24:19 +0000 |
|---|---|---|
| committer | Senthil Kumaran <orsenthil@gmail.com> | 2009-04-21 03:24:19 +0000 |
| commit | 7c2867fcb1ade429a41e030585332ea26e3f60e1 (patch) | |
| tree | 25ce59314ae0bbace00216451fbf64ea1d3a6138 | |
| parent | a7e734fceeeda4cd5087a0fe2f11acf8c199962c (diff) | |
| download | cpython-git-7c2867fcb1ade429a41e030585332ea26e3f60e1.tar.gz | |
Fix for the Issue918368 - urllib doesn't correct server returned urls
| -rw-r--r-- | Lib/test/test_urllib.py | 13 | ||||
| -rw-r--r-- | Lib/urllib.py | 3 |
2 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py index 93921a67d6..eaacc394fb 100644 --- a/Lib/test/test_urllib.py +++ b/Lib/test/test_urllib.py @@ -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, ) diff --git a/Lib/urllib.py b/Lib/urllib.py index 1ac997e2d8..db2b49ec99 100644 --- a/Lib/urllib.py +++ b/Lib/urllib.py @@ -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') |
