[Python-checkins] CVS: python/dist/src/Lib/test test_urlparse.py,1.1,1.2
Fred L. Drake
python-dev@python.org
Thu, 04 Jan 2001 21:57:06 -0800
Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv5092/Lib/test
Modified Files:
test_urlparse.py
Log Message:
Add test cases based on RFC 1808. So now we actually have a test suite
the urljoin() function, which exercises the urlparse() and urlunparse()
functions as side effects.
(Moshe, why did we have perfectly empty tests checked in for this?)
Index: test_urlparse.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_urlparse.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** test_urlparse.py 2000/08/03 17:28:50 1.1
--- test_urlparse.py 2001/01/05 05:57:04 1.2
***************
*** 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"