Commit 96cc7baf authored by Alex Gaynor's avatar Alex Gaynor
Browse files

Fixed #13684 -- if settings.ROOT_URLCONF isn't defined don't blow up with an UnboundLocalError.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14488 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 035cb99b
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -73,13 +73,15 @@ class BaseHandler(object):
        from django.conf import settings

        try:
            try:
                # Setup default url resolver for this thread.
            # Setup default url resolver for this thread, this code is outside
            # the try/except so we don't get a spurious "unbound local
            # variable" exception in the event an exception is raised before
            # resolver is set
            urlconf = settings.ROOT_URLCONF
            urlresolvers.set_urlconf(urlconf)
            resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
            try:
                response = None

                # Apply request middleware
                for middleware_method in self._request_middleware:
                    response = middleware_method(request)
@@ -239,4 +241,3 @@ def get_script_name(environ):
    if script_url:
        return force_unicode(script_url[:-len(environ.get('PATH_INFO', ''))])
    return force_unicode(environ.get('SCRIPT_NAME', u''))
+18 −1
Original line number Diff line number Diff line
import sys

from django.test import TestCase
from django.conf import settings
from django.core.signals import got_request_exception
from django.http import HttpResponse
from django.test import TestCase


class TestException(Exception):
@@ -694,3 +695,19 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest):
        self.assert_middleware_usage(pre_middleware,  True,  True,  True, False)
        self.assert_middleware_usage(bad_middleware,  True,  True,  True,  True)
        self.assert_middleware_usage(post_middleware, True,  True,  True,  True)


_missing = object()
class RootUrlconfTests(TestCase):
    def test_missing_root_urlconf(self):
        try:
            original_ROOT_URLCONF = settings.ROOT_URLCONF
            del settings.ROOT_URLCONF
        except AttributeError:
            original_ROOT_URLCONF = _missing
        self.assertRaises(AttributeError,
            self.client.get, "/middleware_exceptions/view/"
        )

        if original_ROOT_URLCONF is not _missing:
            settings.ROOT_URLCONF = original_ROOT_URLCONF