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 @@ def test_proxy(self):
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

View File

@ -154,6 +154,13 @@ def test_file(self):
## 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

View File

@ -109,7 +109,7 @@
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 @@ def __init__(self, url, data=None, headers={},
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