bpo-36948: Fix NameError in urllib.request.URLopener.retrieve (GH-13389)
This commit is contained in:
parent
a5119e7d75
commit
c661b30f89
|
@ -1445,7 +1445,7 @@ class Utility_Tests(unittest.TestCase):
|
|||
self.assertIsInstance(urllib.request.thishost(), tuple)
|
||||
|
||||
|
||||
class URLopener_Tests(unittest.TestCase):
|
||||
class URLopener_Tests(FakeHTTPMixin, unittest.TestCase):
|
||||
"""Testcase to test the open method of URLopener class."""
|
||||
|
||||
def test_quoted_open(self):
|
||||
|
@ -1463,6 +1463,24 @@ class URLopener_Tests(unittest.TestCase):
|
|||
"spam://c:|windows%/:=&?~#+!$,;'@()*[]|/path/"),
|
||||
"//c:|windows%/:=&?~#+!$,;'@()*[]|/path/")
|
||||
|
||||
@support.ignore_warnings(category=DeprecationWarning)
|
||||
def test_urlopener_retrieve_file(self):
|
||||
with support.temp_dir() as tmpdir:
|
||||
fd, tmpfile = tempfile.mkstemp(dir=tmpdir)
|
||||
os.close(fd)
|
||||
fileurl = "file:" + urllib.request.pathname2url(tmpfile)
|
||||
filename, _ = urllib.request.URLopener().retrieve(fileurl)
|
||||
self.assertEqual(filename, tmpfile)
|
||||
|
||||
@support.ignore_warnings(category=DeprecationWarning)
|
||||
def test_urlopener_retrieve_remote(self):
|
||||
url = "http://www.python.org/file.txt"
|
||||
self.fakehttp(b"HTTP/1.1 200 OK\r\n\r\nHello!")
|
||||
self.addCleanup(self.unfakehttp)
|
||||
filename, _ = urllib.request.URLopener().retrieve(url)
|
||||
self.assertEqual(os.path.splitext(filename)[1], ".txt")
|
||||
|
||||
|
||||
# Just commented them out.
|
||||
# Can't really tell why keep failing in windows and sparc.
|
||||
# Everywhere else they work ok, but on those machines, sometimes
|
||||
|
|
|
@ -1783,7 +1783,7 @@ class URLopener:
|
|||
fp = self.open_local_file(url1)
|
||||
hdrs = fp.info()
|
||||
fp.close()
|
||||
return url2pathname(splithost(url1)[1]), hdrs
|
||||
return url2pathname(_splithost(url1)[1]), hdrs
|
||||
except OSError as msg:
|
||||
pass
|
||||
fp = self.open(url, data)
|
||||
|
@ -1792,10 +1792,10 @@ class URLopener:
|
|||
if filename:
|
||||
tfp = open(filename, 'wb')
|
||||
else:
|
||||
garbage, path = splittype(url)
|
||||
garbage, path = splithost(path or "")
|
||||
path, garbage = splitquery(path or "")
|
||||
path, garbage = splitattr(path or "")
|
||||
garbage, path = _splittype(url)
|
||||
garbage, path = _splithost(path or "")
|
||||
path, garbage = _splitquery(path or "")
|
||||
path, garbage = _splitattr(path or "")
|
||||
suffix = os.path.splitext(path)[1]
|
||||
(fd, filename) = tempfile.mkstemp(suffix)
|
||||
self.__tempfiles.append(filename)
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Fix :exc:`NameError` in :meth:`urllib.request.URLopener.retrieve`. Patch by
|
||||
Karthikeyan Singaravelan.
|
Loading…
Reference in New Issue