diff options
-rw-r--r-- | Lib/test/output/test_urlparse | 40 | ||||
-rw-r--r-- | Lib/test/test_urlparse.py | 66 |
2 files changed, 106 insertions, 0 deletions
diff --git a/Lib/test/output/test_urlparse b/Lib/test/output/test_urlparse index 612eb5c..ca71729 100644 --- a/Lib/test/output/test_urlparse +++ b/Lib/test/output/test_urlparse @@ -1 +1,41 @@ test_urlparse +urlparse.urljoin() tests + +g:h = 'g:h' +g = 'http://a/b/c/g' +./g = 'http://a/b/c/g' +g/ = 'http://a/b/c/g/' +/g = 'http://a/g' +//g = 'http://g' +?y = 'http://a/b/c/d;p?y' +g?y = 'http://a/b/c/g?y' +g?y/./x = 'http://a/b/c/g?y/./x' +#s = 'http://a/b/c/d;p?q#s' +g#s = 'http://a/b/c/g#s' +g#s/./x = 'http://a/b/c/g#s/./x' +g?y#s = 'http://a/b/c/g?y#s' +;x = 'http://a/b/c/d;x' +g;x = 'http://a/b/c/g;x' +g;x?y#s = 'http://a/b/c/g;x?y#s' +. = 'http://a/b/c/' +./ = 'http://a/b/c/' +.. = 'http://a/b/' +../ = 'http://a/b/' +../g = 'http://a/b/g' +../.. = 'http://a/' +../../ = 'http://a/' +../../g = 'http://a/g' + = 'http://a/b/c/d;p?q#f' +../../../g = 'http://a/../g' +../../../../g = 'http://a/../../g' +/./g = 'http://a/./g' +/../g = 'http://a/../g' +g. = 'http://a/b/c/g.' +.g = 'http://a/b/c/.g' +g.. = 'http://a/b/c/g..' +..g = 'http://a/b/c/..g' +./../g = 'http://a/b/g' +./g/. = 'http://a/b/c/g/' +g/./h = 'http://a/b/c/g/h' +g/../h = 'http://a/b/c/h' +0 errors diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py index e69de29..20336bc 100644 --- a/Lib/test/test_urlparse.py +++ b/Lib/test/test_urlparse.py @@ -0,0 +1,66 @@ +import urlparse + +errors = 0 + +RFC1808_BASE = "http://a/b/c/d;p?q#f" + +def checkJoin(relurl, expected): + global errors + result = urlparse.urljoin(RFC1808_BASE, relurl) + print "%-13s = %r" % (relurl, result) + if result != expected: + errors += 1 + print "urljoin(%r, %r)" % (RFC1808_BASE, relurl) + print ("expected %r,\n" + " got %r") % (expected, result) + +print "urlparse.urljoin() tests" +print + +# "normal" cases from RFC 1808: +checkJoin('g:h', 'g:h') +checkJoin('g', 'http://a/b/c/g') +checkJoin('./g', 'http://a/b/c/g') +checkJoin('g/', 'http://a/b/c/g/') +checkJoin('/g', 'http://a/g') +checkJoin('//g', 'http://g') +checkJoin('?y', 'http://a/b/c/d;p?y') +checkJoin('g?y', 'http://a/b/c/g?y') +checkJoin('g?y/./x', 'http://a/b/c/g?y/./x') +checkJoin('#s', 'http://a/b/c/d;p?q#s') +checkJoin('g#s', 'http://a/b/c/g#s') +checkJoin('g#s/./x', 'http://a/b/c/g#s/./x') +checkJoin('g?y#s', 'http://a/b/c/g?y#s') +checkJoin(';x', 'http://a/b/c/d;x') +checkJoin('g;x', 'http://a/b/c/g;x') +checkJoin('g;x?y#s', 'http://a/b/c/g;x?y#s') +checkJoin('.', 'http://a/b/c/') +checkJoin('./', 'http://a/b/c/') +checkJoin('..', 'http://a/b/') +checkJoin('../', 'http://a/b/') +checkJoin('../g', 'http://a/b/g') +checkJoin('../..', 'http://a/') +checkJoin('../../', 'http://a/') +checkJoin('../../g', 'http://a/g') + +# "abnormal" cases from RFC 1808: +checkJoin('', 'http://a/b/c/d;p?q#f') +checkJoin('../../../g', 'http://a/../g') +checkJoin('../../../../g', 'http://a/../../g') +checkJoin('/./g', 'http://a/./g') +checkJoin('/../g', 'http://a/../g') +checkJoin('g.', 'http://a/b/c/g.') +checkJoin('.g', 'http://a/b/c/.g') +checkJoin('g..', 'http://a/b/c/g..') +checkJoin('..g', 'http://a/b/c/..g') +checkJoin('./../g', 'http://a/b/g') +checkJoin('./g/.', 'http://a/b/c/g/') +checkJoin('g/./h', 'http://a/b/c/g/h') +checkJoin('g/../h', 'http://a/b/c/h') + +# RFC 1808 and RFC 1630 disagree on these (according to RFC 1808), +# so we'll not actually run these tests (which expect 1808 behavior). +#checkJoin('http:g', 'http:g') +#checkJoin('http:', 'http:') + +print errors, "errors" |