gh-121151: argparse: Fix wrapping of long usage text of arguments inside a mutually exclusive groups (GH-121159)

This commit is contained in:
Ali Hamdan 2024-08-07 15:20:38 +02:00 committed by GitHub
parent 9e551f9b35
commit 013a092975
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 36 additions and 7 deletions

View file

@ -2959,12 +2959,12 @@ class TestMutuallyExclusiveLong(MEMixin, TestCase):
]
usage_when_not_required = '''\
usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
[--klmno KLMNO | --pqrst PQRST]
usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] [--klmno KLMNO |
--pqrst PQRST]
'''
usage_when_required = '''\
usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
(--klmno KLMNO | --pqrst PQRST)
usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] (--klmno KLMNO |
--pqrst PQRST)
'''
help = '''\
@ -4347,6 +4347,24 @@ class TestHelpUsageNoWhitespaceCrash(TestCase):
''')
self.assertEqual(parser.format_usage(), usage)
def test_long_mutex_groups_wrap(self):
parser = argparse.ArgumentParser(prog='PROG')
g = parser.add_mutually_exclusive_group()
g.add_argument('--op1', metavar='MET', nargs='?')
g.add_argument('--op2', metavar=('MET1', 'MET2'), nargs='*')
g.add_argument('--op3', nargs='*')
g.add_argument('--op4', metavar=('MET1', 'MET2'), nargs='+')
g.add_argument('--op5', nargs='+')
g.add_argument('--op6', nargs=3)
g.add_argument('--op7', metavar=('MET1', 'MET2', 'MET3'), nargs=3)
usage = textwrap.dedent('''\
usage: PROG [-h] [--op1 [MET] | --op2 [MET1 [MET2 ...]] | --op3 [OP3 ...] |
--op4 MET1 [MET2 ...] | --op5 OP5 [OP5 ...] | --op6 OP6 OP6 OP6 |
--op7 MET1 MET2 MET3]
''')
self.assertEqual(parser.format_usage(), usage)
class TestHelpVariableExpansion(HelpTestCase):
"""Test that variables are expanded properly in help messages"""