bpo-11874: fix assertion failure in argparse metavar handling (GH-1826) · python/cpython@4e6bd24 (original) (raw)

`@@ -4652,7 +4652,7 @@ def test_nargs_None_metavar_length0(self):

`

4652

4652

`self.do_test_exception(nargs=None, metavar=tuple())

`

4653

4653

``

4654

4654

`def test_nargs_None_metavar_length1(self):

`

4655

``

`-

self.do_test_no_exception(nargs=None, metavar=("1"))

`

``

4655

`+

self.do_test_no_exception(nargs=None, metavar=("1",))

`

4656

4656

``

4657

4657

`def test_nargs_None_metavar_length2(self):

`

4658

4658

`self.do_test_exception(nargs=None, metavar=("1", "2"))

`

`@@ -4669,7 +4669,7 @@ def test_nargs_optional_metavar_length0(self):

`

4669

4669

`self.do_test_exception(nargs="?", metavar=tuple())

`

4670

4670

``

4671

4671

`def test_nargs_optional_metavar_length1(self):

`

4672

``

`-

self.do_test_no_exception(nargs="?", metavar=("1"))

`

``

4672

`+

self.do_test_no_exception(nargs="?", metavar=("1",))

`

4673

4673

``

4674

4674

`def test_nargs_optional_metavar_length2(self):

`

4675

4675

`self.do_test_exception(nargs="?", metavar=("1", "2"))

`

`@@ -4686,7 +4686,7 @@ def test_nargs_zeroormore_metavar_length0(self):

`

4686

4686

`self.do_test_exception(nargs="*", metavar=tuple())

`

4687

4687

``

4688

4688

`def test_nargs_zeroormore_metavar_length1(self):

`

4689

``

`-

self.do_test_no_exception(nargs="*", metavar=("1"))

`

``

4689

`+

self.do_test_exception(nargs="*", metavar=("1",))

`

4690

4690

``

4691

4691

`def test_nargs_zeroormore_metavar_length2(self):

`

4692

4692

`self.do_test_no_exception(nargs="*", metavar=("1", "2"))

`

`@@ -4703,7 +4703,7 @@ def test_nargs_oneormore_metavar_length0(self):

`

4703

4703

`self.do_test_exception(nargs="+", metavar=tuple())

`

4704

4704

``

4705

4705

`def test_nargs_oneormore_metavar_length1(self):

`

4706

``

`-

self.do_test_no_exception(nargs="+", metavar=("1"))

`

``

4706

`+

self.do_test_exception(nargs="+", metavar=("1",))

`

4707

4707

``

4708

4708

`def test_nargs_oneormore_metavar_length2(self):

`

4709

4709

`self.do_test_no_exception(nargs="+", metavar=("1", "2"))

`

`@@ -4720,7 +4720,7 @@ def test_nargs_remainder_metavar_length0(self):

`

4720

4720

`self.do_test_no_exception(nargs="...", metavar=tuple())

`

4721

4721

``

4722

4722

`def test_nargs_remainder_metavar_length1(self):

`

4723

``

`-

self.do_test_no_exception(nargs="...", metavar=("1"))

`

``

4723

`+

self.do_test_no_exception(nargs="...", metavar=("1",))

`

4724

4724

``

4725

4725

`def test_nargs_remainder_metavar_length2(self):

`

4726

4726

`self.do_test_no_exception(nargs="...", metavar=("1", "2"))

`

`@@ -4737,7 +4737,7 @@ def test_nargs_parser_metavar_length0(self):

`

4737

4737

`self.do_test_exception(nargs="A...", metavar=tuple())

`

4738

4738

``

4739

4739

`def test_nargs_parser_metavar_length1(self):

`

4740

``

`-

self.do_test_no_exception(nargs="A...", metavar=("1"))

`

``

4740

`+

self.do_test_no_exception(nargs="A...", metavar=("1",))

`

4741

4741

``

4742

4742

`def test_nargs_parser_metavar_length2(self):

`

4743

4743

`self.do_test_exception(nargs="A...", metavar=("1", "2"))

`

`@@ -4754,7 +4754,7 @@ def test_nargs_1_metavar_length0(self):

`

4754

4754

`self.do_test_exception(nargs=1, metavar=tuple())

`

4755

4755

``

4756

4756

`def test_nargs_1_metavar_length1(self):

`

4757

``

`-

self.do_test_no_exception(nargs=1, metavar=("1"))

`

``

4757

`+

self.do_test_no_exception(nargs=1, metavar=("1",))

`

4758

4758

``

4759

4759

`def test_nargs_1_metavar_length2(self):

`

4760

4760

`self.do_test_exception(nargs=1, metavar=("1", "2"))

`

`@@ -4771,7 +4771,7 @@ def test_nargs_2_metavar_length0(self):

`

4771

4771

`self.do_test_exception(nargs=2, metavar=tuple())

`

4772

4772

``

4773

4773

`def test_nargs_2_metavar_length1(self):

`

4774

``

`-

self.do_test_no_exception(nargs=2, metavar=("1"))

`

``

4774

`+

self.do_test_exception(nargs=2, metavar=("1",))

`

4775

4775

``

4776

4776

`def test_nargs_2_metavar_length2(self):

`

4777

4777

`self.do_test_no_exception(nargs=2, metavar=("1", "2"))

`

`@@ -4788,7 +4788,7 @@ def test_nargs_3_metavar_length0(self):

`

4788

4788

`self.do_test_exception(nargs=3, metavar=tuple())

`

4789

4789

``

4790

4790

`def test_nargs_3_metavar_length1(self):

`

4791

``

`-

self.do_test_no_exception(nargs=3, metavar=("1"))

`

``

4791

`+

self.do_test_exception(nargs=3, metavar=("1",))

`

4792

4792

``

4793

4793

`def test_nargs_3_metavar_length2(self):

`

4794

4794

`self.do_test_exception(nargs=3, metavar=("1", "2"))

`

`@@ -4815,6 +4815,30 @@ def test_all_exports_everything_but_modules(self):

`

4815

4815

` ]

`

4816

4816

`self.assertEqual(sorted(items), sorted(argparse.all))

`

4817

4817

``

``

4818

+

``

4819

`+

class TestWrappingMetavar(TestCase):

`

``

4820

+

``

4821

`+

def setUp(self):

`

``

4822

`+

self.parser = ErrorRaisingArgumentParser(

`

``

4823

`+

'this_is_spammy_prog_with_a_long_name_sorry_about_the_name'

`

``

4824

`+

)

`

``

4825

`+

this metavar was triggering library assertion errors due to usage

`

``

4826

`+

message formatting incorrectly splitting on the ] chars within

`

``

4827

`+

metavar = '<http[s]://example:1234>'

`

``

4828

`+

self.parser.add_argument('--proxy', metavar=metavar)

`

``

4829

+

``

4830

`+

def test_help_with_metavar(self):

`

``

4831

`+

help_text = self.parser.format_help()

`

``

4832

`+

self.assertEqual(help_text, textwrap.dedent('''\

`

``

4833

`+

usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name

`

``

4834

`+

[-h] [--proxy <http[s]://example:1234>]

`

``

4835

+

``

4836

`+

optional arguments:

`

``

4837

`+

-h, --help show this help message and exit

`

``

4838

`+

--proxy <http[s]://example:1234>

`

``

4839

`+

'''))

`

``

4840

+

``

4841

+

4818

4842

`def test_main():

`

4819

4843

`# silence warnings about version argument - these are expected

`

4820

4844

`with test_support.check_warnings(

`