Merged revisions 83818 via svnmerge from

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.
........
This commit is contained in:
Senthil Kumaran 2010-08-08 11:43:45 +00:00
parent 431774f32a
commit b4ec7ee486
3 changed files with 19 additions and 1 deletions

View file

@ -1237,6 +1237,16 @@ class RequestTests(unittest.TestCase):
self.assertEqual("www.python.org", self.get.get_origin_req_host()) self.assertEqual("www.python.org", self.get.get_origin_req_host())
self.assertEqual("www.perl.org", self.get.get_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): def test_main(verbose=None):
from test import test_urllib2 from test import test_urllib2

View file

@ -154,6 +154,13 @@ class OtherNetworkTests(unittest.TestCase):
## self._test_urls(urls, self._extra_handlers()+[bauth, dauth]) ## 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): def _test_urls(self, urls, handlers, retry=True):
import time import time
import logging import logging

View file

@ -109,7 +109,7 @@ except ImportError:
from StringIO import StringIO from StringIO import StringIO
from urllib import (unwrap, unquote, splittype, splithost, quote, from urllib import (unwrap, unquote, splittype, splithost, quote,
addinfourl, splitport, addinfourl, splitport, splittag,
splitattr, ftpwrapper, splituser, splitpasswd, splitvalue) splitattr, ftpwrapper, splituser, splitpasswd, splitvalue)
# support for FileHandler, proxies via environment variables # support for FileHandler, proxies via environment variables
@ -190,6 +190,7 @@ class Request:
origin_req_host=None, unverifiable=False): origin_req_host=None, unverifiable=False):
# unwrap('<URL:type://host/path>') --> 'type://host/path' # unwrap('<URL:type://host/path>') --> 'type://host/path'
self.__original = unwrap(url) self.__original = unwrap(url)
self.__original, fragment = splittag(self.__original)
self.type = None self.type = None
# self.__r_type is what's left after doing the splittype # self.__r_type is what's left after doing the splittype
self.host = None self.host = None