]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Patch [ 972332 ] urllib2 FTPHandler bugs / John J. Lee
authorKurt B. Kaiser <kbk@shore.net>
Sun, 11 Jul 2004 17:14:13 +0000 (17:14 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Sun, 11 Jul 2004 17:14:13 +0000 (17:14 +0000)
Modified Files:
urllib2.py test/test_urllib2.py

Lib/test/test_urllib2.py
Lib/urllib2.py

index 27b503892763fb89ec6f013645fbb72b6b09b6ae..6e9901f5699f8991f43fc98a87bd001837cd0c44 100644 (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):
index 84d4c341c38545b0077b22ed56845f60b7fc4ad8..8d38749f72014947ebec227cc1e9159c11e541a9 100644 (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()