[Checkins] SVN: van.testing/trunk/ Fixup testbrowser support a bit
Brian Sutherland
jinty at web.de
Fri Apr 3 04:35:27 EDT 2009
Log message for revision 98819:
Fixup testbrowser support a bit
Changed:
U van.testing/trunk/CHANGES.txt
U van.testing/trunk/buildout.cfg
U van.testing/trunk/van/testing/layer.py
A van.testing/trunk/van/testing/testbrowser.txt
U van.testing/trunk/van/testing/tests.py
-=-
Modified: van.testing/trunk/CHANGES.txt
===================================================================
--- van.testing/trunk/CHANGES.txt 2009-04-03 08:05:56 UTC (rev 98818)
+++ van.testing/trunk/CHANGES.txt 2009-04-03 08:35:27 UTC (rev 98819)
@@ -6,6 +6,8 @@
- Allow users to specify the domain and port of the wsgi_intercept_layer by
adding those attributes to the class.
+- Fix testbrowser support a bit so that it performs more like
+ zope.testbrowser.testing.Browser.
2.0.0 (2009-04-01)
------------------
Modified: van.testing/trunk/buildout.cfg
===================================================================
--- van.testing/trunk/buildout.cfg 2009-04-03 08:05:56 UTC (rev 98818)
+++ van.testing/trunk/buildout.cfg 2009-04-03 08:35:27 UTC (rev 98819)
@@ -15,3 +15,5 @@
[test]
recipe = zc.recipe.testrunner
eggs = van.testing
+ zope.testbrowser
+defaults = ['-m', 'van.testing']
Modified: van.testing/trunk/van/testing/layer.py
===================================================================
--- van.testing/trunk/van/testing/layer.py 2009-04-03 08:05:56 UTC (rev 98818)
+++ van.testing/trunk/van/testing/layer.py 2009-04-03 08:35:27 UTC (rev 98819)
@@ -104,10 +104,14 @@
def __call__(self, environ, start_response):
if environ.get('HTTP_X_ZOPE_HANDLE_ERRORS') == 'False':
environ['wsgi.handleErrors'] = False
+ if 'HTTP_X_ZOPE_HANDLE_ERRORS' in environ:
+ del environ['HTTP_X_ZOPE_HANDLE_ERRORS']
def my_start_response(status, headers, exc_info=None):
+ # Behave like zope.testbrowser.testing:
+ # sort response headers and insert status code in first place.
headers = sorted(headers)
headers.insert(0, ('Status', status))
- return start_response(status, sorted(headers), exc_info=exc_info)
+ return start_response(status, headers, exc_info=exc_info)
return self.application(environ, my_start_response)
Added: van.testing/trunk/van/testing/testbrowser.txt
===================================================================
--- van.testing/trunk/van/testing/testbrowser.txt (rev 0)
+++ van.testing/trunk/van/testing/testbrowser.txt 2009-04-03 08:35:27 UTC (rev 98819)
@@ -0,0 +1,29 @@
+Using zope.testbrowser
+======================
+
+We can use the zope.testbrowser from wsgi_intercept:
+
+ >>> from wsgi_intercept.zope_testbrowser import WSGI_Browser as Browser
+ >>> browser = Browser()
+
+ >>> browser.open("http://localhost/")
+
+As we expect with the normal testbrowser, headers are sorted with the status first:
+
+ >>> print browser.headers
+ Status: 200 OK
+ Content-length: 586
+ Content-type: text/plain
+ X-Powered-By: WSGI
+ <BLANKLINE>
+
+XXX: the <BLANKLINE> above is a deviation from what happens with the testing
+ testbrowser, how to fix?
+
+Regression: Handle Errors header does not appear in wsgi environ
+----------------------------------------------------------------
+
+ >>> browser.handleErrors = False
+ >>> browser.open("http://localhost/")
+ >>> 'HTTP_X_ZOPE_HANDLE_ERRORS' in browser.contents.upper()
+ False
Property changes on: van.testing/trunk/van/testing/testbrowser.txt
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: van.testing/trunk/van/testing/tests.py
===================================================================
--- van.testing/trunk/van/testing/tests.py 2009-04-03 08:05:56 UTC (rev 98818)
+++ van.testing/trunk/van/testing/tests.py 2009-04-03 08:35:27 UTC (rev 98819)
@@ -19,14 +19,24 @@
from zope.component import getUtility
from zope.interface import Interface
+try:
+ import zope.testbrowser
+ have_testbrowser = True
+except:
+ have_testbrowser = False
+
MARKER = 'MARKER'
_HERE = os.path.dirname(__file__)
def simple_app(environ, start_response):
"""Simplest possible application object"""
- start_response('200 OK', [('Content-type','text/plain')])
marker = getUtility(Interface, name=u"test")
- return [pformat(environ), "\nMarker: %s" % marker]
+ response = pformat(environ) + "\nMarker: %s" % marker
+ start_response('200 OK', [('Content-type', 'text/plain'),
+ ('X-Powered-By', 'WSGI'),
+ ('Content-length', len(response)),
+ ])
+ return [response]
class ZCMLLayer:
zcml = os.path.join(_HERE, 'ftesting.zcml')
@@ -39,9 +49,11 @@
wsgi_intercept_layer(FunctionalLayer)
def test_suite():
- ftest = doctest.DocFileSuite('README.txt')
- ftest.layer = FunctionalLayer
+ ftests = unittest.TestSuite([doctest.DocFileSuite('README.txt')])
+ ftests.layer = FunctionalLayer
+ if have_testbrowser:
+ ftests.addTest(doctest.DocFileSuite('testbrowser.txt'))
return unittest.TestSuite([
- ftest,
+ ftests,
doctest.DocTestSuite('van.testing.layer'),
])
More information about the Checkins
mailing list