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, The user can manually configure settings prior to using them. Otherwise,
Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE. 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 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 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. if not settings_module: # If it's set but is an empty string.
raise KeyError raise KeyError
except KeyError: except KeyError:
desc = ("setting %s" % name) if name else "settings"
raise ImproperlyConfigured( 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 " "You must either define the environment variable %s "
"or call settings.configure() before accessing settings." "or call settings.configure() before accessing settings."
% (name, ENVIRONMENT_VARIABLE)) % (desc, ENVIRONMENT_VARIABLE))
self._wrapped = Settings(settings_module) self._wrapped = Settings(settings_module)
self._configure_logging() self._configure_logging()

View File

@ -1603,3 +1603,15 @@ class StartProject(LiveServerTestCase, AdminScriptTestCase):
with codecs.open(path, 'r', 'utf-8') as f: with codecs.open(path, 'r', 'utf-8') as f:
self.assertEqual(f.read(), self.assertEqual(f.read(),
'Some non-ASCII text for testing ticket #18091:\nüäö €\n') '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' ###")