[Checkins] SVN: zope.testbrowser/trunk/ - Provide a work around for a mechanize/urllib2 bug on Python 2.6

Sidnei da Silva sidnei at enfoldsystems.com
Fri Oct 10 12:04:10 EDT 2008


Log message for revision 91989:
  - Provide a work around for a mechanize/urllib2 bug on Python 2.6
    missing 'timeout' attribute on 'Request' base class.
  
  - Bump version on trunk to 3.5.1dev. Apparently 3.5.0 was released a
    while ago already. Also, adjust CHANGES.txt to reflect 3.5.0 release
    date.
  
  

Changed:
  U   zope.testbrowser/trunk/CHANGES.txt
  U   zope.testbrowser/trunk/buildout.cfg
  U   zope.testbrowser/trunk/setup.py
  U   zope.testbrowser/trunk/src/zope/testbrowser/testing.py
  U   zope.testbrowser/trunk/src/zope/testbrowser/tests.py

-=-
Modified: zope.testbrowser/trunk/CHANGES.txt
===================================================================
--- zope.testbrowser/trunk/CHANGES.txt	2008-10-10 15:44:47 UTC (rev 91988)
+++ zope.testbrowser/trunk/CHANGES.txt	2008-10-10 16:04:10 UTC (rev 91989)
@@ -2,13 +2,18 @@
 CHANGES
 =======
 
-
-3.5.0 (unreleased)
+3.5.1 (unreleased)
 ------------------
 
+- Provide a work around for a mechanize/urllib2 bug on Python 2.6
+  missing 'timeout' attribute on 'Request' base class.
+
 - Provide a work around for a mechanize/urllib2 bug in creating request
   objects that won't handle fragment URLs correctly.
 
+3.5.0 (2008-03-30)
+------------------
+
 - 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/buildout.cfg
===================================================================
--- zope.testbrowser/trunk/buildout.cfg	2008-10-10 15:44:47 UTC (rev 91988)
+++ zope.testbrowser/trunk/buildout.cfg	2008-10-10 16:04:10 UTC (rev 91989)
@@ -8,6 +8,8 @@
 use-dependency-links = false
 
 [versions]
+mechanize = 0.1.9
+setuptools = 0.6c9
 zope.testbrowser =
 zope.publisher = 3.5.1
 zope.app.publication = 3.4.2

Modified: zope.testbrowser/trunk/setup.py
===================================================================
--- zope.testbrowser/trunk/setup.py	2008-10-10 15:44:47 UTC (rev 91988)
+++ zope.testbrowser/trunk/setup.py	2008-10-10 16:04:10 UTC (rev 91989)
@@ -29,7 +29,7 @@
 
 setup(
     name = 'zope.testbrowser',
-    version = '3.5.0dev',
+    version = '3.5.1dev',
     url = 'http://pypi.python.org/pypi/zope.testbrowser',
     license = 'ZPL 2.1',
     description = 'Programmable browser for functional black-box tests',

Modified: zope.testbrowser/trunk/src/zope/testbrowser/testing.py
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/testing.py	2008-10-10 15:44:47 UTC (rev 91988)
+++ zope.testbrowser/trunk/src/zope/testbrowser/testing.py	2008-10-10 16:04:10 UTC (rev 91989)
@@ -17,6 +17,7 @@
 """
 import re
 import sys
+import socket
 import unittest
 import httplib
 import urllib2
@@ -35,7 +36,7 @@
 class PublisherConnection(object):
     """A ``urllib2`` compatible connection obejct."""
 
-    def __init__(self, host):
+    def __init__(self, host, timeout=None):
         self.caller = functional.HTTPCaller()
         self.host = host
 
@@ -136,6 +137,10 @@
     def http_open(self, req):
         """Open an HTTP connection having a ``urllib2`` request."""
         # Here we connect to the publisher.
+        if sys.version_info > (2, 6) and not hasattr(req, 'timeout'):
+            # Workaround mechanize incompatibility with Python
+            # 2.6. See: LP #280334
+            req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
         return self.do_open(PublisherConnection, req)
 
 

Modified: zope.testbrowser/trunk/src/zope/testbrowser/tests.py
===================================================================
--- zope.testbrowser/trunk/src/zope/testbrowser/tests.py	2008-10-10 15:44:47 UTC (rev 91988)
+++ zope.testbrowser/trunk/src/zope/testbrowser/tests.py	2008-10-10 16:04:10 UTC (rev 91989)
@@ -26,6 +26,8 @@
 import mechanize
 import os
 import re
+import sys
+import socket
 import unittest
 import unittest
 import urllib2
@@ -51,7 +53,7 @@
 class FauxConnection(object):
     """A ``urllib2`` compatible connection object."""
 
-    def __init__(self, host):
+    def __init__(self, host, timeout=None):
         pass
 
     def set_debuglevel(self, level):
@@ -125,6 +127,11 @@
     def http_open(self, req):
         """Open an HTTP connection having a ``urllib2`` request."""
         # Here we connect to the publisher.
+
+        if sys.version_info > (2, 6) and not hasattr(req, 'timeout'):
+            # Workaround mechanize incompatibility with Python
+            # 2.6. See: LP #280334
+            req.timeout = socket._GLOBAL_DEFAULT_TIMEOUT
         return self.do_open(FauxConnection, req)
 
 
@@ -373,6 +380,7 @@
     (re.compile(r'Status: 200.*'), 'Status: 200 OK'),
     (win32CRLFtransformer(), None),
     (re.compile(r'User-Agent: Python-urllib/2.5'), 'User-agent: Python-urllib/2.4'),
+    (re.compile(r'User-Agent: Python-urllib/2.6'), 'User-agent: Python-urllib/2.4'),
     (re.compile(r'Host: localhost'), 'Connection: close'),
     (re.compile(r'Content-Type: '), 'Content-type: '),
     ])



More information about the Checkins mailing list