@@ -1708,7 +1708,8 @@ class TestAddSubparsers(TestCase):
17081708 def assertArgumentParserError (self , * args , ** kwargs ):
17091709 self .assertRaises (ArgumentParserError , * args , ** kwargs )
17101710
1711- def _get_parser (self , subparser_help = False , prefix_chars = None ):
1711+ def _get_parser (self , subparser_help = False , prefix_chars = None ,
1712+ aliases = False ):
17121713 # create a parser with a subparsers argument
17131714 if prefix_chars :
17141715 parser = ErrorRaisingArgumentParser (
@@ -1724,13 +1725,21 @@ def _get_parser(self, subparser_help=False, prefix_chars=None):
17241725 'bar' , type = float , help = 'bar help' )
17251726
17261727 # check that only one subparsers argument can be added
1727- subparsers = parser .add_subparsers (help = 'command help' )
1728+ subparsers_kwargs = {}
1729+ if aliases :
1730+ subparsers_kwargs ['metavar' ] = 'COMMAND'
1731+ subparsers_kwargs ['title' ] = 'commands'
1732+ else :
1733+ subparsers_kwargs ['help' ] = 'command help'
1734+ subparsers = parser .add_subparsers (** subparsers_kwargs )
17281735 self .assertArgumentParserError (parser .add_subparsers )
17291736
17301737 # add first sub-parser
17311738 parser1_kwargs = dict (description = '1 description' )
17321739 if subparser_help :
17331740 parser1_kwargs ['help' ] = '1 help'
1741+ if aliases :
1742+ parser1_kwargs ['aliases' ] = ['1alias1' , '1alias2' ]
17341743 parser1 = subparsers .add_parser ('1' , ** parser1_kwargs )
17351744 parser1 .add_argument ('-w' , type = int , help = 'w help' )
17361745 parser1 .add_argument ('x' , choices = 'abc' , help = 'x help' )
@@ -1947,6 +1956,44 @@ def test_subparser2_help(self):
19471956 -y {1,2,3} y help
19481957 ''' ))
19491958
1959+ def test_alias_invocation (self ):
1960+ parser = self ._get_parser (aliases = True )
1961+ self .assertEqual (
1962+ parser .parse_known_args ('0.5 1alias1 b' .split ()),
1963+ (NS (foo = False , bar = 0.5 , w = None , x = 'b' ), []),
1964+ )
1965+ self .assertEqual (
1966+ parser .parse_known_args ('0.5 1alias2 b' .split ()),
1967+ (NS (foo = False , bar = 0.5 , w = None , x = 'b' ), []),
1968+ )
1969+
1970+ def test_error_alias_invocation (self ):
1971+ parser = self ._get_parser (aliases = True )
1972+ self .assertArgumentParserError (parser .parse_args ,
1973+ '0.5 1alias3 b' .split ())
1974+
1975+ def test_alias_help (self ):
1976+ parser = self ._get_parser (aliases = True , subparser_help = True )
1977+ self .maxDiff = None
1978+ self .assertEqual (parser .format_help (), textwrap .dedent ("""\
1979+ usage: PROG [-h] [--foo] bar COMMAND ...
1980+
1981+ main description
1982+
1983+ positional arguments:
1984+ bar bar help
1985+
1986+ optional arguments:
1987+ -h, --help show this help message and exit
1988+ --foo foo help
1989+
1990+ commands:
1991+ COMMAND
1992+ 1 (1alias1, 1alias2)
1993+ 1 help
1994+ 2 2 help
1995+ """ ))
1996+
19501997# ============
19511998# Groups tests
19521999# ============
0 commit comments