[Checkins] SVN: zope.testbrowser/branches/janjaapdriessen-handle-errors/ use the X-Zope-Do-Not-Handle-Errors header in favor of X-Zope-Handle-Errors

Jan-Jaap Driessen jdriessen at thehealthagency.com
Thu Oct 14 13:18:24 EDT 2010


Log message for revision 117563:
  use the X-Zope-Do-Not-Handle-Errors header in favor of X-Zope-Handle-Errors
  
  

Changed:
  U   zope.testbrowser/branches/janjaapdriessen-handle-errors/CHANGES.txt
  U   zope.testbrowser/branches/janjaapdriessen-handle-errors/setup.py
  U   zope.testbrowser/branches/janjaapdriessen-handle-errors/src/zope/testbrowser/browser.py
  U   zope.testbrowser/branches/janjaapdriessen-handle-errors/src/zope/testbrowser/testing.py

-=-
Modified: zope.testbrowser/branches/janjaapdriessen-handle-errors/CHANGES.txt
===================================================================
--- zope.testbrowser/branches/janjaapdriessen-handle-errors/CHANGES.txt	2010-10-14 17:10:05 UTC (rev 117562)
+++ zope.testbrowser/branches/janjaapdriessen-handle-errors/CHANGES.txt	2010-10-14 17:18:24 UTC (rev 117563)
@@ -2,11 +2,13 @@
 CHANGES
 =======
 
-3.10.2 (unreleased)
+3.11.0 (unreleased)
 -------------------
 
 - Fixed Python2.7 compatibility in Browser.handleErrors.
 
+- Browser.handleErrors uses the X-Zope-Do-Not-Handle-Errors header in favor
+  of X-Zope-Handle-Errors.
 
 3.10.1 (2010-09-21)
 -------------------

Modified: zope.testbrowser/branches/janjaapdriessen-handle-errors/setup.py
===================================================================
--- zope.testbrowser/branches/janjaapdriessen-handle-errors/setup.py	2010-10-14 17:10:05 UTC (rev 117562)
+++ zope.testbrowser/branches/janjaapdriessen-handle-errors/setup.py	2010-10-14 17:18:24 UTC (rev 117563)
@@ -27,7 +27,7 @@
 
 setup(
     name = 'zope.testbrowser',
-    version='3.10.2dev',
+    version='3.11dev',
     url = 'http://pypi.python.org/pypi/zope.testbrowser',
     license = 'ZPL 2.1',
     description = 'Programmable browser for functional black-box tests',

Modified: zope.testbrowser/branches/janjaapdriessen-handle-errors/src/zope/testbrowser/browser.py
===================================================================
--- zope.testbrowser/branches/janjaapdriessen-handle-errors/src/zope/testbrowser/browser.py	2010-10-14 17:10:05 UTC (rev 117562)
+++ zope.testbrowser/branches/janjaapdriessen-handle-errors/src/zope/testbrowser/browser.py	2010-10-14 17:18:24 UTC (rev 117563)
@@ -33,6 +33,8 @@
 _compress_re = re.compile(r"\s+")
 compressText = lambda text: _compress_re.sub(' ', text.strip())
 
+DO_NOT_HANDLE_ERRORS_KEY = 'X-Zope-Do-Not-Handle-Errors'
+
 def disambiguate(intermediate, msg, index):
     if intermediate:
         if index is None:
@@ -208,25 +210,20 @@
     @apply
     def handleErrors():
         """See zope.testbrowser.interfaces.IBrowser"""
-        header_key = 'X-zope-handle-errors'
-
+        
         def get(self):
             headers = self.mech_browser.addheaders
-            value = dict(headers).get(header_key, True)
-            return {'false': False}.get(value, True)
+            return DO_NOT_HANDLE_ERRORS_KEY not in dict(headers)
 
         def set(self, value):
             headers = self.mech_browser.addheaders
-            current_value = get(self)
-            if current_value == value:
-                return
-
             # Remove the current header...
-            for key, header_value in headers[:]:
-                if key == header_key:
-                    headers.remove((key, header_value))
-            # ... Before adding the new one.
-            headers.append((header_key, {False: 'false'}.get(value, 'true')))
+            for header_key, header_value in headers[:]:
+                if header_key == DO_NOT_HANDLE_ERRORS_KEY:
+                    headers.remove((header_key, header_value))
+            # ...before possibly adding the new one.
+            if value is False:
+                headers.append((DO_NOT_HANDLE_ERRORS_KEY, 'true'))
 
         return property(get, set)
 

Modified: zope.testbrowser/branches/janjaapdriessen-handle-errors/src/zope/testbrowser/testing.py
===================================================================
--- zope.testbrowser/branches/janjaapdriessen-handle-errors/src/zope/testbrowser/testing.py	2010-10-14 17:10:05 UTC (rev 117562)
+++ zope.testbrowser/branches/janjaapdriessen-handle-errors/src/zope/testbrowser/testing.py	2010-10-14 17:18:24 UTC (rev 117563)
@@ -49,16 +49,14 @@
             url = '/'
 
         url = self._quote(url)
-        # Extract the handle_error option header
-        if sys.version_info >= (2,5):
-            handle_errors_key = 'X-Zope-Handle-Errors'
-        else:
-            handle_errors_key = 'X-zope-handle-errors'
-        handle_errors_header = headers.get(handle_errors_key, True)
+
+        # Do not handle errors if the DO_NOT_HANDLE_ERRORS_KEY is found in the
+        # headers.
+        handle_errors_key = zope.testbrowser.browser.DO_NOT_HANDLE_ERRORS_KEY
+        handle_errors = True
         if handle_errors_key in headers:
+            handle_errors = False
             del headers[handle_errors_key]
-        # Translate string to boolean.
-        handle_errors = {'false': False}.get(handle_errors_header, True)
 
         # Construct the headers.
         header_chunks = []



More information about the checkins mailing list