summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Foster <david@dafoster.net>2018-04-07 17:10:05 -0700
committerTim Graham <timograham@gmail.com>2018-04-11 13:52:20 -0400
commitc3055242c81812278ebdc93dd109f30d2cbd1610 (patch)
tree06ce20f2e91915729ef83a8db2611153dfb5de0a
parent2919a08c20d5ae48e381d6bd251d3b0d400d47d9 (diff)
Fixed #29301 -- Made management command --help display command-specific arguments before common arguments.
-rw-r--r--django/core/management/base.py4
-rw-r--r--tests/admin_scripts/tests.py7
2 files changed, 10 insertions, 1 deletions
diff --git a/django/core/management/base.py b/django/core/management/base.py
index 41b6b0fa91..9461f8654a 100644
--- a/django/core/management/base.py
+++ b/django/core/management/base.py
@@ -228,6 +228,9 @@ class BaseCommand:
self, prog="%s %s" % (os.path.basename(prog_name), subcommand),
description=self.help or None,
)
+ # Add command-specific arguments first so that they appear in the
+ # --help output before arguments common to all commands.
+ self.add_arguments(parser)
parser.add_argument('--version', action='version', version=self.get_version())
parser.add_argument(
'-v', '--verbosity', action='store', dest='verbosity', default=1,
@@ -251,7 +254,6 @@ class BaseCommand:
'--no-color', action='store_true', dest='no_color',
help="Don't colorize the command output.",
)
- self.add_arguments(parser)
return parser
def add_arguments(self, parser):
diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py
index d34f95ea40..3c4e01dfac 100644
--- a/tests/admin_scripts/tests.py
+++ b/tests/admin_scripts/tests.py
@@ -1495,6 +1495,13 @@ class CommandTypes(AdminScriptTestCase):
args = ['check', '--help']
out, err = self.run_manage(args)
self.assertNoOutput(err)
+ # Command-specific options like --tag appear before options common to
+ # all commands like --version.
+ tag_location = out.find('--tag')
+ version_location = out.find('--version')
+ self.assertNotEqual(tag_location, -1)
+ self.assertNotEqual(version_location, -1)
+ self.assertLess(tag_location, version_location)
self.assertOutput(out, "Checks the entire Django project for potential problems.")
def test_color_style(self):