mirror of https://github.com/python/cpython
Merged revisions 82881 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r82881 | senthil.kumaran | 2010-07-14 15:51:22 +0530 (Wed, 14 Jul 2010) | 3 lines Fix Issue5842 - Moving the tests out of urllib.parse module ........
This commit is contained in:
parent
5a5031f535
commit
a6c03197fd
|
@ -7,6 +7,7 @@ import urllib.parse
|
||||||
RFC1808_BASE = "http://a/b/c/d;p?q#f"
|
RFC1808_BASE = "http://a/b/c/d;p?q#f"
|
||||||
RFC2396_BASE = "http://a/b/c/d;p?q"
|
RFC2396_BASE = "http://a/b/c/d;p?q"
|
||||||
RFC3986_BASE = 'http://a/b/c/d;p?q'
|
RFC3986_BASE = 'http://a/b/c/d;p?q'
|
||||||
|
SIMPLE_BASE = 'http://a/b/c/d'
|
||||||
|
|
||||||
# A list of test cases. Each test case is a a two-tuple that contains
|
# A list of test cases. Each test case is a a two-tuple that contains
|
||||||
# a string with the query and a dictionary with the expected result.
|
# a string with the query and a dictionary with the expected result.
|
||||||
|
@ -292,6 +293,37 @@ class UrlParseTestCase(unittest.TestCase):
|
||||||
#self.checkJoin(RFC3986_BASE, 'http:g','http:g') # strict parser
|
#self.checkJoin(RFC3986_BASE, 'http:g','http:g') # strict parser
|
||||||
self.checkJoin(RFC3986_BASE, 'http:g','http://a/b/c/g') #relaxed parser
|
self.checkJoin(RFC3986_BASE, 'http:g','http://a/b/c/g') #relaxed parser
|
||||||
|
|
||||||
|
def test_urljoins(self):
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'g:h','g:h')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'http:','http://a/b/c/d')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'g','http://a/b/c/g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, './g','http://a/b/c/g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'g/','http://a/b/c/g/')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '/g','http://a/g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '//g','http://g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '?y','http://a/b/c/d?y')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'g?y','http://a/b/c/g?y')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'g?y/./x','http://a/b/c/g?y/./x')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '.','http://a/b/c/')
|
||||||
|
self.checkJoin(SIMPLE_BASE, './','http://a/b/c/')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '..','http://a/b/')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '../','http://a/b/')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '../g','http://a/b/g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '../..','http://a/')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '../../g','http://a/g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '../../../g','http://a/../g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, './../g','http://a/b/g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, './g/.','http://a/b/c/g/')
|
||||||
|
self.checkJoin(SIMPLE_BASE, '/./g','http://a/./g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'g/./h','http://a/b/c/g/h')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'g/../h','http://a/b/c/h')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'http:g','http://a/b/c/g')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'http:','http://a/b/c/d')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'http:?y','http://a/b/c/d?y')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'http:g?y','http://a/b/c/g?y')
|
||||||
|
self.checkJoin(SIMPLE_BASE, 'http:g?y/./x','http://a/b/c/g?y/./x')
|
||||||
|
|
||||||
def test_urldefrag(self):
|
def test_urldefrag(self):
|
||||||
for url, defrag, frag in [
|
for url, defrag, frag in [
|
||||||
('http://python.org#frag', 'http://python.org', 'frag'),
|
('http://python.org#frag', 'http://python.org', 'frag'),
|
||||||
|
|
|
@ -774,67 +774,3 @@ def splitvalue(attr):
|
||||||
match = _valueprog.match(attr)
|
match = _valueprog.match(attr)
|
||||||
if match: return match.group(1, 2)
|
if match: return match.group(1, 2)
|
||||||
return attr, None
|
return attr, None
|
||||||
|
|
||||||
test_input = """
|
|
||||||
http://a/b/c/d
|
|
||||||
|
|
||||||
g:h = <URL:g:h>
|
|
||||||
http:g = <URL:http://a/b/c/g>
|
|
||||||
http: = <URL:http://a/b/c/d>
|
|
||||||
g = <URL:http://a/b/c/g>
|
|
||||||
./g = <URL:http://a/b/c/g>
|
|
||||||
g/ = <URL:http://a/b/c/g/>
|
|
||||||
/g = <URL:http://a/g>
|
|
||||||
//g = <URL:http://g>
|
|
||||||
?y = <URL:http://a/b/c/d?y>
|
|
||||||
g?y = <URL:http://a/b/c/g?y>
|
|
||||||
g?y/./x = <URL:http://a/b/c/g?y/./x>
|
|
||||||
. = <URL:http://a/b/c/>
|
|
||||||
./ = <URL:http://a/b/c/>
|
|
||||||
.. = <URL:http://a/b/>
|
|
||||||
../ = <URL:http://a/b/>
|
|
||||||
../g = <URL:http://a/b/g>
|
|
||||||
../.. = <URL:http://a/>
|
|
||||||
../../g = <URL:http://a/g>
|
|
||||||
../../../g = <URL:http://a/../g>
|
|
||||||
./../g = <URL:http://a/b/g>
|
|
||||||
./g/. = <URL:http://a/b/c/g/>
|
|
||||||
/./g = <URL:http://a/./g>
|
|
||||||
g/./h = <URL:http://a/b/c/g/h>
|
|
||||||
g/../h = <URL:http://a/b/c/h>
|
|
||||||
http:g = <URL:http://a/b/c/g>
|
|
||||||
http: = <URL:http://a/b/c/d>
|
|
||||||
http:?y = <URL:http://a/b/c/d?y>
|
|
||||||
http:g?y = <URL:http://a/b/c/g?y>
|
|
||||||
http:g?y/./x = <URL:http://a/b/c/g?y/./x>
|
|
||||||
"""
|
|
||||||
|
|
||||||
def test():
|
|
||||||
base = ''
|
|
||||||
if sys.argv[1:]:
|
|
||||||
fn = sys.argv[1]
|
|
||||||
if fn == '-':
|
|
||||||
fp = sys.stdin
|
|
||||||
else:
|
|
||||||
fp = open(fn)
|
|
||||||
else:
|
|
||||||
from io import StringIO
|
|
||||||
fp = StringIO(test_input)
|
|
||||||
for line in fp:
|
|
||||||
words = line.split()
|
|
||||||
if not words:
|
|
||||||
continue
|
|
||||||
url = words[0]
|
|
||||||
parts = urlparse(url)
|
|
||||||
print('%-10s : %s' % (url, parts))
|
|
||||||
abs = urljoin(base, url)
|
|
||||||
if not base:
|
|
||||||
base = abs
|
|
||||||
wrapped = '<URL:%s>' % abs
|
|
||||||
print('%-10s = %s' % (url, wrapped))
|
|
||||||
if len(words) == 3 and words[1] == '=':
|
|
||||||
if wrapped != words[2]:
|
|
||||||
print('EXPECTED', words[2], '!!!!!!!!!!')
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
test()
|
|
||||||
|
|
Loading…
Reference in New Issue