1
0
mirror of https://github.com/django/django.git synced 2025-07-18 16:49:13 +00:00

[1.0.X] Fixed #10834 -- Added bucket condition to ensure that URL resolvers won't ever return None. Thanks to Chris Cahoon for the patch.

Merge of r11120 from trunk.


git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@11122 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2009-06-29 14:23:28 +00:00
parent c4e240fae3
commit 1153d4bf80
2 changed files with 18 additions and 1 deletions

View File

@ -192,6 +192,7 @@ class RegexURLResolver(object):
return sub_match[0], sub_match[1], sub_match_dict return sub_match[0], sub_match[1], sub_match_dict
tried.append(pattern.regex.pattern) tried.append(pattern.regex.pattern)
raise Resolver404, {'tried': tried, 'path': new_path} raise Resolver404, {'tried': tried, 'path': new_path}
raise Resolver404, {'tried': [], 'path' : path}
def _get_urlconf_module(self): def _get_urlconf_module(self):
try: try:

View File

@ -2,7 +2,9 @@
Unit tests for reverse URL lookups. Unit tests for reverse URL lookups.
""" """
from django.core.urlresolvers import reverse, NoReverseMatch import unittest
from django.core.urlresolvers import reverse, resolve, NoReverseMatch, Resolver404
from django.test import TestCase from django.test import TestCase
test_data = ( test_data = (
@ -96,3 +98,17 @@ class URLPatternReverse(TestCase):
else: else:
self.assertEquals(got, expected) 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, '.')