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(
`