@@ -16,8 +16,6 @@ limitations under the License.
|
||||
|
||||
"""
|
||||
|
||||
import traceback
|
||||
|
||||
from .request import Request
|
||||
from .response import Response
|
||||
from . import responders
|
||||
@@ -69,25 +67,6 @@ class API(object):
|
||||
if req.client_accepts_json():
|
||||
resp.body = ex.json()
|
||||
|
||||
except Exception as ex:
|
||||
# Reset to a known state and respond with a generic error
|
||||
req = Request(env)
|
||||
resp = Response()
|
||||
|
||||
message = ['Responder raised ', ex.__class__.__name__]
|
||||
|
||||
details = str(ex)
|
||||
if details:
|
||||
message.append(': ')
|
||||
message.append(details)
|
||||
|
||||
stack = traceback.format_exc()
|
||||
message.append('\n')
|
||||
message.append(stack)
|
||||
|
||||
req.log_error(''.join(message))
|
||||
responders.server_error(req, resp)
|
||||
|
||||
#
|
||||
# Set status and headers
|
||||
#
|
||||
|
||||
@@ -10,15 +10,6 @@ else:
|
||||
str_message = 'UTF-8: \xc2\x80'
|
||||
|
||||
|
||||
class BombResource:
|
||||
|
||||
def on_get(self, req, resp):
|
||||
raise IOError()
|
||||
|
||||
def on_head(self, req, resp):
|
||||
raise MemoryError("I can't remember a thing.")
|
||||
|
||||
|
||||
class LoggerResource:
|
||||
|
||||
def on_get(self, req, resp):
|
||||
@@ -31,10 +22,8 @@ class LoggerResource:
|
||||
class TestWSGIError(helpers.TestSuite):
|
||||
|
||||
def prepare(self):
|
||||
self.tehbomb = BombResource()
|
||||
self.tehlogger = LoggerResource()
|
||||
|
||||
self.api.add_route('/bomb', self.tehbomb)
|
||||
self.api.add_route('/logger', self.tehlogger)
|
||||
|
||||
self.wsgierrors_buffer = io.BytesIO()
|
||||
@@ -48,21 +37,6 @@ class TestWSGIError(helpers.TestSuite):
|
||||
# with undefined encoding, so do the encoding manually.
|
||||
self.wsgierrors = self.wsgierrors_buffer
|
||||
|
||||
def test_exception_logged(self):
|
||||
self._simulate_request('/bomb', wsgierrors=self.wsgierrors)
|
||||
|
||||
log = self.wsgierrors_buffer.getvalue()
|
||||
self.assertIn(b'IOError', log)
|
||||
|
||||
def test_exception_logged_with_details(self):
|
||||
self._simulate_request('/bomb', wsgierrors=self.wsgierrors,
|
||||
method='HEAD')
|
||||
|
||||
log = self.wsgierrors_buffer.getvalue()
|
||||
|
||||
self.assertIn(b'MemoryError', log)
|
||||
self.assertIn(b'remember a thing', log)
|
||||
|
||||
def test_responder_logged_unicode(self):
|
||||
self._simulate_request('/logger', wsgierrors=self.wsgierrors)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user