Author: russellm Date: 2010-03-26 10:08:24 -0500 (Fri, 26 Mar 2010) New Revision: 12854
Modified: django/trunk/django/core/handlers/base.py django/trunk/tests/regressiontests/urlpatterns_reverse/middleware.py django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py Log: Fixed #12594 -- Ensured that a meaningful exception is raised when the urlconf_module is None. Thanks to buriy for the report and patch. Modified: django/trunk/django/core/handlers/base.py =================================================================== --- django/trunk/django/core/handlers/base.py 2010-03-25 20:01:40 UTC (rev 12853) +++ django/trunk/django/core/handlers/base.py 2010-03-26 15:08:24 UTC (rev 12854) @@ -173,6 +173,9 @@ request_repr = "Request repr() unavailable" message = "%s\n\n%s" % (self._get_traceback(exc_info), request_repr) mail_admins(subject, message, fail_silently=True) + # If Http500 handler is not installed, re-raise last exception + if resolver.urlconf_module is None: + raise exc_info[1], None, exc_info[2] # Return an HttpResponse that displays a friendly error message. callback, param_dict = resolver.resolve500() return callback(request, **param_dict) Modified: django/trunk/tests/regressiontests/urlpatterns_reverse/middleware.py =================================================================== --- django/trunk/tests/regressiontests/urlpatterns_reverse/middleware.py 2010-03-25 20:01:40 UTC (rev 12853) +++ django/trunk/tests/regressiontests/urlpatterns_reverse/middleware.py 2010-03-26 15:08:24 UTC (rev 12854) @@ -5,3 +5,7 @@ class ChangeURLconfMiddleware(object): def process_request(self, request): request.urlconf = urlconf_inner.__name__ + +class NullChangeURLconfMiddleware(object): + def process_request(self, request): + request.urlconf = None Modified: django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py =================================================================== --- django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py 2010-03-25 20:01:40 UTC (rev 12853) +++ django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py 2010-03-26 15:08:24 UTC (rev 12854) @@ -17,6 +17,7 @@ import unittest from django.conf import settings +from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import reverse, resolve, NoReverseMatch, Resolver404 from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect from django.shortcuts import redirect @@ -282,16 +283,22 @@ self.assertEqual(response.status_code, 200) self.assertEqual(response.content, 'outer:,inner:/second_test/') + def test_urlconf_overridden_with_null(self): + settings.MIDDLEWARE_CLASSES += ( + '%s.NullChangeURLconfMiddleware' % middleware.__name__, + ) + self.assertRaises(ImproperlyConfigured, self.client.get, '/test/me/') + class ErrorHandlerResolutionTests(TestCase): """Tests for handler404 and handler500""" - + def setUp(self): from django.core.urlresolvers import RegexURLResolver urlconf = 'regressiontests.urlpatterns_reverse.urls_error_handlers' urlconf_callables = 'regressiontests.urlpatterns_reverse.urls_error_handlers_callables' self.resolver = RegexURLResolver(r'^$', urlconf) self.callable_resolver = RegexURLResolver(r'^$', urlconf_callables) - + def test_named_handlers(self): from views import empty_view handler = (empty_view, {}) @@ -303,3 +310,10 @@ handler = (empty_view, {}) self.assertEqual(self.callable_resolver.resolve404(), handler) self.assertEqual(self.callable_resolver.resolve500(), handler) + +class NoRootUrlConfTests(TestCase): + """Tests for handler404 and handler500 if urlconf is None""" + urls = None + + def test_no_handler_exception(self): + self.assertRaises(ImproperlyConfigured, self.client.get, '/test/me/') -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-upda...@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.