mirror of
https://github.com/django/django.git
synced 2024-12-23 01:25:58 +00:00
Fixed #24776 -- Improved apps.get_app_config() error message on fully-qualified package names.
This commit is contained in:
parent
70faaccc3e
commit
0688a7946a
@ -147,7 +147,12 @@ class Apps(object):
|
|||||||
try:
|
try:
|
||||||
return self.app_configs[app_label]
|
return self.app_configs[app_label]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise LookupError("No installed app with label '%s'." % app_label)
|
message = "No installed app with label '%s'." % app_label
|
||||||
|
for app_config in self.get_app_configs():
|
||||||
|
if app_config.name == app_label:
|
||||||
|
message += " Did you mean '%s'?" % app_config.label
|
||||||
|
break
|
||||||
|
raise LookupError(message)
|
||||||
|
|
||||||
# This method is performance-critical at least for Django's test suite.
|
# This method is performance-critical at least for Django's test suite.
|
||||||
@lru_cache.lru_cache(maxsize=None)
|
@lru_cache.lru_cache(maxsize=None)
|
||||||
|
@ -68,8 +68,8 @@ class Command(BaseCommand):
|
|||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
app_config = apps.get_app_config(exclude)
|
app_config = apps.get_app_config(exclude)
|
||||||
except LookupError:
|
except LookupError as e:
|
||||||
raise CommandError('Unknown app in excludes: %s' % exclude)
|
raise CommandError(str(e))
|
||||||
excluded_apps.add(app_config)
|
excluded_apps.add(app_config)
|
||||||
|
|
||||||
if len(app_labels) == 0:
|
if len(app_labels) == 0:
|
||||||
@ -87,8 +87,8 @@ class Command(BaseCommand):
|
|||||||
app_label, model_label = label.split('.')
|
app_label, model_label = label.split('.')
|
||||||
try:
|
try:
|
||||||
app_config = apps.get_app_config(app_label)
|
app_config = apps.get_app_config(app_label)
|
||||||
except LookupError:
|
except LookupError as e:
|
||||||
raise CommandError("Unknown application: %s" % app_label)
|
raise CommandError(str(e))
|
||||||
if app_config.models_module is None or app_config in excluded_apps:
|
if app_config.models_module is None or app_config in excluded_apps:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
@ -111,8 +111,8 @@ class Command(BaseCommand):
|
|||||||
app_label = label
|
app_label = label
|
||||||
try:
|
try:
|
||||||
app_config = apps.get_app_config(app_label)
|
app_config = apps.get_app_config(app_label)
|
||||||
except LookupError:
|
except LookupError as e:
|
||||||
raise CommandError("Unknown application: %s" % app_label)
|
raise CommandError(str(e))
|
||||||
if app_config.models_module is None or app_config in excluded_apps:
|
if app_config.models_module is None or app_config in excluded_apps:
|
||||||
continue
|
continue
|
||||||
app_list[app_config] = None
|
app_list[app_config] = None
|
||||||
|
@ -121,6 +121,10 @@ class AppsTests(SimpleTestCase):
|
|||||||
with self.assertRaises(LookupError):
|
with self.assertRaises(LookupError):
|
||||||
apps.get_app_config('webdesign')
|
apps.get_app_config('webdesign')
|
||||||
|
|
||||||
|
msg = "No installed app with label 'django.contrib.auth'. Did you mean 'myauth'"
|
||||||
|
with self.assertRaisesMessage(LookupError, msg):
|
||||||
|
apps.get_app_config('django.contrib.auth')
|
||||||
|
|
||||||
@override_settings(INSTALLED_APPS=SOME_INSTALLED_APPS)
|
@override_settings(INSTALLED_APPS=SOME_INSTALLED_APPS)
|
||||||
def test_is_installed(self):
|
def test_is_installed(self):
|
||||||
"""
|
"""
|
||||||
|
2
tests/fixtures/tests.py
vendored
2
tests/fixtures/tests.py
vendored
@ -216,7 +216,7 @@ class FixtureLoadingTests(DumpDataAssertMixin, TestCase):
|
|||||||
|
|
||||||
# Excluding a bogus app should throw an error
|
# Excluding a bogus app should throw an error
|
||||||
with six.assertRaisesRegex(self, management.CommandError,
|
with six.assertRaisesRegex(self, management.CommandError,
|
||||||
"Unknown app in excludes: foo_app"):
|
"No installed app with label 'foo_app'."):
|
||||||
self._dumpdata_assert(['fixtures', 'sites'], '', exclude_list=['foo_app'])
|
self._dumpdata_assert(['fixtures', 'sites'], '', exclude_list=['foo_app'])
|
||||||
|
|
||||||
# Excluding a bogus model should throw an error
|
# Excluding a bogus model should throw an error
|
||||||
|
Loading…
Reference in New Issue
Block a user