mirror of
https://github.com/python/cpython.git
synced 2024-11-25 10:54:51 +08:00
Patch [ 972332 ] urllib2 FTPHandler bugs / John J. Lee
Modified Files: urllib2.py test/test_urllib2.py
This commit is contained in:
parent
e246508779
commit
3f7cb5d9f5
@ -314,15 +314,12 @@ class HandlerTests(unittest.TestCase):
|
||||
("ftp://localhost/foo/bar/baz.html",
|
||||
"localhost", ftplib.FTP_PORT, "I",
|
||||
["foo", "bar"], "baz.html", "text/html"),
|
||||
# XXXX Bug: FTPHandler tries to gethostbyname "localhost:80", with the
|
||||
# port still there.
|
||||
## ("ftp://localhost:80/foo/bar/",
|
||||
## "localhost", 80, "D",
|
||||
## ["foo", "bar"], "", None),
|
||||
# XXXX bug: second use of splitattr() in FTPHandler should be splitvalue()
|
||||
## ("ftp://localhost/baz.gif;type=a",
|
||||
## "localhost", ftplib.FTP_PORT, "A",
|
||||
## [], "baz.gif", "image/gif"),
|
||||
("ftp://localhost:80/foo/bar/",
|
||||
"localhost", 80, "D",
|
||||
["foo", "bar"], "", None),
|
||||
("ftp://localhost/baz.gif;type=a",
|
||||
"localhost", ftplib.FTP_PORT, "A",
|
||||
[], "baz.gif", None), # XXX really this should guess image/gif
|
||||
]:
|
||||
r = h.ftp_open(Request(url))
|
||||
# ftp authentication not yet implemented by FTPHandler
|
||||
@ -333,7 +330,7 @@ class HandlerTests(unittest.TestCase):
|
||||
self.assertEqual(h.ftpwrapper.filename, filename)
|
||||
self.assertEqual(h.ftpwrapper.filetype, type_)
|
||||
headers = r.info()
|
||||
self.assertEqual(headers["Content-type"], mimetype)
|
||||
self.assertEqual(headers.get("Content-type"), mimetype)
|
||||
self.assertEqual(int(headers["Content-length"]), len(data))
|
||||
|
||||
def test_file(self):
|
||||
|
@ -116,7 +116,7 @@ except ImportError:
|
||||
# not sure how many of these need to be gotten rid of
|
||||
from urllib import unwrap, unquote, splittype, splithost, \
|
||||
addinfourl, splitport, splitgophertype, splitquery, \
|
||||
splitattr, ftpwrapper, noheaders, splituser, splitpasswd
|
||||
splitattr, ftpwrapper, noheaders, splituser, splitpasswd, splitvalue
|
||||
|
||||
# support for FileHandler, proxies via environment variables
|
||||
from urllib import localhost, url2pathname, getproxies
|
||||
@ -1143,6 +1143,8 @@ class FTPHandler(BaseHandler):
|
||||
host, port = splitport(host)
|
||||
if port is None:
|
||||
port = ftplib.FTP_PORT
|
||||
else:
|
||||
port = int(port)
|
||||
|
||||
# username/password handling
|
||||
user, host = splituser(host)
|
||||
@ -1168,7 +1170,7 @@ class FTPHandler(BaseHandler):
|
||||
fw = self.connect_ftp(user, passwd, host, port, dirs)
|
||||
type = file and 'I' or 'D'
|
||||
for attr in attrs:
|
||||
attr, value = splitattr(attr)
|
||||
attr, value = splitvalue(attr)
|
||||
if attr.lower() == 'type' and \
|
||||
value in ('a', 'A', 'i', 'I', 'd', 'D'):
|
||||
type = value.upper()
|
||||
|
Loading…
Reference in New Issue
Block a user