mirror of
https://github.com/django/django.git
synced 2025-09-12 05:26:27 +00:00
Fixed #6094 -- Middleware exceptions are now caught by the core handler. Thanks, isagalaev
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12165 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
a7dc2c0653
commit
ca6f64a43f
7 changed files with 71 additions and 16 deletions
37
tests/regressiontests/middleware_exceptions/tests.py
Normal file
37
tests/regressiontests/middleware_exceptions/tests.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
import sys
|
||||
|
||||
from django.test import TestCase
|
||||
from django.core.signals import got_request_exception
|
||||
|
||||
class RequestMiddleware(object):
|
||||
def process_request(self, request):
|
||||
raise Exception('Exception')
|
||||
|
||||
class MiddlewareExceptionTest(TestCase):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(MiddlewareExceptionTest, self).__init__(*args, **kwargs)
|
||||
self.exceptions = []
|
||||
got_request_exception.connect(self._on_request_exception)
|
||||
|
||||
def setUp(self):
|
||||
self.client.handler.load_middleware()
|
||||
|
||||
def tearDown(self):
|
||||
self.exceptions = []
|
||||
|
||||
def _on_request_exception(self, sender, request, **kwargs):
|
||||
self.exceptions.append(sys.exc_info())
|
||||
|
||||
def test_process_request(self):
|
||||
self.client.handler._request_middleware.insert(0, RequestMiddleware().process_request)
|
||||
try:
|
||||
response = self.client.get('/')
|
||||
except:
|
||||
# Test client indefinitely re-raises any exceptions being raised
|
||||
# during request handling. Hence actual testing that exception was
|
||||
# properly handled is done by relying on got_request_exception
|
||||
# signal being sent.
|
||||
pass
|
||||
self.assertEquals(len(self.exceptions), 1)
|
||||
exception, value, tb = self.exceptions[0]
|
||||
self.assertEquals(value.args, ('Exception', ))
|
Loading…
Add table
Add a link
Reference in a new issue