self.assertIsInstance(self.returned_obj.headers, email.message.Message)
def test_url(self):
- self.assertEqual(self.returned_obj.url, "file://" + self.quoted_pathname)
+ self.assertEqual(self.returned_obj.url, "file:" + self.quoted_pathname)
def test_status(self):
self.assertIsNone(self.returned_obj.status)
self.assertIsInstance(self.returned_obj.info(), email.message.Message)
def test_geturl(self):
- self.assertEqual(self.returned_obj.geturl(), "file://" + self.quoted_pathname)
+ self.assertEqual(self.returned_obj.geturl(), "file:" + self.quoted_pathname)
def test_getcode(self):
self.assertIsNone(self.returned_obj.getcode())
def test_file_notexists(self):
fd, tmp_file = tempfile.mkstemp()
- tmp_fileurl = 'file://localhost/' + tmp_file.replace(os.path.sep, '/')
+ tmp_file_canon_url = 'file:' + urllib.request.pathname2url(tmp_file)
+ parsed = urllib.parse.urlsplit(tmp_file_canon_url)
+ tmp_fileurl = parsed._replace(netloc='localhost').geturl()
try:
self.assertTrue(os.path.exists(tmp_file))
with urllib.request.urlopen(tmp_fileurl) as fobj:
self.assertTrue(fobj)
+ self.assertEqual(fobj.url, tmp_file_canon_url)
finally:
os.close(fd)
os.unlink(tmp_file)
def constructLocalFileUrl(self, filePath):
filePath = os.path.abspath(filePath)
- return "file://%s" % urllib.request.pathname2url(filePath)
+ return "file:" + urllib.request.pathname2url(filePath)
def createNewTempFile(self, data=b""):
"""Creates a new temporary file containing the specified data,
_proxy_bypass_winreg_override,
_proxy_bypass_macosx_sysconf,
AbstractDigestAuthHandler)
-from urllib.parse import urlparse
+from urllib.parse import urlsplit
import urllib.error
import http.client
self.assertIsInstance(args[1], MockResponse)
-def sanepathname2url(path):
- urlpath = urllib.request.pathname2url(path)
- if os.name == "nt" and urlpath.startswith("///"):
- urlpath = urlpath[2:]
- # XXX don't ask me about the mac...
- return urlpath
-
-
class HandlerTests(unittest.TestCase):
def test_ftp(self):
o = h.parent = MockOpener()
TESTFN = os_helper.TESTFN
- urlpath = sanepathname2url(os.path.abspath(TESTFN))
towrite = b"hello, world\n"
+ canonurl = 'file:' + urllib.request.pathname2url(os.path.abspath(TESTFN))
+ parsed = urlsplit(canonurl)
+ if parsed.netloc:
+ raise unittest.SkipTest("non-local working directory")
urls = [
- "file://localhost%s" % urlpath,
- "file://%s" % urlpath,
- "file://%s%s" % (socket.gethostbyname('localhost'), urlpath),
+ canonurl,
+ parsed._replace(netloc='localhost').geturl(),
+ parsed._replace(netloc=socket.gethostbyname('localhost')).geturl(),
]
try:
localaddr = socket.gethostbyname(socket.gethostname())
except socket.gaierror:
localaddr = ''
if localaddr:
- urls.append("file://%s%s" % (localaddr, urlpath))
+ urls.append(parsed._replace(netloc=localaddr).geturl())
for url in urls:
f = open(TESTFN, "wb")
self.assertEqual(headers["Content-type"], "text/plain")
self.assertEqual(headers["Content-length"], "13")
self.assertEqual(headers["Last-modified"], modified)
- self.assertEqual(respurl, url)
+ self.assertEqual(respurl, canonurl)
for url in [
- "file://localhost:80%s" % urlpath,
+ parsed._replace(netloc='localhost:80').geturl(),
"file:///file_does_not_exist.txt",
"file://not-a-local-host.com//dir/file.txt",
"file://%s:80%s/%s" % (socket.gethostbyname('localhost'),
r = Request('http://example.com')
for url in urls:
r.full_url = url
- parsed = urlparse(url)
+ parsed = urlsplit(url)
self.assertEqual(r.get_full_url(), url)
# full_url setter uses splittag to split into components.
# splittag sets the fragment as None while urlparse sets it to ''
self.assertEqual(r.fragment or '', parsed.fragment)
- self.assertEqual(urlparse(r.get_full_url()).query, parsed.query)
+ self.assertEqual(urlsplit(r.get_full_url()).query, parsed.query)
def test_full_url_deleter(self):
r = Request('http://www.example.com')