@@ -4394,6 +4394,177 @@ def test_mixed(self):
43944394 self .assertEqual (NS (v = 3 , spam = True , badger = "B" ), args )
43954395 self .assertEqual (["C" , "--foo" , "4" ], extras )
43964396
4397+ # ==========================
4398+ # add_argument metavar tests
4399+ # ==========================
4400+
4401+ class TestAddArgumentMetavar (TestCase ):
4402+
4403+ EXPECTED_MESSAGE = "length of metavar tuple does not match nargs"
4404+
4405+ def do_test_no_exception (self , nargs , metavar ):
4406+ parser = argparse .ArgumentParser ()
4407+ parser .add_argument ("--foo" , nargs = nargs , metavar = metavar )
4408+
4409+ def do_test_exception (self , nargs , metavar ):
4410+ parser = argparse .ArgumentParser ()
4411+ with self .assertRaises (ValueError ) as cm :
4412+ parser .add_argument ("--foo" , nargs = nargs , metavar = metavar )
4413+ self .assertEqual (cm .exception .args [0 ], self .EXPECTED_MESSAGE )
4414+
4415+ # Unit tests for different values of metavar when nargs=None
4416+
4417+ def test_nargs_None_metavar_string (self ):
4418+ self .do_test_no_exception (nargs = None , metavar = "1" )
4419+
4420+ def test_nargs_None_metavar_length0 (self ):
4421+ self .do_test_exception (nargs = None , metavar = tuple ())
4422+
4423+ def test_nargs_None_metavar_length1 (self ):
4424+ self .do_test_no_exception (nargs = None , metavar = ("1" ))
4425+
4426+ def test_nargs_None_metavar_length2 (self ):
4427+ self .do_test_exception (nargs = None , metavar = ("1" , "2" ))
4428+
4429+ def test_nargs_None_metavar_length3 (self ):
4430+ self .do_test_exception (nargs = None , metavar = ("1" , "2" , "3" ))
4431+
4432+ # Unit tests for different values of metavar when nargs=?
4433+
4434+ def test_nargs_optional_metavar_string (self ):
4435+ self .do_test_no_exception (nargs = "?" , metavar = "1" )
4436+
4437+ def test_nargs_optional_metavar_length0 (self ):
4438+ self .do_test_exception (nargs = "?" , metavar = tuple ())
4439+
4440+ def test_nargs_optional_metavar_length1 (self ):
4441+ self .do_test_no_exception (nargs = "?" , metavar = ("1" ))
4442+
4443+ def test_nargs_optional_metavar_length2 (self ):
4444+ self .do_test_exception (nargs = "?" , metavar = ("1" , "2" ))
4445+
4446+ def test_nargs_optional_metavar_length3 (self ):
4447+ self .do_test_exception (nargs = "?" , metavar = ("1" , "2" , "3" ))
4448+
4449+ # Unit tests for different values of metavar when nargs=*
4450+
4451+ def test_nargs_zeroormore_metavar_string (self ):
4452+ self .do_test_no_exception (nargs = "*" , metavar = "1" )
4453+
4454+ def test_nargs_zeroormore_metavar_length0 (self ):
4455+ self .do_test_exception (nargs = "*" , metavar = tuple ())
4456+
4457+ def test_nargs_zeroormore_metavar_length1 (self ):
4458+ self .do_test_no_exception (nargs = "*" , metavar = ("1" ))
4459+
4460+ def test_nargs_zeroormore_metavar_length2 (self ):
4461+ self .do_test_no_exception (nargs = "*" , metavar = ("1" , "2" ))
4462+
4463+ def test_nargs_zeroormore_metavar_length3 (self ):
4464+ self .do_test_exception (nargs = "*" , metavar = ("1" , "2" , "3" ))
4465+
4466+ # Unit tests for different values of metavar when nargs=+
4467+
4468+ def test_nargs_oneormore_metavar_string (self ):
4469+ self .do_test_no_exception (nargs = "+" , metavar = "1" )
4470+
4471+ def test_nargs_oneormore_metavar_length0 (self ):
4472+ self .do_test_exception (nargs = "+" , metavar = tuple ())
4473+
4474+ def test_nargs_oneormore_metavar_length1 (self ):
4475+ self .do_test_no_exception (nargs = "+" , metavar = ("1" ))
4476+
4477+ def test_nargs_oneormore_metavar_length2 (self ):
4478+ self .do_test_no_exception (nargs = "+" , metavar = ("1" , "2" ))
4479+
4480+ def test_nargs_oneormore_metavar_length3 (self ):
4481+ self .do_test_exception (nargs = "+" , metavar = ("1" , "2" , "3" ))
4482+
4483+ # Unit tests for different values of metavar when nargs=...
4484+
4485+ def test_nargs_remainder_metavar_string (self ):
4486+ self .do_test_no_exception (nargs = "..." , metavar = "1" )
4487+
4488+ def test_nargs_remainder_metavar_length0 (self ):
4489+ self .do_test_no_exception (nargs = "..." , metavar = tuple ())
4490+
4491+ def test_nargs_remainder_metavar_length1 (self ):
4492+ self .do_test_no_exception (nargs = "..." , metavar = ("1" ))
4493+
4494+ def test_nargs_remainder_metavar_length2 (self ):
4495+ self .do_test_no_exception (nargs = "..." , metavar = ("1" , "2" ))
4496+
4497+ def test_nargs_remainder_metavar_length3 (self ):
4498+ self .do_test_no_exception (nargs = "..." , metavar = ("1" , "2" , "3" ))
4499+
4500+ # Unit tests for different values of metavar when nargs=A...
4501+
4502+ def test_nargs_parser_metavar_string (self ):
4503+ self .do_test_no_exception (nargs = "A..." , metavar = "1" )
4504+
4505+ def test_nargs_parser_metavar_length0 (self ):
4506+ self .do_test_exception (nargs = "A..." , metavar = tuple ())
4507+
4508+ def test_nargs_parser_metavar_length1 (self ):
4509+ self .do_test_no_exception (nargs = "A..." , metavar = ("1" ))
4510+
4511+ def test_nargs_parser_metavar_length2 (self ):
4512+ self .do_test_exception (nargs = "A..." , metavar = ("1" , "2" ))
4513+
4514+ def test_nargs_parser_metavar_length3 (self ):
4515+ self .do_test_exception (nargs = "A..." , metavar = ("1" , "2" , "3" ))
4516+
4517+ # Unit tests for different values of metavar when nargs=1
4518+
4519+ def test_nargs_1_metavar_string (self ):
4520+ self .do_test_no_exception (nargs = 1 , metavar = "1" )
4521+
4522+ def test_nargs_1_metavar_length0 (self ):
4523+ self .do_test_exception (nargs = 1 , metavar = tuple ())
4524+
4525+ def test_nargs_1_metavar_length1 (self ):
4526+ self .do_test_no_exception (nargs = 1 , metavar = ("1" ))
4527+
4528+ def test_nargs_1_metavar_length2 (self ):
4529+ self .do_test_exception (nargs = 1 , metavar = ("1" , "2" ))
4530+
4531+ def test_nargs_1_metavar_length3 (self ):
4532+ self .do_test_exception (nargs = 1 , metavar = ("1" , "2" , "3" ))
4533+
4534+ # Unit tests for different values of metavar when nargs=2
4535+
4536+ def test_nargs_2_metavar_string (self ):
4537+ self .do_test_no_exception (nargs = 2 , metavar = "1" )
4538+
4539+ def test_nargs_2_metavar_length0 (self ):
4540+ self .do_test_exception (nargs = 2 , metavar = tuple ())
4541+
4542+ def test_nargs_2_metavar_length1 (self ):
4543+ self .do_test_no_exception (nargs = 2 , metavar = ("1" ))
4544+
4545+ def test_nargs_2_metavar_length2 (self ):
4546+ self .do_test_no_exception (nargs = 2 , metavar = ("1" , "2" ))
4547+
4548+ def test_nargs_2_metavar_length3 (self ):
4549+ self .do_test_exception (nargs = 2 , metavar = ("1" , "2" , "3" ))
4550+
4551+ # Unit tests for different values of metavar when nargs=3
4552+
4553+ def test_nargs_3_metavar_string (self ):
4554+ self .do_test_no_exception (nargs = 3 , metavar = "1" )
4555+
4556+ def test_nargs_3_metavar_length0 (self ):
4557+ self .do_test_exception (nargs = 3 , metavar = tuple ())
4558+
4559+ def test_nargs_3_metavar_length1 (self ):
4560+ self .do_test_no_exception (nargs = 3 , metavar = ("1" ))
4561+
4562+ def test_nargs_3_metavar_length2 (self ):
4563+ self .do_test_exception (nargs = 3 , metavar = ("1" , "2" ))
4564+
4565+ def test_nargs_3_metavar_length3 (self ):
4566+ self .do_test_no_exception (nargs = 3 , metavar = ("1" , "2" , "3" ))
4567+
43974568# ============================
43984569# from argparse import * tests
43994570# ============================
0 commit comments