[1.7.x] Fixed #22194 -- Added --list-tags option to check command.
Thanks Elvard for the patch.
Backport of 395d75ea6b
from master
This commit is contained in:
parent
32e6237450
commit
ddd25b280f
|
@ -64,8 +64,10 @@ class CheckRegistry(object):
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
def tag_exists(self, tag):
|
def tag_exists(self, tag):
|
||||||
tags = chain(*[check.tags for check in self.registered_checks if hasattr(check, 'tags')])
|
return tag in self.tags_available()
|
||||||
return tag in tags
|
|
||||||
|
def tags_available(self):
|
||||||
|
return set(chain(*[check.tags for check in self.registered_checks if hasattr(check, 'tags')]))
|
||||||
|
|
||||||
|
|
||||||
registry = CheckRegistry()
|
registry = CheckRegistry()
|
||||||
|
|
|
@ -5,6 +5,7 @@ from optparse import make_option
|
||||||
|
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.core import checks
|
from django.core import checks
|
||||||
|
from django.core.checks.registry import registry
|
||||||
from django.core.management.base import BaseCommand, CommandError
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,9 +17,15 @@ class Command(BaseCommand):
|
||||||
option_list = BaseCommand.option_list + (
|
option_list = BaseCommand.option_list + (
|
||||||
make_option('--tag', '-t', action='append', dest='tags',
|
make_option('--tag', '-t', action='append', dest='tags',
|
||||||
help='Run only checks labeled with given tag.'),
|
help='Run only checks labeled with given tag.'),
|
||||||
|
make_option('--list-tags', action='store_true', dest='list_tags',
|
||||||
|
help='List available tags.'),
|
||||||
)
|
)
|
||||||
|
|
||||||
def handle(self, *app_labels, **options):
|
def handle(self, *app_labels, **options):
|
||||||
|
if options.get('list_tags'):
|
||||||
|
self.stdout.write('\n'.join(sorted(registry.tags_available())))
|
||||||
|
return
|
||||||
|
|
||||||
if app_labels:
|
if app_labels:
|
||||||
app_configs = [apps.get_app_config(app_label) for app_label in app_labels]
|
app_configs = [apps.get_app_config(app_label) for app_label in app_labels]
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -126,6 +126,10 @@ to perform only security and compatibility checks, you would run::
|
||||||
|
|
||||||
python manage.py check --tag security --tag compatibility
|
python manage.py check --tag security --tag compatibility
|
||||||
|
|
||||||
|
.. django-admin-option:: --list-tags
|
||||||
|
|
||||||
|
List all available tags.
|
||||||
|
|
||||||
compilemessages
|
compilemessages
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -194,6 +194,16 @@ class CheckCommandTests(TestCase):
|
||||||
def test_invalid_tag(self):
|
def test_invalid_tag(self):
|
||||||
self.assertRaises(CommandError, call_command, 'check', tags=['missingtag'])
|
self.assertRaises(CommandError, call_command, 'check', tags=['missingtag'])
|
||||||
|
|
||||||
|
@override_system_checks([simple_system_check])
|
||||||
|
def test_list_tags_empty(self):
|
||||||
|
call_command('check', list_tags=True)
|
||||||
|
self.assertEqual('\n', sys.stdout.getvalue())
|
||||||
|
|
||||||
|
@override_system_checks([tagged_system_check])
|
||||||
|
def test_list_tags(self):
|
||||||
|
call_command('check', list_tags=True)
|
||||||
|
self.assertEqual('simpletag\n', sys.stdout.getvalue())
|
||||||
|
|
||||||
|
|
||||||
def custom_error_system_check(app_configs, **kwargs):
|
def custom_error_system_check(app_configs, **kwargs):
|
||||||
return [
|
return [
|
||||||
|
|
Loading…
Reference in New Issue