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'  ###")