@@ -2057,6 +2057,30 @@ def test_required_subparsers_default(self):
20572057 ret = parser .parse_args (())
20582058 self .assertIsNone (ret .command )
20592059
2060+ def test_required_subparsers_no_destination_error (self ):
2061+ parser = ErrorRaisingArgumentParser ()
2062+ subparsers = parser .add_subparsers (required = True )
2063+ subparsers .add_parser ('foo' )
2064+ subparsers .add_parser ('bar' )
2065+ with self .assertRaises (ArgumentParserError ) as excinfo :
2066+ parser .parse_args (())
2067+ self .assertRegex (
2068+ excinfo .exception .stderr ,
2069+ 'error: the following arguments are required: {foo,bar}\n $'
2070+ )
2071+
2072+ def test_wrong_argument_subparsers_no_destination_error (self ):
2073+ parser = ErrorRaisingArgumentParser ()
2074+ subparsers = parser .add_subparsers (required = True )
2075+ subparsers .add_parser ('foo' )
2076+ subparsers .add_parser ('bar' )
2077+ with self .assertRaises (ArgumentParserError ) as excinfo :
2078+ parser .parse_args (('baz' ,))
2079+ self .assertRegex (
2080+ excinfo .exception .stderr ,
2081+ r"error: argument {foo,bar}: invalid choice: 'baz' \(choose from 'foo', 'bar'\)\n$"
2082+ )
2083+
20602084 def test_optional_subparsers (self ):
20612085 parser = ErrorRaisingArgumentParser ()
20622086 subparsers = parser .add_subparsers (dest = 'command' , required = False )
0 commit comments