mirror of https://github.com/python/cpython
Fix for issue1153027, making Py3k changes similar to fix in issue918368.
This will address: a) urllib/ in py3k, b) urllib in py2x is addressed by issue918368. c) urllib2 in py2x was already addressed in Revision 43132.
This commit is contained in:
parent
501927d541
commit
690ce9b353
|
@ -56,7 +56,7 @@ def pathname2url(p):
|
||||||
|
|
||||||
drive = urllib.parse.quote(comp[0].upper())
|
drive = urllib.parse.quote(comp[0].upper())
|
||||||
components = comp[1].split('\\')
|
components = comp[1].split('\\')
|
||||||
path = '///' + drive + '|'
|
path = '///' + drive + ':'
|
||||||
for comp in components:
|
for comp in components:
|
||||||
if comp:
|
if comp:
|
||||||
path = path + '/' + urllib.parse.quote(comp)
|
path = path + '/' + urllib.parse.quote(comp)
|
||||||
|
|
|
@ -837,6 +837,18 @@ class Utility_Tests(unittest.TestCase):
|
||||||
self.assertEqual(('user', 'a\vb'),urllib.parse.splitpasswd('user:a\vb'))
|
self.assertEqual(('user', 'a\vb'),urllib.parse.splitpasswd('user:a\vb'))
|
||||||
self.assertEqual(('user', 'a:b'),urllib.parse.splitpasswd('user:a:b'))
|
self.assertEqual(('user', 'a:b'),urllib.parse.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.request.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
|
||||||
|
@ -928,6 +940,7 @@ def test_main():
|
||||||
urlencode_Tests,
|
urlencode_Tests,
|
||||||
Pathname_Tests,
|
Pathname_Tests,
|
||||||
Utility_Tests,
|
Utility_Tests,
|
||||||
|
URLopener_Tests,
|
||||||
#FTPWrapperTests,
|
#FTPWrapperTests,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1398,6 +1398,7 @@ 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(to_bytes(fullurl))
|
fullurl = unwrap(to_bytes(fullurl))
|
||||||
|
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')
|
||||||
|
|
Loading…
Reference in New Issue