On Thu, Oct 14, 2010 at 07:19:17PM +0200, Jan-Jaap Driessen wrote:
The httplib.HTTPConnection API changed from python2.6 to python2.7. These changes are reflected in the handleErrors property of zope.testbrowser.browser.Browser - it is no longer possible to pass a boolean into the request headers. A fix is available on the trunk of zope.testbrowser [1]. In this implementation, a boolean is provided to the consumers of the testbrowser API and a string is used in the request headers.
That seems sane.
This implementation is sub-optimal in my opinion.
Why?
In the branch 'janjaapdriessen-handle-errors' [2] you will find a cleaner implementation, where the switch to handle_errors is controlled by the presence of a "zope-do-not-handle-errors" header. The value of the header is no longer interpreted. This change is backwards incompatible.
In what way? This header is an internal zope.testbrowser implementation detail, isn't it? Or do things like z3c.testbrowser also use it? I'm -1 for breaking backwards compatibility.
Code relying on the 'x-zope-handle-errors' header will break. I have tested this implementation against the ZTK trunk on python2.7 and have found no breakage of this kind.
It's times like this when I want to have a full checkout of everything in svn.zope.org (or, better yet, a search page on the web). Grepping in my shared buildout egg cache, I see that 'x-zope-handle-errors' appears in zope.testbrowser only. It is documented in the README as an API between testbrowser and the server it's testing, so I'm inclined to prefer the first, backwards-compatible solution.
Please let me know if either of these solutions is OK with you. If so, grant me pypi rights (my handle is 'janjaapdriessen') so I can release zope.testbrowser and get a step closer to making the ZTK run on python2.7.
Someone gave you rights already. Marius Gedminas -- http://pov.lt/ -- Zope 3/BlueBream consulting and development