[3.13] GH-87041: Fix incorrect indentation in argparse help (GH-124230) (#124373)

GH-87041: Fix incorrect indentation in argparse help (GH-124230)

In case of usage a long command along with max_help_position more than
the length of the command, the command's help was incorrectly started
on the new line.

(cherry picked from commit 7ee9921734)

Co-authored-by: Savannah Ostrowski <savannahostrowski@gmail.com>
Co-authored-by: Pavel Ditenbir <pavel.ditenbir@gmail.com>
This commit is contained in:
Miss Islington (bot) 2024-09-30 03:05:51 +02:00 committed by GitHub
parent 67aa68f1b4
commit 8d3a0fecbe
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 44 additions and 4 deletions

View file

@ -4981,6 +4981,46 @@ class TestHelpMetavarTypeFormatter(HelpTestCase):
version = ''
class TestHelpUsageLongSubparserCommand(TestCase):
"""Test that subparser commands are formatted correctly in help"""
maxDiff = None
def test_parent_help(self):
def custom_formatter(prog):
return argparse.RawTextHelpFormatter(prog, max_help_position=50)
parent_parser = argparse.ArgumentParser(
prog='PROG',
formatter_class=custom_formatter
)
cmd_subparsers = parent_parser.add_subparsers(title="commands",
metavar='CMD',
help='command to use')
cmd_subparsers.add_parser("add",
help="add something")
cmd_subparsers.add_parser("remove",
help="remove something")
cmd_subparsers.add_parser("a-very-long-command",
help="command that does something")
parser_help = parent_parser.format_help()
self.assertEqual(parser_help, textwrap.dedent('''\
usage: PROG [-h] CMD ...
options:
-h, --help show this help message and exit
commands:
CMD command to use
add add something
remove remove something
a-very-long-command command that does something
'''))
# =====================================
# Optional/Positional constructor tests
# =====================================