From 3541a10d492db6d1f509f3a50a024568c16c5229 Mon Sep 17 00:00:00 2001 From: Carl Meyer <carl@oddbird.net> Date: Mon, 22 Oct 2012 18:13:59 -0600 Subject: [PATCH] Fixed #19164 -- Fixed diffsettings command broken in fix for #18545. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks Mario César for the report and draft patch. --- django/conf/__init__.py | 7 ++++--- tests/regressiontests/admin_scripts/tests.py | 12 ++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/django/conf/__init__.py b/django/conf/__init__.py index 7452013671..1804c851bf 100644 --- a/django/conf/__init__.py +++ b/django/conf/__init__.py @@ -25,7 +25,7 @@ class LazySettings(LazyObject): The user can manually configure settings prior to using them. Otherwise, Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE. """ - def _setup(self, name): + def _setup(self, name=None): """ Load the settings module pointed to by the environment variable. This is used the first time we need any settings at all, if the user has not @@ -36,11 +36,12 @@ class LazySettings(LazyObject): if not settings_module: # If it's set but is an empty string. raise KeyError except KeyError: + desc = ("setting %s" % name) if name else "settings" raise ImproperlyConfigured( - "Requested setting %s, but settings are not configured. " + "Requested %s, but settings are not configured. " "You must either define the environment variable %s " "or call settings.configure() before accessing settings." - % (name, ENVIRONMENT_VARIABLE)) + % (desc, ENVIRONMENT_VARIABLE)) self._wrapped = Settings(settings_module) self._configure_logging() diff --git a/tests/regressiontests/admin_scripts/tests.py b/tests/regressiontests/admin_scripts/tests.py index 6f524bea29..a5deba7fe1 100644 --- a/tests/regressiontests/admin_scripts/tests.py +++ b/tests/regressiontests/admin_scripts/tests.py @@ -1603,3 +1603,15 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase): with codecs.open(path, 'r', 'utf-8') as f: self.assertEqual(f.read(), 'Some non-ASCII text for testing ticket #18091:\nüäö €\n') + + +class DiffSettings(AdminScriptTestCase): + """Tests for diffsettings management command.""" + def test_basic(self): + "Runs without error and emits settings diff." + self.write_settings('settings_to_diff.py', sdict={'FOO': '"bar"'}) + args = ['diffsettings', '--settings=settings_to_diff'] + out, err = self.run_manage(args) + self.remove_settings('settings_to_diff.py') + self.assertNoOutput(err) + self.assertOutput(out, "FOO = 'bar' ###")