]> granicus.if.org Git - python/commitdiff
Merged revisions 83818 via svnmerge from
authorSenthil Kumaran <orsenthil@gmail.com>
Sun, 8 Aug 2010 11:43:45 +0000 (11:43 +0000)
committerSenthil Kumaran <orsenthil@gmail.com>
Sun, 8 Aug 2010 11:43:45 +0000 (11:43 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r83818 | senthil.kumaran | 2010-08-08 16:57:53 +0530 (Sun, 08 Aug 2010) | 4 lines

  Fix Issue8280 - urllib2's Request method will remove fragements in the url.
  This is how it should work,wget and curl work like this way too. Old behavior was wrong.
........

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

index 23631f657fede157fbcad7efa6e6566da1ed6207..87030819c5da51f37a89f8d0852066fa8463f2f4 100644 (file)
@@ -1237,6 +1237,16 @@ class RequestTests(unittest.TestCase):
         self.assertEqual("www.python.org", self.get.get_origin_req_host())
         self.assertEqual("www.perl.org", self.get.get_host())
 
+    def test_wrapped_url(self):
+        req = Request("<URL:http://www.python.org>")
+        self.assertEqual("www.python.org", req.get_host())
+
+    def test_urlwith_fragment(self):
+        req = Request("http://www.python.org/?qs=query#fragment=true")
+        self.assertEqual("/?qs=query", req.get_selector())
+        req = Request("http://www.python.org/#fun=true")
+        self.assertEqual("/", req.get_selector())
+
 
 def test_main(verbose=None):
     from test import test_urllib2
index d2762dcf029092ef0c85219728411f40670942b9..4da38eff24d4783ba827c66d1cf2b71abf51acbe 100644 (file)
@@ -154,6 +154,13 @@ class OtherNetworkTests(unittest.TestCase):
 
 ##             self._test_urls(urls, self._extra_handlers()+[bauth, dauth])
 
+    def test_urlwithfrag(self):
+        urlwith_frag = "http://docs.python.org/glossary.html#glossary"
+        req = urllib2.Request(urlwith_frag)
+        res = urllib2.urlopen(req)
+        self.assertEqual(res.geturl(),
+                "http://docs.python.org/glossary.html")
+
     def _test_urls(self, urls, handlers, retry=True):
         import time
         import logging
index f6f7be9092ae3ae99d9b2f8558785bf6117a4b5a..d0e81a8084f71476c7e7582c5b21b0918cf9e193 100644 (file)
@@ -109,7 +109,7 @@ except ImportError:
     from StringIO import StringIO
 
 from urllib import (unwrap, unquote, splittype, splithost, quote,
-     addinfourl, splitport,
+     addinfourl, splitport, splittag,
      splitattr, ftpwrapper, splituser, splitpasswd, splitvalue)
 
 # support for FileHandler, proxies via environment variables
@@ -190,6 +190,7 @@ class Request:
                  origin_req_host=None, unverifiable=False):
         # unwrap('<URL:type://host/path>') --> 'type://host/path'
         self.__original = unwrap(url)
+        self.__original, fragment = splittag(self.__original)
         self.type = None
         # self.__r_type is what's left after doing the splittype
         self.host = None