[Checkins] SVN: zope.testbrowser/trunk/ Provide a work around for mechanize/urllib2 that have a broken fragment URL

Christian Theune ct at gocept.com
Fri Aug 15 09:19:55 EDT 2008


Log message for revision 89880:
  Provide a work around for mechanize/urllib2 that have a broken fragment URL
  - Provide a work around for a mechanize/urllib2 bug in creating request
    objects that won't handle fragment URLs correctly.
  

Changed:
  U   zope.testbrowser/trunk/CHANGES.txt
  U   zope.testbrowser/trunk/src/zope/testbrowser/fixed-bugs.txt
  A   zope.testbrowser/trunk/src/zope/testbrowser/ftests/fragment.html
  U   zope.testbrowser/trunk/src/zope/testbrowser/testing.py

-=-
Modified: zope.testbrowser/trunk/CHANGES.txt
===================================================================
--- zope.testbrowser/trunk/CHANGES.txt	2008-08-15 12:51:12 UTC (rev 89879)
+++ zope.testbrowser/trunk/CHANGES.txt	2008-08-15 13:19:55 UTC (rev 89880)
@@ -6,6 +6,9 @@
 3.5.0 (unreleased)
 ------------------
 
+- Provide a work around for a mechanize/urllib2 bug in creating request
+  objects that won't handle fragment URLs correctly.
+
 - Added a zope.testbrowser.testing.Browser.post method that allows
   tests to supply a body and a content type.  This is handy for
   testing Ajax requests with non-form input (e.g. JSON).

Modified: zope.testbrowser/trunk/src/zope/testbrowser/fixed-bugs.txt
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/fixed-bugs.txt	2008-08-15 12:51:12 UTC (rev 89879)
+++ zope.testbrowser/trunk/src/zope/testbrowser/fixed-bugs.txt	2008-08-15 13:19:55 UTC (rev 89880)
@@ -75,3 +75,18 @@
     >>> browser.getControl('Three').optionValue
     '3'
 
+
+Fragment URLs
+=============
+
+Earlier versions of mechanize used to incorrectly follow links containing
+fragments. We upgraded our dependency to a newer version of mechanize and make
+sure this regression doesn't come back:
+
+    >>> import ClientForm
+    >>> browser.open('http://localhost/@@/testbrowser/fragment.html#asdf')
+    >>> browser.url
+    'http://localhost/@@/testbrowser/fragment.html#asdf'
+    >>> browser.getLink('Follow me')
+    <Link text='Follow me' url='http://localhost/@@/testbrowser/fragment.html#foo'>
+    >>> browser.getLink('Follow me').click()

Added: zope.testbrowser/trunk/src/zope/testbrowser/ftests/fragment.html
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/ftests/fragment.html	                        (rev 0)
+++ zope.testbrowser/trunk/src/zope/testbrowser/ftests/fragment.html	2008-08-15 13:19:55 UTC (rev 89880)
@@ -0,0 +1,5 @@
+<html>
+  <body>
+    <a href="http://localhost/@@/testbrowser/fragment.html#foo">Follow me</a>
+  </body>
+</html>

Modified: zope.testbrowser/trunk/src/zope/testbrowser/testing.py
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/testing.py	2008-08-15 12:51:12 UTC (rev 89879)
+++ zope.testbrowser/trunk/src/zope/testbrowser/testing.py	2008-08-15 13:19:55 UTC (rev 89880)
@@ -158,6 +158,9 @@
         for name in inherited_handlers:
             self.handler_classes[name] = mechanize.Browser.handler_classes[name]
 
+        kws['request_class'] = kws.get('request_class',
+                                       mechanize._request.Request)
+
         mechanize.Browser.__init__(self, *args, **kws)
 
 



More information about the Checkins mailing list