mirror of
https://github.com/django/django.git
synced 2025-08-18 17:50:58 +00:00
Fixed #23384 -- Allowed overriding part of a dictionary-type setting
This change is needed for upcoming changes where settings might be grouped in a parent dictionary. Thanks Tim Graham for the review.
This commit is contained in:
parent
05a8cef428
commit
66757fee7e
9 changed files with 123 additions and 5 deletions
6
tests/cache/tests.py
vendored
6
tests/cache/tests.py
vendored
|
@ -522,6 +522,7 @@ class BaseCacheTests(object):
|
|||
def _perform_cull_test(self, cull_cache, initial_count, final_count):
|
||||
# Create initial cache key entries. This will overflow the cache,
|
||||
# causing a cull.
|
||||
cull_cache.clear()
|
||||
for i in range(1, initial_count):
|
||||
cull_cache.set('cull%d' % i, 'value', 1000)
|
||||
count = 0
|
||||
|
@ -918,7 +919,10 @@ class DBCacheTests(BaseCacheTests, TransactionTestCase):
|
|||
stdout=stdout
|
||||
)
|
||||
self.assertEqual(stdout.getvalue(),
|
||||
"Cache table 'test cache table' already exists.\n" * len(settings.CACHES))
|
||||
"Cache table 'test cache table' already exists.\n" * len([
|
||||
k for k, v in settings.CACHES.items()
|
||||
if v['BACKEND']=='django.core.cache.backends.db.DatabaseCache'])
|
||||
)
|
||||
|
||||
def test_createcachetable_with_table_argument(self):
|
||||
"""
|
||||
|
|
|
@ -196,7 +196,7 @@ class ExecutorTests(MigrationTestBase):
|
|||
@override_settings(
|
||||
MIGRATION_MODULES={
|
||||
"migrations": "migrations.test_migrations_custom_user",
|
||||
"django.contrib.auth": "django.contrib.auth.migrations",
|
||||
"auth": "django.contrib.auth.migrations",
|
||||
},
|
||||
AUTH_USER_MODEL="migrations.Author",
|
||||
)
|
||||
|
|
|
@ -81,7 +81,10 @@ class LoaderTests(TestCase):
|
|||
# Ensure we've included unmigrated apps in there too
|
||||
self.assertIn("basic", project_state.real_apps)
|
||||
|
||||
@override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations_unmigdep"})
|
||||
@override_settings(MIGRATION_MODULES={
|
||||
"_clear_defaults": True,
|
||||
"migrations": "migrations.test_migrations_unmigdep"
|
||||
})
|
||||
def test_load_unmigrated_dependency(self):
|
||||
"""
|
||||
Makes sure the loader can load migrations with a dependency on an unmigrated app.
|
||||
|
|
|
@ -273,6 +273,63 @@ class SettingsTests(TestCase):
|
|||
self.assertRaises(ValueError, setattr, settings,
|
||||
'ALLOWED_INCLUDE_ROOTS', '/var/www/ssi/')
|
||||
|
||||
def test_dict_setting(self):
|
||||
"""
|
||||
Test that dictionary-type settings can be "complemented", that is existing
|
||||
setting keys/values are not overriden by user settings, but merged into the
|
||||
existing dict.
|
||||
"""
|
||||
s = LazySettings() # Start with fresh settings from global_settings.py
|
||||
# Simply overwriting the key
|
||||
s.configure(CACHES={'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}})
|
||||
self.assertEqual(s.CACHES['default']['BACKEND'],
|
||||
'django.core.cache.backends.dummy.DummyCache')
|
||||
|
||||
s = LazySettings()
|
||||
# More complex overwriting
|
||||
s.configure(CACHES={
|
||||
'default': {'LOCATION': 'unique-snowflake'},
|
||||
'temp': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}
|
||||
})
|
||||
self.assertDictEqual(s.CACHES, {
|
||||
'default': {
|
||||
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
|
||||
'LOCATION': 'unique-snowflake'
|
||||
},
|
||||
'temp': {
|
||||
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
|
||||
}
|
||||
})
|
||||
|
||||
def test_dict_setting_clear_defaults(self):
|
||||
"""
|
||||
Test the ability to deactivate the merge feature of dictionary settings.
|
||||
"""
|
||||
s = LazySettings()
|
||||
s.configure(CACHES={
|
||||
'_clear_defaults': True,
|
||||
'temp': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}
|
||||
})
|
||||
self.assertDictEqual(s.CACHES, {
|
||||
'_clear_defaults': True,
|
||||
'temp': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}
|
||||
})
|
||||
|
||||
# Also work on a subkey
|
||||
s = LazySettings()
|
||||
s.configure(CACHES={
|
||||
'default': {
|
||||
'_clear_defaults': True,
|
||||
'LOCATION': 'unique-snowflake',
|
||||
}
|
||||
})
|
||||
self.assertDictEqual(s.CACHES, {
|
||||
'default': {
|
||||
'_clear_defaults': True,
|
||||
'LOCATION': 'unique-snowflake',
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
class TestComplexSettingOverride(TestCase):
|
||||
def setUp(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue