Fixed #22194 -- Added --list-tags option to check command.
Thanks Elvard for the patch.
This commit is contained in:
parent
b513fa5fc6
commit
395d75ea6b
|
@ -64,8 +64,10 @@ class CheckRegistry(object):
|
|||
return errors
|
||||
|
||||
def tag_exists(self, tag):
|
||||
tags = chain(*[check.tags for check in self.registered_checks if hasattr(check, 'tags')])
|
||||
return tag in tags
|
||||
return tag in self.tags_available()
|
||||
|
||||
def tags_available(self):
|
||||
return set(chain(*[check.tags for check in self.registered_checks if hasattr(check, 'tags')]))
|
||||
|
||||
|
||||
registry = CheckRegistry()
|
||||
|
|
|
@ -5,6 +5,7 @@ from optparse import make_option
|
|||
|
||||
from django.apps import apps
|
||||
from django.core import checks
|
||||
from django.core.checks.registry import registry
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
|
||||
|
||||
|
@ -16,9 +17,15 @@ class Command(BaseCommand):
|
|||
option_list = BaseCommand.option_list + (
|
||||
make_option('--tag', '-t', action='append', dest='tags',
|
||||
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):
|
||||
if options.get('list_tags'):
|
||||
self.stdout.write('\n'.join(sorted(registry.tags_available())))
|
||||
return
|
||||
|
||||
if app_labels:
|
||||
app_configs = [apps.get_app_config(app_label) for app_label in app_labels]
|
||||
else:
|
||||
|
|
|
@ -126,6 +126,10 @@ to perform only security and compatibility checks, you would run::
|
|||
|
||||
python manage.py check --tag security --tag compatibility
|
||||
|
||||
.. django-admin-option:: --list-tags
|
||||
|
||||
List all available tags.
|
||||
|
||||
compilemessages
|
||||
---------------
|
||||
|
||||
|
|
|
@ -194,6 +194,16 @@ class CheckCommandTests(TestCase):
|
|||
def test_invalid_tag(self):
|
||||
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):
|
||||
return [
|
||||
|
|
Loading…
Reference in New Issue