Fixed #19164 -- Fixed diffsettings command broken in fix for #18545.

Thanks Mario César for the report and draft patch.
This commit is contained in:
Carl Meyer 2012-10-22 18:13:59 -06:00
parent ea57112d53
commit 3541a10d49
2 changed files with 16 additions and 3 deletions

View File

@ -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()

View File

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