diff --git a/django/core/management/base.py b/django/core/management/base.py index b61d0b9b77..99997059dc 100644 --- a/django/core/management/base.py +++ b/django/core/management/base.py @@ -300,7 +300,8 @@ class BaseCommand(object): for opt in self.option_list: parser.add_option(opt) else: - parser = CommandParser(self, prog="%s %s" % (prog_name, subcommand), description=self.help or None) + parser = CommandParser(self, prog="%s %s" % (os.path.basename(prog_name), subcommand), + description=self.help or None) parser.add_argument('--version', action='version', version=self.get_version()) parser.add_argument('-v', '--verbosity', action='store', dest='verbosity', default='1', type=int, choices=[0, 1, 2, 3], diff --git a/tests/admin_scripts/tests.py b/tests/admin_scripts/tests.py index b8fea1d0d3..ec7f47ac36 100644 --- a/tests/admin_scripts/tests.py +++ b/tests/admin_scripts/tests.py @@ -1417,6 +1417,14 @@ class CommandTypes(AdminScriptTestCase): expected_labels = "('testlabel',)" self._test_base_command(args, expected_labels, option_a="'x'", option_b="'y'") + def test_base_command_with_wrong_option(self): + "User BaseCommands outputs command usage when wrong option is specified" + args = ['base_command', '--invalid'] + out, err = self.run_manage(args) + self.assertNoOutput(out) + self.assertOutput(err, "usage: manage.py base_command") + self.assertOutput(err, "error: unrecognized arguments: --invalid") + def _test_base_command(self, args, labels, option_a="'1'", option_b="'2'"): out, err = self.run_manage(args)