Patch [ 972332 ] urllib2 FTPHandler bugs / John J. Lee

Modified Files:
	urllib2.py test/test_urllib2.py
This commit is contained in:
Kurt B. Kaiser 2004-07-11 17:14:13 +00:00
parent e246508779
commit 3f7cb5d9f5
2 changed files with 11 additions and 12 deletions

View File

@ -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):

View File

@ -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()