summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/urlpatterns_reverse/erroneous_urls.py14
-rw-r--r--tests/regressiontests/urlpatterns_reverse/erroneous_views_module.py4
-rw-r--r--tests/regressiontests/urlpatterns_reverse/tests.py13
-rw-r--r--tests/regressiontests/urlpatterns_reverse/views.py5
4 files changed, 35 insertions, 1 deletions
diff --git a/tests/regressiontests/urlpatterns_reverse/erroneous_urls.py b/tests/regressiontests/urlpatterns_reverse/erroneous_urls.py
new file mode 100644
index 0000000000..b09fff7e3e
--- /dev/null
+++ b/tests/regressiontests/urlpatterns_reverse/erroneous_urls.py
@@ -0,0 +1,14 @@
+from django.conf.urls.defaults import patterns, url
+
+urlpatterns = patterns('',
+ # View has erroneous import
+ url(r'erroneous_inner/$', 'regressiontests.urlpatterns_reverse.views.erroneous_view'),
+ # Module has erroneous import
+ url(r'erroneous_outer/$', 'regressiontests.urlpatterns_reverse.erroneous_views_module.erroneous_view'),
+ # View does not exist
+ url(r'missing_inner/$', 'regressiontests.urlpatterns_reverse.views.missing_view'),
+ # View is not callable
+ url(r'uncallable/$', 'regressiontests.urlpatterns_reverse.views.uncallable'),
+ # Module does not exist
+ url(r'missing_outer/$', 'regressiontests.urlpatterns_reverse.missing_module.missing_view'),
+)
diff --git a/tests/regressiontests/urlpatterns_reverse/erroneous_views_module.py b/tests/regressiontests/urlpatterns_reverse/erroneous_views_module.py
new file mode 100644
index 0000000000..7f6b75e00f
--- /dev/null
+++ b/tests/regressiontests/urlpatterns_reverse/erroneous_views_module.py
@@ -0,0 +1,4 @@
+import non_existent
+
+def erroneous_view(request):
+ pass
diff --git a/tests/regressiontests/urlpatterns_reverse/tests.py b/tests/regressiontests/urlpatterns_reverse/tests.py
index 31a928caa2..f447adf4cc 100644
--- a/tests/regressiontests/urlpatterns_reverse/tests.py
+++ b/tests/regressiontests/urlpatterns_reverse/tests.py
@@ -2,7 +2,7 @@
Unit tests for reverse URL lookups.
"""
from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
+from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
from django.core.urlresolvers import reverse, resolve, NoReverseMatch,\
Resolver404, ResolverMatch,\
RegexURLResolver, RegexURLPattern
@@ -470,3 +470,14 @@ class ResolverMatchTests(TestCase):
self.assertEqual(match[0], func)
self.assertEqual(match[1], args)
self.assertEqual(match[2], kwargs)
+
+class ErroneousViewTests(TestCase):
+ urls = 'regressiontests.urlpatterns_reverse.erroneous_urls'
+
+ def test_erroneous_resolve(self):
+ self.assertRaises(ImportError, self.client.get, '/erroneous_inner/')
+ self.assertRaises(ImportError, self.client.get, '/erroneous_outer/')
+ self.assertRaises(ViewDoesNotExist, self.client.get, '/missing_inner/')
+ self.assertRaises(ViewDoesNotExist, self.client.get, '/missing_outer/')
+ self.assertRaises(ViewDoesNotExist, self.client.get, '/uncallable/')
+
diff --git a/tests/regressiontests/urlpatterns_reverse/views.py b/tests/regressiontests/urlpatterns_reverse/views.py
index 2d10aee979..f631acf3ec 100644
--- a/tests/regressiontests/urlpatterns_reverse/views.py
+++ b/tests/regressiontests/urlpatterns_reverse/views.py
@@ -16,6 +16,11 @@ def absolute_kwargs_view(request, arg1=1, arg2=2):
def defaults_view(request, arg1, arg2):
pass
+def erroneous_view(request):
+ import non_existent
+
+uncallable = "Can I be a view? Pleeeease?"
+
class ViewClass(object):
def __call__(self, request, *args, **kwargs):
return HttpResponse('')