Fixed #19724 -- Output note when showing only core management commands
When listing available management commands, only core commands are listed if settings have any error. This commit adds a note in this case so errors are not totally silently skipped. Thanks Peter Davis for the report.
This commit is contained in:
parent
86c248aa64
commit
a098bee1b9
|
@ -249,6 +249,15 @@ class ManagementUtility(object):
|
|||
usage.append(style.NOTICE("[%s]" % app))
|
||||
for name in sorted(commands_dict[app]):
|
||||
usage.append(" %s" % name)
|
||||
# Output an extra note if settings are not properly configured
|
||||
try:
|
||||
from django.conf import settings
|
||||
settings.INSTALLED_APPS
|
||||
except ImproperlyConfigured as e:
|
||||
usage.append(style.NOTICE(
|
||||
"Note that only Django core commands are listed as settings "
|
||||
"are not properly configured (error: %s)." % e))
|
||||
|
||||
return '\n'.join(usage)
|
||||
|
||||
def fetch_command(self, subcommand):
|
||||
|
|
|
@ -1055,6 +1055,17 @@ class ManageSettingsWithSettingsErrors(AdminScriptTestCase):
|
|||
self.assertNoOutput(out)
|
||||
self.assertOutput(err, "KeyError: 'blah'")
|
||||
|
||||
def test_help(self):
|
||||
"""
|
||||
Test listing available commands output note when only core commands are
|
||||
available.
|
||||
"""
|
||||
self.write_settings('settings.py', sdict={'MEDIA_URL': '"/no_ending_slash"'})
|
||||
args = ['help']
|
||||
out, err = self.run_manage(args)
|
||||
self.assertOutput(out, 'only Django core commands are listed')
|
||||
self.assertNoOutput(err)
|
||||
|
||||
|
||||
class ManageValidate(AdminScriptTestCase):
|
||||
def tearDown(self):
|
||||
|
|
Loading…
Reference in New Issue