[Checkins] SVN: zope.publisher/trunk/src/zope/publisher/ Fixed
##98413: HTTPResponse.handleException should set the content type
Dmitry Vasiliev
dima at hlabs.spb.ru
Wed May 16 06:14:10 EDT 2007
Log message for revision 75799:
Fixed ##98413: HTTPResponse.handleException should set the content type
Changed:
U zope.publisher/trunk/src/zope/publisher/http.py
U zope.publisher/trunk/src/zope/publisher/tests/test_browserresponse.py
U zope.publisher/trunk/src/zope/publisher/tests/test_http.py
-=-
Modified: zope.publisher/trunk/src/zope/publisher/http.py
===================================================================
--- zope.publisher/trunk/src/zope/publisher/http.py 2007-05-16 10:09:46 UTC (rev 75798)
+++ zope.publisher/trunk/src/zope/publisher/http.py 2007-05-16 10:14:09 UTC (rev 75799)
@@ -53,6 +53,8 @@
# Default Encoding
ENCODING = 'UTF-8'
+eventlog = logging.getLogger('eventlog')
+
class CookieMapper(RequestDataMapper):
_mapname = '_cookies'
@@ -77,9 +79,9 @@
class HTTPVirtualHostChangedEvent(object):
interface.implements(IHTTPVirtualHostChangedEvent)
-
+
request = None
-
+
def __init__(self, request):
self.request = request
@@ -395,8 +397,7 @@
try:
c = SimpleCookie(text)
except CookieError, e:
- log = logging.getLogger('eventlog')
- log.warn(e)
+ eventlog.warn(e)
return result
for k,v in c.items():
@@ -832,14 +833,13 @@
self.setStatus(tname)
body = self._html(title, "A server error occurred." )
+ self.setHeader("Content-Type", "text/html")
self.setResult(body)
-
def internalError(self):
'See IPublisherResponse'
self.setStatus(500, u"The engines can't take any more, Jim!")
-
def _html(self, title, content):
t = escape(title)
return (
@@ -850,14 +850,12 @@
(t, t, content)
)
-
def retry(self):
"""
Returns a response object to be used in a retry attempt
"""
return self.__class__()
-
def redirect(self, location, status=None):
"""Causes a redirection without raising an error"""
if status is None:
@@ -877,8 +875,7 @@
try:
c = SimpleCookie()
except CookieError, e:
- log = logging.getLogger('eventlog')
- log.warn(e)
+ eventlog.warn(e)
return []
for name, attrs in self._cookies.items():
name = str(name)
Modified: zope.publisher/trunk/src/zope/publisher/tests/test_browserresponse.py
===================================================================
--- zope.publisher/trunk/src/zope/publisher/tests/test_browserresponse.py 2007-05-16 10:09:46 UTC (rev 75798)
+++ zope.publisher/trunk/src/zope/publisher/tests/test_browserresponse.py 2007-05-16 10:14:09 UTC (rev 75799)
@@ -16,10 +16,16 @@
$Id$
"""
+import sys
from unittest import TestCase, TestSuite, main, makeSuite
from zope.publisher.browser import BrowserResponse
from zope.interface.verify import verifyObject
+from zope.publisher.interfaces.http import IHTTPResponse
+from zope.publisher.interfaces.http import IHTTPApplicationResponse
+from zope.publisher.interfaces import IResponse
+
+
# TODO: Waaa need more tests
class TestBrowserResponse(TestCase):
@@ -125,21 +131,36 @@
int(response.getHeader('content-length')),
len(html_page) + len(inserted_text))
-
def test_interface(self):
- from zope.publisher.interfaces.http import IHTTPResponse
- from zope.publisher.interfaces.http import IHTTPApplicationResponse
- from zope.publisher.interfaces import IResponse
rp = BrowserResponse()
verifyObject(IHTTPResponse, rp)
verifyObject(IHTTPApplicationResponse, rp)
verifyObject(IResponse, rp)
+ def test_handleException(self):
+ response = BrowserResponse()
+ try:
+ raise ValueError(1)
+ except:
+ exc_info = sys.exc_info()
+ response.handleException(exc_info)
+ self.assertEquals(response.getHeader("content-type"),
+ "text/html;charset=utf-8")
+ self.assertEquals(response.getStatus(), 500)
+ self.assertEquals(response.consumeBody(),
+ "<html><head><title>ValueError</title></head>\n"
+ "<body><h2>ValueError</h2>\n"
+ "A server error occurred.\n"
+ "</body></html>\n"
+ )
+
+
def test_suite():
return TestSuite((
makeSuite(TestBrowserResponse),
))
+
if __name__=='__main__':
main(defaultTest='test_suite')
Modified: zope.publisher/trunk/src/zope/publisher/tests/test_http.py
===================================================================
--- zope.publisher/trunk/src/zope/publisher/tests/test_http.py 2007-05-16 10:09:46 UTC (rev 75798)
+++ zope.publisher/trunk/src/zope/publisher/tests/test_http.py 2007-05-16 10:14:09 UTC (rev 75799)
@@ -16,6 +16,8 @@
$Id$
"""
+
+import sys
import unittest
from zope.testing import doctest
import zope.testing.cleanup
@@ -650,9 +652,29 @@
self.failUnless('foo=bar;' in c)
self.failIf('secure' in c)
+ def test_handleException(self):
+ response = HTTPResponse()
+ try:
+ raise ValueError(1)
+ except:
+ exc_info = sys.exc_info()
+
+ response.handleException(exc_info)
+ self.assertEquals(response.getHeader("content-type"),
+ "text/html;charset=utf-8")
+ self.assertEquals(response.getStatus(), 500)
+ self.assertEquals(response.consumeBody(),
+ "<html><head><title>ValueError</title></head>\n"
+ "<body><h2>ValueError</h2>\n"
+ "A server error occurred.\n"
+ "</body></html>\n"
+ )
+
+
def cleanUp(test):
zope.testing.cleanup.cleanUp()
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(ConcreteHTTPTests))
More information about the Checkins
mailing list