summaryrefslogtreecommitdiff
path: root/tests/regressiontests/urlpatterns_reverse
diff options
context:
space:
mode:
authorFlorian Apolloner <florian@apolloner.eu>2012-08-14 21:12:08 +0200
committerFlorian Apolloner <florian@apolloner.eu>2012-08-14 21:23:25 +0200
commit367bfaa5226eaae3278989e63f16063d5cc46cd8 (patch)
tree915044cce7ef89d1f53aacd3e665f2505d456e8b /tests/regressiontests/urlpatterns_reverse
parent37c9318748896a1bb7e33a05a7db2c5de268ff22 (diff)
Don't swallow AttributeError in core.urlresolvers.get_callable.
Diffstat (limited to 'tests/regressiontests/urlpatterns_reverse')
-rw-r--r--tests/regressiontests/urlpatterns_reverse/tests.py18
-rw-r--r--tests/regressiontests/urlpatterns_reverse/views_broken.py2
2 files changed, 18 insertions, 2 deletions
diff --git a/tests/regressiontests/urlpatterns_reverse/tests.py b/tests/regressiontests/urlpatterns_reverse/tests.py
index 207cc56488..b9c64183e5 100644
--- a/tests/regressiontests/urlpatterns_reverse/tests.py
+++ b/tests/regressiontests/urlpatterns_reverse/tests.py
@@ -5,8 +5,9 @@ from __future__ import absolute_import, unicode_literals
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
-from django.core.urlresolvers import (reverse, resolve, NoReverseMatch,
- Resolver404, ResolverMatch, RegexURLResolver, RegexURLPattern)
+from django.core.urlresolvers import (reverse, resolve, get_callable,
+ NoReverseMatch, Resolver404, ResolverMatch, RegexURLResolver,
+ RegexURLPattern)
from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
from django.shortcuts import redirect
from django.test import TestCase
@@ -519,3 +520,16 @@ class ErroneousViewTests(TestCase):
"""
# The regex error will be hit before NoReverseMatch can be raised
self.assertRaises(ImproperlyConfigured, reverse, 'whatever blah blah')
+
+class ViewLoadingTests(TestCase):
+ def test_view_loading(self):
+ # A missing view (identified by an AttributeError) should raise
+ # ViewDoesNotExist, ...
+ self.assertRaisesRegexp(ViewDoesNotExist, ".*View does not exist in.*",
+ get_callable,
+ 'regressiontests.urlpatterns_reverse.views.i_should_not_exist')
+ # ... but if the AttributeError is caused by something else don't
+ # swallow it.
+ self.assertRaises(AttributeError, get_callable,
+ 'regressiontests.urlpatterns_reverse.views_broken.i_am_broken')
+
diff --git a/tests/regressiontests/urlpatterns_reverse/views_broken.py b/tests/regressiontests/urlpatterns_reverse/views_broken.py
new file mode 100644
index 0000000000..4953aab239
--- /dev/null
+++ b/tests/regressiontests/urlpatterns_reverse/views_broken.py
@@ -0,0 +1,2 @@
+# I just raise an AttributeError to confuse the view loading mechanism
+raise AttributeError('I am here to confuse django.core.urlresolvers.get_callable')