summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSenthil Kumaran <orsenthil@gmail.com>2010-08-08 11:30:58 +0000
committerSenthil Kumaran <orsenthil@gmail.com>2010-08-08 11:30:58 +0000
commit4c88db77a057ebe0a5a5496152d2099cf760e837 (patch)
treea4da8f131b4559913fb127cc6f152dd514934a9b
parent10215de1ba09b7608a390aeecbd6cde77c8522f1 (diff)
downloadcpython-git-4c88db77a057ebe0a5a5496152d2099cf760e837.tar.gz
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. ........
-rw-r--r--Lib/test/test_urllib2.py10
-rw-r--r--Lib/test/test_urllib2net.py7
-rw-r--r--Lib/urllib/request.py3
3 files changed, 19 insertions, 1 deletions
diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py
index 9d1ed9b616..83bd467177 100644
--- a/Lib/test/test_urllib2.py
+++ b/Lib/test/test_urllib2.py
@@ -1250,6 +1250,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
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py
index 0f109dc22a..eab9306ab9 100644
--- a/Lib/test/test_urllib2net.py
+++ b/Lib/test/test_urllib2net.py
@@ -152,6 +152,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 = urllib.request.Request(urlwith_frag)
+ res = urllib.request.urlopen(req)
+ self.assertEqual(res.geturl(),
+ "http://docs.python.org/glossary.html")
+
def _test_urls(self, urls, handlers, retry=True):
import socket
import time
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index a26b763231..3ea38f2bf0 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -99,7 +99,7 @@ from urllib.error import URLError, HTTPError, ContentTooShortError
from urllib.parse import (
urlparse, urlsplit, urljoin, unwrap, quote, unquote,
splittype, splithost, splitport, splituser, splitpasswd,
- splitattr, splitquery, splitvalue, to_bytes, urlunparse)
+ splitattr, splitquery, splitvalue, splittag, to_bytes, urlunparse)
from urllib.response import addinfourl, addclosehook
# check for SSL
@@ -163,6 +163,7 @@ class Request:
origin_req_host=None, unverifiable=False):
# unwrap('<URL:type://host/path>') --> 'type://host/path'
self.full_url = unwrap(url)
+ self.full_url, fragment = splittag(self.full_url)
self.data = data
self.headers = {}
self._tunnel_host = None