Author: russellm
Date: 2009-06-29 09:02:17 -0500 (Mon, 29 Jun 2009)
New Revision: 11120

Modified:
   django/trunk/django/core/urlresolvers.py
   django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py
Log:
Fixed #10834 -- Added bucket condition to ensure that URL resolvers won't ever 
return None. Thanks to Chris Cahoon for the patch.

Modified: django/trunk/django/core/urlresolvers.py
===================================================================
--- django/trunk/django/core/urlresolvers.py    2009-06-29 12:29:48 UTC (rev 
11119)
+++ django/trunk/django/core/urlresolvers.py    2009-06-29 14:02:17 UTC (rev 
11120)
@@ -195,6 +195,7 @@
                         return sub_match[0], sub_match[1], sub_match_dict
                     tried.append(pattern.regex.pattern)
             raise Resolver404, {'tried': tried, 'path': new_path}
+        raise Resolver404, {'tried': [], 'path' : path}
 
     def _get_urlconf_module(self):
         try:

Modified: django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py
===================================================================
--- django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py     
2009-06-29 12:29:48 UTC (rev 11119)
+++ django/trunk/tests/regressiontests/urlpatterns_reverse/tests.py     
2009-06-29 14:02:17 UTC (rev 11120)
@@ -14,8 +14,9 @@
 ImproperlyConfigured: The included urlconf 
regressiontests.urlpatterns_reverse.no_urls doesn't have any patterns in it
 """}
 
+import unittest
 
-from django.core.urlresolvers import reverse, NoReverseMatch
+from django.core.urlresolvers import reverse, resolve, NoReverseMatch, 
Resolver404
 from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
 from django.shortcuts import redirect
 from django.test import TestCase
@@ -112,6 +113,21 @@
             else:
                 self.assertEquals(got, expected)
 
+class ResolverTests(unittest.TestCase):
+    def test_non_regex(self):
+        """
+        Verifies that we raise a Resolver404 if what we are resolving doesn't
+        meet the basic requirements of a path to match - i.e., at the very
+        least, it matches the root pattern '^/'. We must never return None
+        from resolve, or we will get a TypeError further down the line.
+
+        Regression for #10834.
+        """
+        self.assertRaises(Resolver404, resolve, '')
+        self.assertRaises(Resolver404, resolve, 'a')
+        self.assertRaises(Resolver404, resolve, '\\')
+        self.assertRaises(Resolver404, resolve, '.')
+
 class ReverseShortcutTests(TestCase):
     urls = 'regressiontests.urlpatterns_reverse.urls'
 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@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
-~----------~----~----~----~------~----~------~--~---

Reply via email to