@@ -4425,6 +4425,177 @@ def test_mixed(self):
44254425 self .assertEqual (NS (v = 3 , spam = True , badger = "B" ), args )
44264426 self .assertEqual (["C" , "--foo" , "4" ], extras )
44274427
4428+ # ==========================
4429+ # add_argument metavar tests
4430+ # ==========================
4431+
4432+ class TestAddArgumentMetavar (TestCase ):
4433+
4434+ EXPECTED_MESSAGE = "length of metavar tuple does not match nargs"
4435+
4436+ def do_test_no_exception (self , nargs , metavar ):
4437+ parser = argparse .ArgumentParser ()
4438+ parser .add_argument ("--foo" , nargs = nargs , metavar = metavar )
4439+
4440+ def do_test_exception (self , nargs , metavar ):
4441+ parser = argparse .ArgumentParser ()
4442+ with self .assertRaises (ValueError ) as cm :
4443+ parser .add_argument ("--foo" , nargs = nargs , metavar = metavar )
4444+ self .assertEqual (cm .exception .args [0 ], self .EXPECTED_MESSAGE )
4445+
4446+ # Unit tests for different values of metavar when nargs=None
4447+
4448+ def test_nargs_None_metavar_string (self ):
4449+ self .do_test_no_exception (nargs = None , metavar = "1" )
4450+
4451+ def test_nargs_None_metavar_length0 (self ):
4452+ self .do_test_exception (nargs = None , metavar = tuple ())
4453+
4454+ def test_nargs_None_metavar_length1 (self ):
4455+ self .do_test_no_exception (nargs = None , metavar = ("1" ))
4456+
4457+ def test_nargs_None_metavar_length2 (self ):
4458+ self .do_test_exception (nargs = None , metavar = ("1" , "2" ))
4459+
4460+ def test_nargs_None_metavar_length3 (self ):
4461+ self .do_test_exception (nargs = None , metavar = ("1" , "2" , "3" ))
4462+
4463+ # Unit tests for different values of metavar when nargs=?
4464+
4465+ def test_nargs_optional_metavar_string (self ):
4466+ self .do_test_no_exception (nargs = "?" , metavar = "1" )
4467+
4468+ def test_nargs_optional_metavar_length0 (self ):
4469+ self .do_test_exception (nargs = "?" , metavar = tuple ())
4470+
4471+ def test_nargs_optional_metavar_length1 (self ):
4472+ self .do_test_no_exception (nargs = "?" , metavar = ("1" ))
4473+
4474+ def test_nargs_optional_metavar_length2 (self ):
4475+ self .do_test_exception (nargs = "?" , metavar = ("1" , "2" ))
4476+
4477+ def test_nargs_optional_metavar_length3 (self ):
4478+ self .do_test_exception (nargs = "?" , metavar = ("1" , "2" , "3" ))
4479+
4480+ # Unit tests for different values of metavar when nargs=*
4481+
4482+ def test_nargs_zeroormore_metavar_string (self ):
4483+ self .do_test_no_exception (nargs = "*" , metavar = "1" )
4484+
4485+ def test_nargs_zeroormore_metavar_length0 (self ):
4486+ self .do_test_exception (nargs = "*" , metavar = tuple ())
4487+
4488+ def test_nargs_zeroormore_metavar_length1 (self ):
4489+ self .do_test_no_exception (nargs = "*" , metavar = ("1" ))
4490+
4491+ def test_nargs_zeroormore_metavar_length2 (self ):
4492+ self .do_test_no_exception (nargs = "*" , metavar = ("1" , "2" ))
4493+
4494+ def test_nargs_zeroormore_metavar_length3 (self ):
4495+ self .do_test_exception (nargs = "*" , metavar = ("1" , "2" , "3" ))
4496+
4497+ # Unit tests for different values of metavar when nargs=+
4498+
4499+ def test_nargs_oneormore_metavar_string (self ):
4500+ self .do_test_no_exception (nargs = "+" , metavar = "1" )
4501+
4502+ def test_nargs_oneormore_metavar_length0 (self ):
4503+ self .do_test_exception (nargs = "+" , metavar = tuple ())
4504+
4505+ def test_nargs_oneormore_metavar_length1 (self ):
4506+ self .do_test_no_exception (nargs = "+" , metavar = ("1" ))
4507+
4508+ def test_nargs_oneormore_metavar_length2 (self ):
4509+ self .do_test_no_exception (nargs = "+" , metavar = ("1" , "2" ))
4510+
4511+ def test_nargs_oneormore_metavar_length3 (self ):
4512+ self .do_test_exception (nargs = "+" , metavar = ("1" , "2" , "3" ))
4513+
4514+ # Unit tests for different values of metavar when nargs=...
4515+
4516+ def test_nargs_remainder_metavar_string (self ):
4517+ self .do_test_no_exception (nargs = "..." , metavar = "1" )
4518+
4519+ def test_nargs_remainder_metavar_length0 (self ):
4520+ self .do_test_no_exception (nargs = "..." , metavar = tuple ())
4521+
4522+ def test_nargs_remainder_metavar_length1 (self ):
4523+ self .do_test_no_exception (nargs = "..." , metavar = ("1" ))
4524+
4525+ def test_nargs_remainder_metavar_length2 (self ):
4526+ self .do_test_no_exception (nargs = "..." , metavar = ("1" , "2" ))
4527+
4528+ def test_nargs_remainder_metavar_length3 (self ):
4529+ self .do_test_no_exception (nargs = "..." , metavar = ("1" , "2" , "3" ))
4530+
4531+ # Unit tests for different values of metavar when nargs=A...
4532+
4533+ def test_nargs_parser_metavar_string (self ):
4534+ self .do_test_no_exception (nargs = "A..." , metavar = "1" )
4535+
4536+ def test_nargs_parser_metavar_length0 (self ):
4537+ self .do_test_exception (nargs = "A..." , metavar = tuple ())
4538+
4539+ def test_nargs_parser_metavar_length1 (self ):
4540+ self .do_test_no_exception (nargs = "A..." , metavar = ("1" ))
4541+
4542+ def test_nargs_parser_metavar_length2 (self ):
4543+ self .do_test_exception (nargs = "A..." , metavar = ("1" , "2" ))
4544+
4545+ def test_nargs_parser_metavar_length3 (self ):
4546+ self .do_test_exception (nargs = "A..." , metavar = ("1" , "2" , "3" ))
4547+
4548+ # Unit tests for different values of metavar when nargs=1
4549+
4550+ def test_nargs_1_metavar_string (self ):
4551+ self .do_test_no_exception (nargs = 1 , metavar = "1" )
4552+
4553+ def test_nargs_1_metavar_length0 (self ):
4554+ self .do_test_exception (nargs = 1 , metavar = tuple ())
4555+
4556+ def test_nargs_1_metavar_length1 (self ):
4557+ self .do_test_no_exception (nargs = 1 , metavar = ("1" ))
4558+
4559+ def test_nargs_1_metavar_length2 (self ):
4560+ self .do_test_exception (nargs = 1 , metavar = ("1" , "2" ))
4561+
4562+ def test_nargs_1_metavar_length3 (self ):
4563+ self .do_test_exception (nargs = 1 , metavar = ("1" , "2" , "3" ))
4564+
4565+ # Unit tests for different values of metavar when nargs=2
4566+
4567+ def test_nargs_2_metavar_string (self ):
4568+ self .do_test_no_exception (nargs = 2 , metavar = "1" )
4569+
4570+ def test_nargs_2_metavar_length0 (self ):
4571+ self .do_test_exception (nargs = 2 , metavar = tuple ())
4572+
4573+ def test_nargs_2_metavar_length1 (self ):
4574+ self .do_test_no_exception (nargs = 2 , metavar = ("1" ))
4575+
4576+ def test_nargs_2_metavar_length2 (self ):
4577+ self .do_test_no_exception (nargs = 2 , metavar = ("1" , "2" ))
4578+
4579+ def test_nargs_2_metavar_length3 (self ):
4580+ self .do_test_exception (nargs = 2 , metavar = ("1" , "2" , "3" ))
4581+
4582+ # Unit tests for different values of metavar when nargs=3
4583+
4584+ def test_nargs_3_metavar_string (self ):
4585+ self .do_test_no_exception (nargs = 3 , metavar = "1" )
4586+
4587+ def test_nargs_3_metavar_length0 (self ):
4588+ self .do_test_exception (nargs = 3 , metavar = tuple ())
4589+
4590+ def test_nargs_3_metavar_length1 (self ):
4591+ self .do_test_no_exception (nargs = 3 , metavar = ("1" ))
4592+
4593+ def test_nargs_3_metavar_length2 (self ):
4594+ self .do_test_exception (nargs = 3 , metavar = ("1" , "2" ))
4595+
4596+ def test_nargs_3_metavar_length3 (self ):
4597+ self .do_test_no_exception (nargs = 3 , metavar = ("1" , "2" , "3" ))
4598+
44284599# ============================
44294600# from argparse import * tests
44304601# ============================
0 commit comments