[wwwsearch-commits] r43808 - in wwwsearch/mechanize/trunk: mechanize test

jjlee at codespeak.net jjlee at codespeak.net
Mon May 28 17:34:40 CEST 2007


Author: jjlee
Date: Mon May 28 17:34:39 2007
New Revision: 43808

Modified:
   wwwsearch/mechanize/trunk/mechanize/_rfc3986.py
   wwwsearch/mechanize/trunk/test/test_rfc3986.doctest
Log:
Fix exception raised by RFC 3986 implementation with urljoin(base, '/..')

Modified: wwwsearch/mechanize/trunk/mechanize/_rfc3986.py
==============================================================================
--- wwwsearch/mechanize/trunk/mechanize/_rfc3986.py	(original)
+++ wwwsearch/mechanize/trunk/mechanize/_rfc3986.py	Mon May 28 17:34:39 2007
@@ -200,7 +200,8 @@
             continue
         if path == "/..":
             path = "/"
-            r.pop()
+            if r:
+                r.pop()
             continue
         # D
         if path == ".":

Modified: wwwsearch/mechanize/trunk/test/test_rfc3986.doctest
==============================================================================
--- wwwsearch/mechanize/trunk/test/test_rfc3986.doctest	(original)
+++ wwwsearch/mechanize/trunk/test/test_rfc3986.doctest	Mon May 28 17:34:39 2007
@@ -59,6 +59,10 @@
 '/'
 >>> remove_dot_segments("./")
 ''
+>>> remove_dot_segments("/..")
+'/'
+>>> remove_dot_segments("/../")
+'/'
 
 
 Examples from RFC 3986 section 5.4
@@ -154,3 +158,11 @@
 'http://a/b/c/g#s/../x'
 >>> join("http:g")
 'http://a/b/c/g'
+
+
+Additional urljoin tests, not taken from RFC:
+
+>>> join("/..")
+'http://a/'
+>>> join("/../")
+'http://a/'


More information about the wwwsearch-commits mailing list