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.

`