bpo-11874: fix assertion failure in argparse metavar handling (GH-1826) · python/cpython@66f02aa (original) (raw)
`@@ -4955,7 +4955,7 @@ def test_nargs_None_metavar_length0(self):
`
4955
4955
`self.do_test_exception(nargs=None, metavar=tuple())
`
4956
4956
``
4957
4957
`def test_nargs_None_metavar_length1(self):
`
4958
``
`-
self.do_test_no_exception(nargs=None, metavar=("1"))
`
``
4958
`+
self.do_test_no_exception(nargs=None, metavar=("1",))
`
4959
4959
``
4960
4960
`def test_nargs_None_metavar_length2(self):
`
4961
4961
`self.do_test_exception(nargs=None, metavar=("1", "2"))
`
`@@ -4972,7 +4972,7 @@ def test_nargs_optional_metavar_length0(self):
`
4972
4972
`self.do_test_exception(nargs="?", metavar=tuple())
`
4973
4973
``
4974
4974
`def test_nargs_optional_metavar_length1(self):
`
4975
``
`-
self.do_test_no_exception(nargs="?", metavar=("1"))
`
``
4975
`+
self.do_test_no_exception(nargs="?", metavar=("1",))
`
4976
4976
``
4977
4977
`def test_nargs_optional_metavar_length2(self):
`
4978
4978
`self.do_test_exception(nargs="?", metavar=("1", "2"))
`
`@@ -4989,7 +4989,7 @@ def test_nargs_zeroormore_metavar_length0(self):
`
4989
4989
`self.do_test_exception(nargs="*", metavar=tuple())
`
4990
4990
``
4991
4991
`def test_nargs_zeroormore_metavar_length1(self):
`
4992
``
`-
self.do_test_no_exception(nargs="*", metavar=("1"))
`
``
4992
`+
self.do_test_exception(nargs="*", metavar=("1",))
`
4993
4993
``
4994
4994
`def test_nargs_zeroormore_metavar_length2(self):
`
4995
4995
`self.do_test_no_exception(nargs="*", metavar=("1", "2"))
`
`@@ -5006,7 +5006,7 @@ def test_nargs_oneormore_metavar_length0(self):
`
5006
5006
`self.do_test_exception(nargs="+", metavar=tuple())
`
5007
5007
``
5008
5008
`def test_nargs_oneormore_metavar_length1(self):
`
5009
``
`-
self.do_test_no_exception(nargs="+", metavar=("1"))
`
``
5009
`+
self.do_test_exception(nargs="+", metavar=("1",))
`
5010
5010
``
5011
5011
`def test_nargs_oneormore_metavar_length2(self):
`
5012
5012
`self.do_test_no_exception(nargs="+", metavar=("1", "2"))
`
`@@ -5023,7 +5023,7 @@ def test_nargs_remainder_metavar_length0(self):
`
5023
5023
`self.do_test_no_exception(nargs="...", metavar=tuple())
`
5024
5024
``
5025
5025
`def test_nargs_remainder_metavar_length1(self):
`
5026
``
`-
self.do_test_no_exception(nargs="...", metavar=("1"))
`
``
5026
`+
self.do_test_no_exception(nargs="...", metavar=("1",))
`
5027
5027
``
5028
5028
`def test_nargs_remainder_metavar_length2(self):
`
5029
5029
`self.do_test_no_exception(nargs="...", metavar=("1", "2"))
`
`@@ -5040,7 +5040,7 @@ def test_nargs_parser_metavar_length0(self):
`
5040
5040
`self.do_test_exception(nargs="A...", metavar=tuple())
`
5041
5041
``
5042
5042
`def test_nargs_parser_metavar_length1(self):
`
5043
``
`-
self.do_test_no_exception(nargs="A...", metavar=("1"))
`
``
5043
`+
self.do_test_no_exception(nargs="A...", metavar=("1",))
`
5044
5044
``
5045
5045
`def test_nargs_parser_metavar_length2(self):
`
5046
5046
`self.do_test_exception(nargs="A...", metavar=("1", "2"))
`
`@@ -5057,7 +5057,7 @@ def test_nargs_1_metavar_length0(self):
`
5057
5057
`self.do_test_exception(nargs=1, metavar=tuple())
`
5058
5058
``
5059
5059
`def test_nargs_1_metavar_length1(self):
`
5060
``
`-
self.do_test_no_exception(nargs=1, metavar=("1"))
`
``
5060
`+
self.do_test_no_exception(nargs=1, metavar=("1",))
`
5061
5061
``
5062
5062
`def test_nargs_1_metavar_length2(self):
`
5063
5063
`self.do_test_exception(nargs=1, metavar=("1", "2"))
`
`@@ -5074,7 +5074,7 @@ def test_nargs_2_metavar_length0(self):
`
5074
5074
`self.do_test_exception(nargs=2, metavar=tuple())
`
5075
5075
``
5076
5076
`def test_nargs_2_metavar_length1(self):
`
5077
``
`-
self.do_test_no_exception(nargs=2, metavar=("1"))
`
``
5077
`+
self.do_test_exception(nargs=2, metavar=("1",))
`
5078
5078
``
5079
5079
`def test_nargs_2_metavar_length2(self):
`
5080
5080
`self.do_test_no_exception(nargs=2, metavar=("1", "2"))
`
`@@ -5091,7 +5091,7 @@ def test_nargs_3_metavar_length0(self):
`
5091
5091
`self.do_test_exception(nargs=3, metavar=tuple())
`
5092
5092
``
5093
5093
`def test_nargs_3_metavar_length1(self):
`
5094
``
`-
self.do_test_no_exception(nargs=3, metavar=("1"))
`
``
5094
`+
self.do_test_exception(nargs=3, metavar=("1",))
`
5095
5095
``
5096
5096
`def test_nargs_3_metavar_length2(self):
`
5097
5097
`self.do_test_exception(nargs=3, metavar=("1", "2"))
`
`@@ -5118,6 +5118,30 @@ def test_all_exports_everything_but_modules(self):
`
5118
5118
` ]
`
5119
5119
`self.assertEqual(sorted(items), sorted(argparse.all))
`
5120
5120
``
``
5121
+
``
5122
`+
class TestWrappingMetavar(TestCase):
`
``
5123
+
``
5124
`+
def setUp(self):
`
``
5125
`+
self.parser = ErrorRaisingArgumentParser(
`
``
5126
`+
'this_is_spammy_prog_with_a_long_name_sorry_about_the_name'
`
``
5127
`+
)
`
``
5128
`+
this metavar was triggering library assertion errors due to usage
`
``
5129
`+
message formatting incorrectly splitting on the ] chars within
`
``
5130
`+
metavar = '<http[s]://example:1234>'
`
``
5131
`+
self.parser.add_argument('--proxy', metavar=metavar)
`
``
5132
+
``
5133
`+
def test_help_with_metavar(self):
`
``
5134
`+
help_text = self.parser.format_help()
`
``
5135
`+
self.assertEqual(help_text, textwrap.dedent('''\
`
``
5136
`+
usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
`
``
5137
`+
[-h] [--proxy <http[s]://example:1234>]
`
``
5138
+
``
5139
`+
optional arguments:
`
``
5140
`+
-h, --help show this help message and exit
`
``
5141
`+
--proxy <http[s]://example:1234>
`
``
5142
`+
'''))
`
``
5143
+
``
5144
+
5121
5145
`def test_main():
`
5122
5146
`support.run_unittest(name)
`
5123
5147
`# Remove global references to avoid looking like we have refleaks.
`