Improved test coverage and error messages for conf.urls.__init__.

This commit is contained in:
Anton Samarchyan 2017-01-27 11:47:19 -05:00 committed by Tim Graham
parent e07e743e0c
commit 0cbfc844a3
2 changed files with 14 additions and 3 deletions

View File

@ -22,12 +22,13 @@ def include(arg, namespace=None):
except ValueError:
if namespace:
raise ImproperlyConfigured(
'Cannot override the namespace for a dynamic module that provides a namespace'
'Cannot override the namespace for a dynamic module that '
'provides a namespace.'
)
raise ImproperlyConfigured(
'Passing a 3-tuple to django.conf.urls.include() is not supported. '
'Passing a %d-tuple to django.conf.urls.include() is not supported. '
'Pass a 2-tuple containing the list of patterns and app_name, '
'and provide the namespace argument to include() instead.',
'and provide the namespace argument to include() instead.' % len(arg)
)
else:
# No namespace hint - use manually provided namespace

View File

@ -1058,11 +1058,21 @@ class IncludeTests(SimpleTestCase):
with self.assertRaisesMessage(ImproperlyConfigured, msg):
include(self.url_patterns, 'namespace')
def test_include_4_tuple(self):
msg = 'Passing a 4-tuple to django.conf.urls.include() is not supported.'
with self.assertRaisesMessage(ImproperlyConfigured, msg):
include((self.url_patterns, 'app_name', 'namespace', 'blah'))
def test_include_3_tuple(self):
msg = 'Passing a 3-tuple to django.conf.urls.include() is not supported.'
with self.assertRaisesMessage(ImproperlyConfigured, msg):
include((self.url_patterns, 'app_name', 'namespace'))
def test_include_3_tuple_namespace(self):
msg = 'Cannot override the namespace for a dynamic module that provides a namespace.'
with self.assertRaisesMessage(ImproperlyConfigured, msg):
include((self.url_patterns, 'app_name', 'namespace'), 'namespace')
def test_include_2_tuple(self):
self.assertEqual(
include((self.url_patterns, 'app_name')),