File tree Expand file tree Collapse file tree 3 files changed +17
-1
lines changed
tests/regressiontests/urlpatterns_reverse Expand file tree Collapse file tree 3 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -160,10 +160,16 @@ def regex(self):
160160 language_code = get_language ()
161161 if language_code not in self ._regex_dict :
162162 if isinstance (self ._regex , basestring ):
163- compiled_regex = re . compile ( self ._regex , re . UNICODE )
163+ regex = self ._regex
164164 else :
165165 regex = force_unicode (self ._regex )
166+ try :
166167 compiled_regex = re .compile (regex , re .UNICODE )
168+ except re .error , e :
169+ raise ImproperlyConfigured (
170+ u'"%s" is not a valid regular expression: %s' %
171+ (regex , unicode (e )))
172+
167173 self ._regex_dict [language_code ] = compiled_regex
168174 return self ._regex_dict [language_code ]
169175
Original file line number Diff line number Diff line change 1111 url (r'uncallable/$' , 'regressiontests.urlpatterns_reverse.views.uncallable' ),
1212 # Module does not exist
1313 url (r'missing_outer/$' , 'regressiontests.urlpatterns_reverse.missing_module.missing_view' ),
14+ # Regex contains an error (refs #6170)
15+ url (r'(regex_error/$' , 'regressiontestes.urlpatterns_reverse.views.empty_view' ),
1416)
Original file line number Diff line number Diff line change @@ -511,3 +511,11 @@ def test_erroneous_resolve(self):
511511 self .assertRaises (ViewDoesNotExist , self .client .get , '/missing_outer/' )
512512 self .assertRaises (ViewDoesNotExist , self .client .get , '/uncallable/' )
513513
514+ def test_erroneous_reverse (self ):
515+ """
516+ Ensure that a useful exception is raised when a regex is invalid in the
517+ URLConf.
518+ Refs #6170.
519+ """
520+ # The regex error will be hit before NoReverseMatch can be raised
521+ self .assertRaises (ImproperlyConfigured , reverse , 'whatever blah blah' )
You can’t perform that action at this time.
0 commit comments