(self, subparser_help=False, prefix_chars=None,
aliases=False, usage=None)
| 2518 | self.assertRaises(ArgumentParserError, *args, **kwargs) |
| 2519 | |
| 2520 | def _get_parser(self, subparser_help=False, prefix_chars=None, |
| 2521 | aliases=False, usage=None): |
| 2522 | # create a parser with a subparsers argument |
| 2523 | if prefix_chars: |
| 2524 | parser = ErrorRaisingArgumentParser( |
| 2525 | prog='PROG', description='main description', usage=usage, |
| 2526 | prefix_chars=prefix_chars) |
| 2527 | parser.add_argument( |
| 2528 | prefix_chars[0] * 2 + 'foo', action='store_true', help='foo help') |
| 2529 | else: |
| 2530 | parser = ErrorRaisingArgumentParser( |
| 2531 | prog='PROG', description='main description', usage=usage) |
| 2532 | parser.add_argument( |
| 2533 | '--foo', action='store_true', help='foo help') |
| 2534 | parser.add_argument( |
| 2535 | 'bar', type=float, help='bar help') |
| 2536 | |
| 2537 | # check that only one subparsers argument can be added |
| 2538 | subparsers_kwargs = {'required': False} |
| 2539 | if aliases: |
| 2540 | subparsers_kwargs['metavar'] = 'COMMAND' |
| 2541 | subparsers_kwargs['title'] = 'commands' |
| 2542 | else: |
| 2543 | subparsers_kwargs['help'] = 'command help' |
| 2544 | subparsers = parser.add_subparsers(**subparsers_kwargs) |
| 2545 | self.assertRaisesRegex(ValueError, |
| 2546 | 'cannot have multiple subparser arguments', |
| 2547 | parser.add_subparsers) |
| 2548 | |
| 2549 | # add first sub-parser |
| 2550 | parser1_kwargs = dict(description='1 description') |
| 2551 | if subparser_help: |
| 2552 | parser1_kwargs['help'] = '1 help' |
| 2553 | if aliases: |
| 2554 | parser1_kwargs['aliases'] = ['1alias1', '1alias2'] |
| 2555 | parser1 = subparsers.add_parser('1', **parser1_kwargs) |
| 2556 | parser1.add_argument('-w', type=int, help='w help') |
| 2557 | parser1.add_argument('x', choices=['a', 'b', 'c'], help='x help') |
| 2558 | |
| 2559 | # add second sub-parser |
| 2560 | parser2_kwargs = dict(description='2 description') |
| 2561 | if subparser_help: |
| 2562 | parser2_kwargs['help'] = '2 help' |
| 2563 | parser2 = subparsers.add_parser('2', **parser2_kwargs) |
| 2564 | parser2.add_argument('-y', choices=['1', '2', '3'], help='y help') |
| 2565 | parser2.add_argument('z', type=complex, nargs='*', help='z help') |
| 2566 | |
| 2567 | # add third sub-parser |
| 2568 | parser3_kwargs = dict(description='3 description', |
| 2569 | usage='PROG --foo bar 3 t ...') |
| 2570 | if subparser_help: |
| 2571 | parser3_kwargs['help'] = '3 help' |
| 2572 | parser3 = subparsers.add_parser('3', **parser3_kwargs) |
| 2573 | parser3.add_argument('t', type=int, help='t help') |
| 2574 | parser3.add_argument('u', nargs='...', help='u help') |
| 2575 | |
| 2576 | # return the main parser |
| 2577 | return parser |
no test coverage detected