Fixed #12288 -- Added unique validation for INSTALLED_APPS

This commit is contained in:
SusanTan 2013-08-07 01:07:16 -07:00 committed by Tim Graham
parent 4fa2738ff3
commit 2ac89012d8
2 changed files with 24 additions and 0 deletions

View File

@ -107,6 +107,9 @@ class BaseSettings(object):
elif name == "ALLOWED_INCLUDE_ROOTS" and isinstance(value, six.string_types):
raise ValueError("The ALLOWED_INCLUDE_ROOTS setting must be set "
"to a tuple, not a string.")
elif name == "INSTALLED_APPS" and len(value) != len(set(value)):
raise ImproperlyConfigured("The INSTALLED_APPS setting must contain unique values.")
object.__setattr__(self, name, value)

View File

@ -226,6 +226,27 @@ class TestComplexSettingOverride(TestCase):
self.assertEqual('Overriding setting TEST_WARN can lead to unexpected behaviour.', str(w[-1].message))
class UniqueSettngsTests(TestCase):
"""
Tests for the INSTALLED_APPS setting.
"""
settings_module = settings
def setUp(self):
self._installed_apps = self.settings_module.INSTALLED_APPS
def tearDown(self):
self.settings_module.INSTALLED_APPS = self._installed_apps
def test_unique(self):
"""
An ImproperlyConfigured exception is raised if the INSTALLED_APPS contains
any duplicate strings.
"""
with self.assertRaises(ImproperlyConfigured):
self.settings_module.INSTALLED_APPS = ("myApp1", "myApp1", "myApp2", "myApp3")
class TrailingSlashURLTests(TestCase):
"""
Tests for the MEDIA_URL and STATIC_URL settings.