Commit bd3e771a authored by Michael W. Hudson's avatar Michael W. Hudson

amk's fix attached to

[ 516299 ] urlparse can get fragments wrong
parent 5c137c22
test_urlparse test_urlparse
http://www.python.org = ('http', 'www.python.org', '', '', '', '')
http://www.python.org#abc = ('http', 'www.python.org', '', '', '', 'abc')
http://www.python.org/#abc = ('http', 'www.python.org', '/', '', '', 'abc')
http://a/b/c/d;p?q#f = ('http', 'a', '/b/c/d', 'p', 'q', 'f')
urlparse.urljoin() tests urlparse.urljoin() tests
g:h = 'g:h' g:h = 'g:h'
......
...@@ -4,6 +4,24 @@ errors = 0 ...@@ -4,6 +4,24 @@ errors = 0
RFC1808_BASE = "http://a/b/c/d;p?q#f" RFC1808_BASE = "http://a/b/c/d;p?q#f"
for url, expected in [('http://www.python.org',
('http', 'www.python.org', '', '', '', '')),
('http://www.python.org#abc',
('http', 'www.python.org', '', '', '', 'abc')),
('http://www.python.org/#abc',
('http', 'www.python.org', '/', '', '', 'abc')),
(RFC1808_BASE,
('http', 'a', '/b/c/d', 'p', 'q', 'f')),
]:
result = urlparse.urlparse(url)
print "%-13s = %r" % (url, result)
if result != expected:
errors += 1
print "urlparse(%r)" % url
print ("expected %r,\n"
" got %r") % (expected, result)
print
def checkJoin(relurl, expected): def checkJoin(relurl, expected):
global errors global errors
result = urlparse.urljoin(RFC1808_BASE, relurl) result = urlparse.urljoin(RFC1808_BASE, relurl)
......
...@@ -87,7 +87,9 @@ def urlsplit(url, scheme='', allow_fragments=1): ...@@ -87,7 +87,9 @@ def urlsplit(url, scheme='', allow_fragments=1):
if url[:2] == '//': if url[:2] == '//':
i = url.find('/', 2) i = url.find('/', 2)
if i < 0: if i < 0:
i = len(url) i = url.find('#')
if i < 0:
i = len(url)
netloc = url[2:i] netloc = url[2:i]
url = url[i:] url = url[i:]
if allow_fragments and '#' in url: if allow_fragments and '#' in url:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment