Fixed #10065 -- Corrected an error message when an empty urlpattern object is provided. Thanks to Matthew Flanagan for the patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10385 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2009-04-04 06:54:56 +00:00
parent 2b1934ff3c
commit ff166a3cdc
3 changed files with 21 additions and 6 deletions

View File

@ -209,7 +209,7 @@ class RegexURLResolver(object):
try: try:
iter(patterns) iter(patterns)
except TypeError: except TypeError:
raise ImproperlyConfigured("The included urlconf %s doesn't have any" raise ImproperlyConfigured("The included urlconf %s doesn't have any "
"patterns in it" % self.urlconf_name) "patterns in it" % self.urlconf_name)
return patterns return patterns
url_patterns = property(_get_url_patterns) url_patterns = property(_get_url_patterns)

View File

@ -0,0 +1,2 @@
#from django.conf.urls.defaults import *

View File

@ -1,6 +1,19 @@
""" """
Unit tests for reverse URL lookups. Unit tests for reverse URL lookups.
""" """
__test__ = {'API_TESTS': """
RegexURLResolver should raise an exception when no urlpatterns exist.
>>> from django.core.urlresolvers import RegexURLResolver
>>> no_urls = 'regressiontests.urlpatterns_reverse.no_urls'
>>> resolver = RegexURLResolver(r'^$', no_urls)
>>> resolver.url_patterns
Traceback (most recent call last):
...
ImproperlyConfigured: The included urlconf regressiontests.urlpatterns_reverse.no_urls doesn't have any patterns in it
"""}
from django.core.urlresolvers import reverse, NoReverseMatch from django.core.urlresolvers import reverse, NoReverseMatch
from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
@ -101,21 +114,21 @@ class URLPatternReverse(TestCase):
class ReverseShortcutTests(TestCase): class ReverseShortcutTests(TestCase):
urls = 'regressiontests.urlpatterns_reverse.urls' urls = 'regressiontests.urlpatterns_reverse.urls'
def test_redirect_to_object(self): def test_redirect_to_object(self):
# We don't really need a model; just something with a get_absolute_url # We don't really need a model; just something with a get_absolute_url
class FakeObj(object): class FakeObj(object):
def get_absolute_url(self): def get_absolute_url(self):
return "/hi-there/" return "/hi-there/"
res = redirect(FakeObj()) res = redirect(FakeObj())
self.assert_(isinstance(res, HttpResponseRedirect)) self.assert_(isinstance(res, HttpResponseRedirect))
self.assertEqual(res['Location'], '/hi-there/') self.assertEqual(res['Location'], '/hi-there/')
res = redirect(FakeObj(), permanent=True) res = redirect(FakeObj(), permanent=True)
self.assert_(isinstance(res, HttpResponsePermanentRedirect)) self.assert_(isinstance(res, HttpResponsePermanentRedirect))
self.assertEqual(res['Location'], '/hi-there/') self.assertEqual(res['Location'], '/hi-there/')
def test_redirect_to_view_name(self): def test_redirect_to_view_name(self):
res = redirect('hardcoded2') res = redirect('hardcoded2')
self.assertEqual(res['Location'], '/hardcoded/doc.pdf') self.assertEqual(res['Location'], '/hardcoded/doc.pdf')
@ -124,7 +137,7 @@ class ReverseShortcutTests(TestCase):
res = redirect('headlines', year='2008', month='02', day='17') res = redirect('headlines', year='2008', month='02', day='17')
self.assertEqual(res['Location'], '/headlines/2008.02.17/') self.assertEqual(res['Location'], '/headlines/2008.02.17/')
self.assertRaises(NoReverseMatch, redirect, 'not-a-view') self.assertRaises(NoReverseMatch, redirect, 'not-a-view')
def test_redirect_to_url(self): def test_redirect_to_url(self):
res = redirect('/foo/') res = redirect('/foo/')
self.assertEqual(res['Location'], '/foo/') self.assertEqual(res['Location'], '/foo/')