[Checkins] SVN: zope.server/branches/achapman-exc-info/src/zope/server/http/tests/test_wsgiserver.py A basic test for changes to "start_response".

Satchidanand Haridas satchit at zope.com
Wed May 11 14:26:56 EDT 2011


Log message for revision 121655:
  A basic test for changes to "start_response".
  
  

Changed:
  U   zope.server/branches/achapman-exc-info/src/zope/server/http/tests/test_wsgiserver.py

-=-
Modified: zope.server/branches/achapman-exc-info/src/zope/server/http/tests/test_wsgiserver.py
===================================================================
--- zope.server/branches/achapman-exc-info/src/zope/server/http/tests/test_wsgiserver.py	2011-05-11 14:47:50 UTC (rev 121654)
+++ zope.server/branches/achapman-exc-info/src/zope/server/http/tests/test_wsgiserver.py	2011-05-11 18:26:55 UTC (rev 121655)
@@ -320,7 +320,43 @@
 
         self.server.application = orig_app
 
+    def test_exception_handling(self):
+        # some applications/middleware (like repoze.retry) might pass the
+        # exc_info to start_response.
 
+        orig_app = self.server.application
+
+        class DummyException(Exception):
+            value = "Dummy Exception to test start_response"
+            def __str__(self):
+                return repr(self.value)
+
+        def app(environ, start_response):
+            try:
+                start_response(
+                    "500 Error",
+                    [],
+                    (DummyException, DummyException.value, None))
+            except DummyException as e:
+                return e.value.split()
+
+        class FakeTask:
+            response = []
+            getCGIEnvironment = lambda _: {}
+            class request_data:
+                getBodyStream = lambda _: StringIO.StringIO()
+            request_data = request_data()
+            setResponseStatus = appendResponseHeaders = lambda *_: None
+            def write(self, v):
+                self.response.append(v)
+
+        self.server.application = app
+        task = FakeTask()
+        self.server.executeRequest(task)
+
+        self.assertEqual(task.response, DummyException.value.split())
+        self.server.application = orig_app
+
 class PMDBTests(Tests):
 
     def _getServerClass(self):



More information about the checkins mailing list