diff options
| author | Adam Johnson <me@adamj.eu> | 2023-01-15 09:19:52 +0000 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-02-03 06:56:57 +0100 |
| commit | 017fa23d3b0aee9142f531c2a0002fc86c82a54c (patch) | |
| tree | 456483d46411d866cf5cd1df79f80a80eabff8a7 /tests/user_commands | |
| parent | 1250483ebf73f7a82ff820b94092c63ce4238264 (diff) | |
Fixed #34259 -- Passed called_from_command_line to command subparsers.
Diffstat (limited to 'tests/user_commands')
| -rw-r--r-- | tests/user_commands/management/commands/subparser_vanilla.py | 13 | ||||
| -rw-r--r-- | tests/user_commands/tests.py | 24 |
2 files changed, 37 insertions, 0 deletions
diff --git a/tests/user_commands/management/commands/subparser_vanilla.py b/tests/user_commands/management/commands/subparser_vanilla.py new file mode 100644 index 0000000000..1605f21cad --- /dev/null +++ b/tests/user_commands/management/commands/subparser_vanilla.py @@ -0,0 +1,13 @@ +import argparse + +from django.core.management.base import BaseCommand + + +class Command(BaseCommand): + def add_arguments(self, parser): + subparsers = parser.add_subparsers(parser_class=argparse.ArgumentParser) + parser_foo = subparsers.add_parser("foo") + parser_foo.add_argument("bar", type=int) + + def handle(self, *args, **options): + pass diff --git a/tests/user_commands/tests.py b/tests/user_commands/tests.py index e40632385c..408108b552 100644 --- a/tests/user_commands/tests.py +++ b/tests/user_commands/tests.py @@ -468,6 +468,30 @@ class CommandRunTests(AdminScriptTestCase): self.assertNoOutput(err) self.assertEqual(out.strip(), "Set foo") + def test_subparser_error_formatting(self): + self.write_settings("settings.py", apps=["user_commands"]) + out, err = self.run_manage(["subparser", "foo", "twelve"]) + self.maxDiff = None + self.assertNoOutput(out) + err_lines = err.splitlines() + self.assertEqual(len(err_lines), 2) + self.assertEqual( + err_lines[1], + "manage.py subparser foo: error: argument bar: invalid int value: 'twelve'", + ) + + def test_subparser_non_django_error_formatting(self): + self.write_settings("settings.py", apps=["user_commands"]) + out, err = self.run_manage(["subparser_vanilla", "foo", "seven"]) + self.assertNoOutput(out) + err_lines = err.splitlines() + self.assertEqual(len(err_lines), 2) + self.assertEqual( + err_lines[1], + "manage.py subparser_vanilla foo: error: argument bar: invalid int value: " + "'seven'", + ) + class UtilsTests(SimpleTestCase): def test_no_existent_external_program(self): |
