diff options
| author | Claude Paroz <claude@2xlibre.net> | 2014-08-29 14:54:08 +0200 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2014-08-30 12:37:10 +0200 |
| commit | 66757fee7e921ad4c35e0b3f80c25e026100b31c (patch) | |
| tree | 0b6a6e10a1d800532d114ab4b5b4a2d6f7d73abd /tests/settings_tests | |
| parent | 05a8cef4288e2a85dbaff12bc2683a75c9998618 (diff) | |
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.
Diffstat (limited to 'tests/settings_tests')
| -rw-r--r-- | tests/settings_tests/tests.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/settings_tests/tests.py b/tests/settings_tests/tests.py index 2dcf62abb5..784346946d 100644 --- a/tests/settings_tests/tests.py +++ b/tests/settings_tests/tests.py @@ -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): |
