[Checkins] SVN: zope.testbrowser/branches/benji-remove-mechanize-vendor-import/ finish getting testbrowser working with current, non-patched mechanize

Benji York benji at zope.com
Sun Mar 23 20:49:39 EDT 2008


Log message for revision 84899:
  finish getting testbrowser working with current, non-patched mechanize
  

Changed:
  U   zope.testbrowser/branches/benji-remove-mechanize-vendor-import/buildout.cfg
  U   zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/browser.py
  A   zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/fixed-bugs.txt
  U   zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/over_the_wire.txt
  U   zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/tests.py

-=-
Modified: zope.testbrowser/branches/benji-remove-mechanize-vendor-import/buildout.cfg
===================================================================
--- zope.testbrowser/branches/benji-remove-mechanize-vendor-import/buildout.cfg	2008-03-24 00:47:19 UTC (rev 84898)
+++ zope.testbrowser/branches/benji-remove-mechanize-vendor-import/buildout.cfg	2008-03-24 00:49:38 UTC (rev 84899)
@@ -1,8 +1,14 @@
 [buildout]
 develop = .
 parts = test interpreter
-index = http://download.zope.org/zope3.4
+versions = versions
+extends = http://download.zope.org/zope3.4/versions.cfg
 
+[versions]
+zope.testbrowser =
+zope.publisher = 3.5.1
+zope.app.publication = 3.4.2
+
 [test]
 recipe = zc.recipe.testrunner
 defaults = ['--tests-pattern', '^f?tests$']

Modified: zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/browser.py
===================================================================
--- zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/browser.py	2008-03-24 00:47:19 UTC (rev 84898)
+++ zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/browser.py	2008-03-24 00:49:38 UTC (rev 84899)
@@ -223,6 +223,7 @@
 
     def open(self, url, data=None):
         """See zope.testbrowser.interfaces.IBrowser"""
+        url = str(url)
         self._start_timer()
         try:
             try:
@@ -280,7 +281,7 @@
 
     def addHeader(self, key, value):
         """See zope.testbrowser.interfaces.IBrowser"""
-        self.mech_browser.addheaders.append( (key, value) )
+        self.mech_browser.addheaders.append( (str(key), str(value)) )
 
     def getLink(self, text=None, url=None, id=None, index=0):
         """See zope.testbrowser.interfaces.IBrowser"""
@@ -386,8 +387,12 @@
         else:
             label = None
         self._start_timer()
-        self.mech_browser.open(form.click(
-            id=control.id, name=control.name, label=label, coord=coord))
+        try:
+            self.mech_browser.open(form.click(
+                id=control.id, name=control.name, label=label, coord=coord))
+        except Exception, e:
+            fix_exception_name(e)
+            raise
         self._stop_timer()
 
     def _changed(self):

Added: zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/fixed-bugs.txt
===================================================================
--- zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/fixed-bugs.txt	                        (rev 0)
+++ zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/fixed-bugs.txt	2008-03-24 00:49:38 UTC (rev 84899)
@@ -0,0 +1,27 @@
+Unicode URLs
+============
+
+Unicode URLs or headers cause the entire constructed request to be unicode, and
+(as of Python 2.4.4) Cookie.SimpleCookie checks the type of the input against
+type(""), so it handles the value inappropriately, causing exceptions that
+ended with::
+
+      File "/home/benji/Python-2.4.4/lib/python2.4/Cookie.py", line 623, in load
+        self.update(rawdata)
+    ValueError: dictionary update sequence element #0 has length 1; 2 is required
+
+As a work-around, unicode strings passed to Browser.open() are now converted to
+ASCII before being passed on, as well as the key and value passed to
+Browser.addHeader().
+
+The tests below failed before the change was put in place.
+
+    >>> from zope.testbrowser.testing import Browser
+    >>> browser = Browser()
+    >>> browser.addHeader('Cookie', 'test')
+    >>> browser.open(u'http://localhost/@@/testbrowser/simple.html')
+
+    >>> from zope.testbrowser.testing import Browser
+    >>> browser = Browser()
+    >>> browser.addHeader(u'Cookie', 'test')
+    >>> browser.open('http://localhost/@@/testbrowser/simple.html')


Property changes on: zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/fixed-bugs.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/over_the_wire.txt
===================================================================
--- zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/over_the_wire.txt	2008-03-24 00:47:19 UTC (rev 84898)
+++ zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/over_the_wire.txt	2008-03-24 00:49:38 UTC (rev 84899)
@@ -33,6 +33,6 @@
     >>> browser.getControl('Google Search').click()
     Traceback (most recent call last):
     ...
-    HTTPError: HTTP Error 403: request disallowed by robots.txt
+    RobotExclusionError: HTTP Error 403: request disallowed by robots.txt
 
 Oops!  Google doesn't let robots use their search engine.  Oh well.

Modified: zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/tests.py
===================================================================
--- zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/tests.py	2008-03-24 00:47:19 UTC (rev 84898)
+++ zope.testbrowser/branches/benji-remove-mechanize-vendor-import/src/zope/testbrowser/tests.py	2008-03-24 00:49:38 UTC (rev 84899)
@@ -382,14 +382,21 @@
 
 def test_suite():
     flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
+
     readme = FunctionalDocFileSuite('README.txt', optionflags=flags,
         checker=checker)
     readme.layer = TestBrowserLayer
+
+    fixed_bugs = FunctionalDocFileSuite('fixed-bugs.txt', optionflags=flags)
+    fixed_bugs.layer = TestBrowserLayer
+
     wire = FunctionalDocFileSuite('over_the_wire.txt', optionflags=flags)
     wire.level = 2
     wire.layer = TestBrowserLayer
+
     this_file = doctest.DocTestSuite(checker=checker)
-    return unittest.TestSuite((this_file, readme, wire))
 
+    return unittest.TestSuite((this_file, readme, fixed_bugs, wire))
+
 if __name__ == '__main__':
     unittest.main(defaultTest='test_suite')



More information about the Checkins mailing list