mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
amk's fix attached to
[ 516299 ] urlparse can get fragments wrong
This commit is contained in:
parent
5c137c2251
commit
bd3e771a97
3 changed files with 26 additions and 1 deletions
|
@ -1,4 +1,9 @@
|
||||||
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
|
||||||
|
|
||||||
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)
|
||||||
|
|
|
@ -86,6 +86,8 @@ def urlsplit(url, scheme='', allow_fragments=1):
|
||||||
url = url[i+1:]
|
url = url[i+1:]
|
||||||
if url[:2] == '//':
|
if url[:2] == '//':
|
||||||
i = url.find('/', 2)
|
i = url.find('/', 2)
|
||||||
|
if i < 0:
|
||||||
|
i = url.find('#')
|
||||||
if i < 0:
|
if i < 0:
|
||||||
i = len(url)
|
i = len(url)
|
||||||
netloc = url[2:i]
|
netloc = url[2:i]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue