annotate Lib/test/test_argparse.py @ 84007:dbfbdf2b5c19 3.3

Fix #17967: For ftp urls CWD to target instead of hopping to each directory towards target. This fixes a bug where target is accessible, but parent directories are restricted.
author Senthil Kumaran <senthil@uthcode.com>
date Sat, 01 Jun 2013 08:27:06 -0700
parents 9ae9326cd79a
children d5a0698a8354
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59990
7251e737a5d8 Merged revisions 79388 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 59285
diff changeset
1 # Author: Steven J. Bethard <steven.bethard@gmail.com>.
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3 import codecs
65863
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4 import inspect
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
5 import os
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
6 import shutil
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
7 import stat
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
8 import sys
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
9 import textwrap
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
10 import tempfile
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
11 import unittest
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
12 import argparse
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
13
59282
b30f8ce82167 Merged revisions 78600-78601 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59275
diff changeset
14 from io import StringIO
b30f8ce82167 Merged revisions 78600-78601 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59275
diff changeset
15
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
16 from test import support
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
17 class StdIOBuffer(StringIO):
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
18 pass
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
19
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
20 class TestCase(unittest.TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
21
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
22 def assertEqual(self, obj1, obj2):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
23 if obj1 != obj2:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
24 print('')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
25 print(repr(obj1))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
26 print(repr(obj2))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
27 print(obj1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
28 print(obj2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
29 super(TestCase, self).assertEqual(obj1, obj2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
30
65857
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
31 def setUp(self):
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
32 # The tests assume that line wrapping occurs at 80 columns, but this
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
33 # behaviour can be overridden by setting the COLUMNS environment
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
34 # variable. To ensure that this assumption is true, unset COLUMNS.
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
35 env = support.EnvironmentVarGuard()
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
36 env.unset("COLUMNS")
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
37 self.addCleanup(env.__exit__)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
38
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
39
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
40 class TempDirMixin(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
41
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
42 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
43 self.temp_dir = tempfile.mkdtemp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
44 self.old_dir = os.getcwd()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
45 os.chdir(self.temp_dir)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
46
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
47 def tearDown(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
48 os.chdir(self.old_dir)
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
49 shutil.rmtree(self.temp_dir, True)
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
50
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
51 def create_readonly_file(self, filename):
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
52 file_path = os.path.join(self.temp_dir, filename)
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
53 with open(file_path, 'w') as file:
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
54 file.write(filename)
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
55 os.chmod(file_path, stat.S_IREAD)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
56
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
57 class Sig(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
58
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
59 def __init__(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
60 self.args = args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
61 self.kwargs = kwargs
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
62
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
63
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
64 class NS(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
65
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
66 def __init__(self, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
67 self.__dict__.update(kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
68
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
69 def __repr__(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
70 sorted_items = sorted(self.__dict__.items())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
71 kwarg_str = ', '.join(['%s=%r' % tup for tup in sorted_items])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
72 return '%s(%s)' % (type(self).__name__, kwarg_str)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
73
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
74 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
75 return vars(self) == vars(other)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
76
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
77 def __ne__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
78 return not (self == other)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
79
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
80
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
81 class ArgumentParserError(Exception):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
82
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
83 def __init__(self, message, stdout=None, stderr=None, error_code=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
84 Exception.__init__(self, message, stdout, stderr)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
85 self.message = message
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
86 self.stdout = stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
87 self.stderr = stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
88 self.error_code = error_code
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
89
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
90
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
91 def stderr_to_parser_error(parse_args, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
92 # if this is being called recursively and stderr or stdout is already being
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
93 # redirected, simply call the function and let the enclosing function
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
94 # catch the exception
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
95 if isinstance(sys.stderr, StdIOBuffer) or isinstance(sys.stdout, StdIOBuffer):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
96 return parse_args(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
97
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
98 # if this is not being called recursively, redirect stderr and
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
99 # use it as the ArgumentParserError message
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
100 old_stdout = sys.stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
101 old_stderr = sys.stderr
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
102 sys.stdout = StdIOBuffer()
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
103 sys.stderr = StdIOBuffer()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
104 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
105 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
106 result = parse_args(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
107 for key in list(vars(result)):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
108 if getattr(result, key) is sys.stdout:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
109 setattr(result, key, old_stdout)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
110 if getattr(result, key) is sys.stderr:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
111 setattr(result, key, old_stderr)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
112 return result
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
113 except SystemExit:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
114 code = sys.exc_info()[1].code
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
115 stdout = sys.stdout.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
116 stderr = sys.stderr.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
117 raise ArgumentParserError("SystemExit", stdout, stderr, code)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
118 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
119 sys.stdout = old_stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
120 sys.stderr = old_stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
121
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
122
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
123 class ErrorRaisingArgumentParser(argparse.ArgumentParser):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
124
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
125 def parse_args(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
126 parse_args = super(ErrorRaisingArgumentParser, self).parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
127 return stderr_to_parser_error(parse_args, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
128
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
129 def exit(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
130 exit = super(ErrorRaisingArgumentParser, self).exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
131 return stderr_to_parser_error(exit, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
132
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
133 def error(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
134 error = super(ErrorRaisingArgumentParser, self).error
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
135 return stderr_to_parser_error(error, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
136
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
137
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
138 class ParserTesterMetaclass(type):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
139 """Adds parser tests using the class attributes.
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
140
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
141 Classes of this type should specify the following attributes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
142
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
143 argument_signatures -- a list of Sig objects which specify
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
144 the signatures of Argument objects to be created
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
145 failures -- a list of args lists that should cause the parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
146 to fail
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
147 successes -- a list of (initial_args, options, remaining_args) tuples
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
148 where initial_args specifies the string args to be parsed,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
149 options is a dict that should match the vars() of the options
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
150 parsed out of initial_args, and remaining_args should be any
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
151 remaining unparsed arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
152 """
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
153
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
154 def __init__(cls, name, bases, bodydict):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
155 if name == 'ParserTestCase':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
156 return
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
157
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
158 # default parser signature is empty
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
159 if not hasattr(cls, 'parser_signature'):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
160 cls.parser_signature = Sig()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
161 if not hasattr(cls, 'parser_class'):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
162 cls.parser_class = ErrorRaisingArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
163
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
164 # ---------------------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
165 # functions for adding optional arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
166 # ---------------------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
167 def no_groups(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
168 """Add all arguments directly to the parser"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
169 for sig in argument_signatures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
170 parser.add_argument(*sig.args, **sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
171
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
172 def one_group(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
173 """Add all arguments under a single group in the parser"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
174 group = parser.add_argument_group('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
175 for sig in argument_signatures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
176 group.add_argument(*sig.args, **sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
177
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
178 def many_groups(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
179 """Add each argument in its own group to the parser"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
180 for i, sig in enumerate(argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
181 group = parser.add_argument_group('foo:%i' % i)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
182 group.add_argument(*sig.args, **sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
183
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
184 # --------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
185 # functions for parsing args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
186 # --------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
187 def listargs(parser, args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
188 """Parse the args by passing in a list"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
189 return parser.parse_args(args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
190
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
191 def sysargs(parser, args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
192 """Parse the args by defaulting to sys.argv"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
193 old_sys_argv = sys.argv
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
194 sys.argv = [old_sys_argv[0]] + args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
195 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
196 return parser.parse_args()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
197 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
198 sys.argv = old_sys_argv
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
199
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
200 # class that holds the combination of one optional argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
201 # addition method and one arg parsing method
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
202 class AddTests(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
203
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
204 def __init__(self, tester_cls, add_arguments, parse_args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
205 self._add_arguments = add_arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
206 self._parse_args = parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
207
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
208 add_arguments_name = self._add_arguments.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
209 parse_args_name = self._parse_args.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
210 for test_func in [self.test_failures, self.test_successes]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
211 func_name = test_func.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
212 names = func_name, add_arguments_name, parse_args_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
213 test_name = '_'.join(names)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
214
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
215 def wrapper(self, test_func=test_func):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
216 test_func(self)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
217 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
218 wrapper.__name__ = test_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
219 except TypeError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
220 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
221 setattr(tester_cls, test_name, wrapper)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
222
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
223 def _get_parser(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
224 args = tester.parser_signature.args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
225 kwargs = tester.parser_signature.kwargs
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
226 parser = tester.parser_class(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
227 self._add_arguments(parser, tester.argument_signatures)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
228 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
229
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
230 def test_failures(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
231 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
232 for args_str in tester.failures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
233 args = args_str.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
234 raises = tester.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
235 raises(ArgumentParserError, parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
236
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
237 def test_successes(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
238 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
239 for args, expected_ns in tester.successes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
240 if isinstance(args, str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
241 args = args.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
242 result_ns = self._parse_args(parser, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
243 tester.assertEqual(expected_ns, result_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
244
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
245 # add tests for each combination of an optionals adding method
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
246 # and an arg parsing method
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
247 for add_arguments in [no_groups, one_group, many_groups]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
248 for parse_args in [listargs, sysargs]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
249 AddTests(cls, add_arguments, parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
250
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
251 bases = TestCase,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
252 ParserTestCase = ParserTesterMetaclass('ParserTestCase', bases, {})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
253
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
254 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
255 # Optionals tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
256 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
257
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
258 class TestOptionalsSingleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
259 """Test an Optional with a single-dash option string"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
260
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
261 argument_signatures = [Sig('-x')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
262 failures = ['-x', 'a', '--foo', '-x --foo', '-x -y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
263 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
264 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
265 ('-x a', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
266 ('-xa', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
267 ('-x -1', NS(x='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
268 ('-x-1', NS(x='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
269 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
270
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
271
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
272 class TestOptionalsSingleDashCombined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
273 """Test an Optional with a single-dash option string"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
274
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
275 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
276 Sig('-x', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
277 Sig('-yyy', action='store_const', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
278 Sig('-z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
279 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
280 failures = ['a', '--foo', '-xa', '-x --foo', '-x -z', '-z -x',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
281 '-yx', '-yz a', '-yyyx', '-yyyza', '-xyza']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
282 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
283 ('', NS(x=False, yyy=None, z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
284 ('-x', NS(x=True, yyy=None, z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
285 ('-za', NS(x=False, yyy=None, z='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
286 ('-z a', NS(x=False, yyy=None, z='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
287 ('-xza', NS(x=True, yyy=None, z='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
288 ('-xz a', NS(x=True, yyy=None, z='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
289 ('-x -za', NS(x=True, yyy=None, z='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
290 ('-x -z a', NS(x=True, yyy=None, z='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
291 ('-y', NS(x=False, yyy=42, z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
292 ('-yyy', NS(x=False, yyy=42, z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
293 ('-x -yyy -za', NS(x=True, yyy=42, z='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
294 ('-x -yyy -z a', NS(x=True, yyy=42, z='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
295 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
296
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
297
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
298 class TestOptionalsSingleDashLong(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
299 """Test an Optional with a multi-character single-dash option string"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
300
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
301 argument_signatures = [Sig('-foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
302 failures = ['-foo', 'a', '--foo', '-foo --foo', '-foo -y', '-fooa']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
303 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
304 ('', NS(foo=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
305 ('-foo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
306 ('-foo -1', NS(foo='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
307 ('-fo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
308 ('-f a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
309 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
310
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
311
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
312 class TestOptionalsSingleDashSubsetAmbiguous(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
313 """Test Optionals where option strings are subsets of each other"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
314
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
315 argument_signatures = [Sig('-f'), Sig('-foobar'), Sig('-foorab')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
316 failures = ['-f', '-foo', '-fo', '-foo b', '-foob', '-fooba', '-foora']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
317 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
318 ('', NS(f=None, foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
319 ('-f a', NS(f='a', foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
320 ('-fa', NS(f='a', foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
321 ('-foa', NS(f='oa', foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
322 ('-fooa', NS(f='ooa', foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
323 ('-foobar a', NS(f=None, foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
324 ('-foorab a', NS(f=None, foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
325 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
326
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
327
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
328 class TestOptionalsSingleDashAmbiguous(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
329 """Test Optionals that partially match but are not subsets"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
330
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
331 argument_signatures = [Sig('-foobar'), Sig('-foorab')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
332 failures = ['-f', '-f a', '-fa', '-foa', '-foo', '-fo', '-foo b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
333 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
334 ('', NS(foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
335 ('-foob a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
336 ('-foor a', NS(foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
337 ('-fooba a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
338 ('-foora a', NS(foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
339 ('-foobar a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
340 ('-foorab a', NS(foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
341 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
342
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
343
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
344 class TestOptionalsNumeric(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
345 """Test an Optional with a short opt string"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
346
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
347 argument_signatures = [Sig('-1', dest='one')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
348 failures = ['-1', 'a', '-1 --foo', '-1 -y', '-1 -1', '-1 -2']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
349 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
350 ('', NS(one=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
351 ('-1 a', NS(one='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
352 ('-1a', NS(one='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
353 ('-1-2', NS(one='-2')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
354 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
355
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
356
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
357 class TestOptionalsDoubleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
358 """Test an Optional with a double-dash option string"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
359
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
360 argument_signatures = [Sig('--foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
361 failures = ['--foo', '-f', '-f a', 'a', '--foo -x', '--foo --bar']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
362 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
363 ('', NS(foo=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
364 ('--foo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
365 ('--foo=a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
366 ('--foo -2.5', NS(foo='-2.5')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
367 ('--foo=-2.5', NS(foo='-2.5')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
368 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
369
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
370
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
371 class TestOptionalsDoubleDashPartialMatch(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
372 """Tests partial matching with a double-dash option string"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
373
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
374 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
375 Sig('--badger', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
376 Sig('--bat'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
377 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
378 failures = ['--bar', '--b', '--ba', '--b=2', '--ba=4', '--badge 5']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
379 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
380 ('', NS(badger=False, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
381 ('--bat X', NS(badger=False, bat='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
382 ('--bad', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
383 ('--badg', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
384 ('--badge', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
385 ('--badger', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
386 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
387
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
388
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
389 class TestOptionalsDoubleDashPrefixMatch(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
390 """Tests when one double-dash option string is a prefix of another"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
391
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
392 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
393 Sig('--badger', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
394 Sig('--ba'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
395 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
396 failures = ['--bar', '--b', '--ba', '--b=2', '--badge 5']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
397 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
398 ('', NS(badger=False, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
399 ('--ba X', NS(badger=False, ba='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
400 ('--ba=X', NS(badger=False, ba='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
401 ('--bad', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
402 ('--badg', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
403 ('--badge', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
404 ('--badger', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
405 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
406
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
407
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
408 class TestOptionalsSingleDoubleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
409 """Test an Optional with single- and double-dash option strings"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
410
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
411 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
412 Sig('-f', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
413 Sig('--bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
414 Sig('-baz', action='store_const', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
415 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
416 failures = ['--bar', '-fbar', '-fbaz', '-bazf', '-b B', 'B']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
417 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
418 ('', NS(f=False, bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
419 ('-f', NS(f=True, bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
420 ('--ba B', NS(f=False, bar='B', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
421 ('-f --bar B', NS(f=True, bar='B', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
422 ('-f -b', NS(f=True, bar=None, baz=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
423 ('-ba -f', NS(f=True, bar=None, baz=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
424 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
425
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
426
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
427 class TestOptionalsAlternatePrefixChars(ParserTestCase):
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
428 """Test an Optional with option strings with custom prefixes"""
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
429
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
430 parser_signature = Sig(prefix_chars='+:/', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
431 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
432 Sig('+f', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
433 Sig('::bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
434 Sig('/baz', action='store_const', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
435 ]
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
436 failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz', '-h', '--help', '+h', '::help', '/help']
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
437 successes = [
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
438 ('', NS(f=False, bar=None, baz=None)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
439 ('+f', NS(f=True, bar=None, baz=None)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
440 ('::ba B', NS(f=False, bar='B', baz=None)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
441 ('+f ::bar B', NS(f=True, bar='B', baz=None)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
442 ('+f /b', NS(f=True, bar=None, baz=42)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
443 ('/ba +f', NS(f=True, bar=None, baz=42)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
444 ]
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
445
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
446
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
447 class TestOptionalsAlternatePrefixCharsAddedHelp(ParserTestCase):
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
448 """When ``-`` not in prefix_chars, default operators created for help
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
449 should use the prefix_chars in use rather than - or --
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
450 http://bugs.python.org/issue9444"""
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
451
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
452 parser_signature = Sig(prefix_chars='+:/', add_help=True)
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
453 argument_signatures = [
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
454 Sig('+f', action='store_true'),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
455 Sig('::bar'),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
456 Sig('/baz', action='store_const', const=42),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
457 ]
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
458 failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
459 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
460 ('', NS(f=False, bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
461 ('+f', NS(f=True, bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
462 ('::ba B', NS(f=False, bar='B', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
463 ('+f ::bar B', NS(f=True, bar='B', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
464 ('+f /b', NS(f=True, bar=None, baz=42)),
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
465 ('/ba +f', NS(f=True, bar=None, baz=42))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
466 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
467
65867
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
468
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
469 class TestOptionalsAlternatePrefixCharsMultipleShortArgs(ParserTestCase):
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
470 """Verify that Optionals must be called with their defined prefixes"""
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
471
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
472 parser_signature = Sig(prefix_chars='+-', add_help=False)
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
473 argument_signatures = [
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
474 Sig('-x', action='store_true'),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
475 Sig('+y', action='store_true'),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
476 Sig('+z', action='store_true'),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
477 ]
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
478 failures = ['-w',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
479 '-xyz',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
480 '+x',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
481 '-y',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
482 '+xyz',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
483 ]
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
484 successes = [
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
485 ('', NS(x=False, y=False, z=False)),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
486 ('-x', NS(x=True, y=False, z=False)),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
487 ('+y -x', NS(x=True, y=True, z=False)),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
488 ('+yz -x', NS(x=True, y=True, z=True)),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
489 ]
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
490
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
491
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
492 class TestOptionalsShortLong(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
493 """Test a combination of single- and double-dash option strings"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
494
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
495 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
496 Sig('-v', '--verbose', '-n', '--noisy', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
497 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
498 failures = ['--x --verbose', '-N', 'a', '-v x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
499 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
500 ('', NS(verbose=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
501 ('-v', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
502 ('--verbose', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
503 ('-n', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
504 ('--noisy', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
505 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
506
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
507
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
508 class TestOptionalsDest(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
509 """Tests various means of setting destination"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
510
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
511 argument_signatures = [Sig('--foo-bar'), Sig('--baz', dest='zabbaz')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
512 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
513 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
514 ('--foo-bar f', NS(foo_bar='f', zabbaz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
515 ('--baz g', NS(foo_bar=None, zabbaz='g')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
516 ('--foo-bar h --baz i', NS(foo_bar='h', zabbaz='i')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
517 ('--baz j --foo-bar k', NS(foo_bar='k', zabbaz='j')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
518 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
519
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
520
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
521 class TestOptionalsDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
522 """Tests specifying a default for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
523
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
524 argument_signatures = [Sig('-x'), Sig('-y', default=42)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
525 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
526 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
527 ('', NS(x=None, y=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
528 ('-xx', NS(x='x', y=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
529 ('-yy', NS(x=None, y='y')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
530 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
531
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
532
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
533 class TestOptionalsNargsDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
534 """Tests not specifying the number of args for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
535
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
536 argument_signatures = [Sig('-x')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
537 failures = ['a', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
538 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
539 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
540 ('-x a', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
541 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
542
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
543
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
544 class TestOptionalsNargs1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
545 """Tests specifying the 1 arg for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
546
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
547 argument_signatures = [Sig('-x', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
548 failures = ['a', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
549 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
550 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
551 ('-x a', NS(x=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
552 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
553
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
554
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
555 class TestOptionalsNargs3(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
556 """Tests specifying the 3 args for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
557
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
558 argument_signatures = [Sig('-x', nargs=3)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
559 failures = ['a', '-x', '-x a', '-x a b', 'a -x', 'a -x b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
560 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
561 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
562 ('-x a b c', NS(x=['a', 'b', 'c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
563 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
564
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
565
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
566 class TestOptionalsNargsOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
567 """Tests specifying an Optional arg for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
568
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
569 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
570 Sig('-w', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
571 Sig('-x', nargs='?', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
572 Sig('-y', nargs='?', default='spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
573 Sig('-z', nargs='?', type=int, const='42', default='84'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
574 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
575 failures = ['2']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
576 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
577 ('', NS(w=None, x=None, y='spam', z=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
578 ('-w', NS(w=None, x=None, y='spam', z=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
579 ('-w 2', NS(w='2', x=None, y='spam', z=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
580 ('-x', NS(w=None, x=42, y='spam', z=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
581 ('-x 2', NS(w=None, x='2', y='spam', z=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
582 ('-y', NS(w=None, x=None, y=None, z=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
583 ('-y 2', NS(w=None, x=None, y='2', z=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
584 ('-z', NS(w=None, x=None, y='spam', z=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
585 ('-z 2', NS(w=None, x=None, y='spam', z=2)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
586 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
587
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
588
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
589 class TestOptionalsNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
590 """Tests specifying an args for an Optional that accepts zero or more"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
591
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
592 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
593 Sig('-x', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
594 Sig('-y', nargs='*', default='spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
595 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
596 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
597 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
598 ('', NS(x=None, y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
599 ('-x', NS(x=[], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
600 ('-x a', NS(x=['a'], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
601 ('-x a b', NS(x=['a', 'b'], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
602 ('-y', NS(x=None, y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
603 ('-y a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
604 ('-y a b', NS(x=None, y=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
605 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
606
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
607
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
608 class TestOptionalsNargsOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
609 """Tests specifying an args for an Optional that accepts one or more"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
610
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
611 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
612 Sig('-x', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
613 Sig('-y', nargs='+', default='spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
614 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
615 failures = ['a', '-x', '-y', 'a -x', 'a -y b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
616 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
617 ('', NS(x=None, y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
618 ('-x a', NS(x=['a'], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
619 ('-x a b', NS(x=['a', 'b'], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
620 ('-y a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
621 ('-y a b', NS(x=None, y=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
622 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
623
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
624
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
625 class TestOptionalsChoices(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
626 """Tests specifying the choices for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
627
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
628 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
629 Sig('-f', choices='abc'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
630 Sig('-g', type=int, choices=range(5))]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
631 failures = ['a', '-f d', '-fad', '-ga', '-g 6']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
632 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
633 ('', NS(f=None, g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
634 ('-f a', NS(f='a', g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
635 ('-f c', NS(f='c', g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
636 ('-g 0', NS(f=None, g=0)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
637 ('-g 03', NS(f=None, g=3)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
638 ('-fb -g4', NS(f='b', g=4)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
639 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
640
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
641
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
642 class TestOptionalsRequired(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
643 """Tests the an optional action that is required"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
644
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
645 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
646 Sig('-x', type=int, required=True),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
647 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
648 failures = ['a', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
649 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
650 ('-x 1', NS(x=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
651 ('-x42', NS(x=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
652 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
653
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
654
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
655 class TestOptionalsActionStore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
656 """Tests the store action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
657
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
658 argument_signatures = [Sig('-x', action='store')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
659 failures = ['a', 'a -x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
660 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
661 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
662 ('-xfoo', NS(x='foo')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
663 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
664
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
665
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
666 class TestOptionalsActionStoreConst(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
667 """Tests the store_const action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
668
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
669 argument_signatures = [Sig('-y', action='store_const', const=object)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
670 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
671 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
672 ('', NS(y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
673 ('-y', NS(y=object)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
674 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
675
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
676
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
677 class TestOptionalsActionStoreFalse(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
678 """Tests the store_false action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
679
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
680 argument_signatures = [Sig('-z', action='store_false')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
681 failures = ['a', '-za', '-z a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
682 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
683 ('', NS(z=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
684 ('-z', NS(z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
685 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
686
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
687
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
688 class TestOptionalsActionStoreTrue(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
689 """Tests the store_true action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
690
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
691 argument_signatures = [Sig('--apple', action='store_true')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
692 failures = ['a', '--apple=b', '--apple b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
693 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
694 ('', NS(apple=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
695 ('--apple', NS(apple=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
696 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
697
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
698
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
699 class TestOptionalsActionAppend(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
700 """Tests the append action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
701
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
702 argument_signatures = [Sig('--baz', action='append')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
703 failures = ['a', '--baz', 'a --baz', '--baz a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
704 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
705 ('', NS(baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
706 ('--baz a', NS(baz=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
707 ('--baz a --baz b', NS(baz=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
708 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
709
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
710
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
711 class TestOptionalsActionAppendWithDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
712 """Tests the append action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
713
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
714 argument_signatures = [Sig('--baz', action='append', default=['X'])]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
715 failures = ['a', '--baz', 'a --baz', '--baz a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
716 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
717 ('', NS(baz=['X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
718 ('--baz a', NS(baz=['X', 'a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
719 ('--baz a --baz b', NS(baz=['X', 'a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
720 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
721
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
722
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
723 class TestOptionalsActionAppendConst(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
724 """Tests the append_const action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
725
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
726 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
727 Sig('-b', action='append_const', const=Exception),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
728 Sig('-c', action='append', dest='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
729 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
730 failures = ['a', '-c', 'a -c', '-bx', '-b x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
731 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
732 ('', NS(b=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
733 ('-b', NS(b=[Exception])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
734 ('-b -cx -b -cyz', NS(b=[Exception, 'x', Exception, 'yz'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
735 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
736
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
737
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
738 class TestOptionalsActionAppendConstWithDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
739 """Tests the append_const action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
740
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
741 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
742 Sig('-b', action='append_const', const=Exception, default=['X']),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
743 Sig('-c', action='append', dest='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
744 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
745 failures = ['a', '-c', 'a -c', '-bx', '-b x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
746 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
747 ('', NS(b=['X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
748 ('-b', NS(b=['X', Exception])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
749 ('-b -cx -b -cyz', NS(b=['X', Exception, 'x', Exception, 'yz'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
750 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
751
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
752
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
753 class TestOptionalsActionCount(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
754 """Tests the count action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
755
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
756 argument_signatures = [Sig('-x', action='count')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
757 failures = ['a', '-x a', '-x b', '-x a -x b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
758 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
759 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
760 ('-x', NS(x=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
761 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
762
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
763
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
764 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
765 # Positional tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
766 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
767
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
768 class TestPositionalsNargsNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
769 """Test a Positional that doesn't specify nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
770
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
771 argument_signatures = [Sig('foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
772 failures = ['', '-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
773 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
774 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
775 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
776
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
777
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
778 class TestPositionalsNargs1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
779 """Test a Positional that specifies an nargs of 1"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
780
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
781 argument_signatures = [Sig('foo', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
782 failures = ['', '-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
783 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
784 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
785 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
786
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
787
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
788 class TestPositionalsNargs2(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
789 """Test a Positional that specifies an nargs of 2"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
790
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
791 argument_signatures = [Sig('foo', nargs=2)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
792 failures = ['', 'a', '-x', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
793 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
794 ('a b', NS(foo=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
795 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
796
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
797
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
798 class TestPositionalsNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
799 """Test a Positional that specifies unlimited nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
800
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
801 argument_signatures = [Sig('foo', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
802 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
803 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
804 ('', NS(foo=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
805 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
806 ('a b', NS(foo=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
807 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
808
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
809
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
810 class TestPositionalsNargsZeroOrMoreDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
811 """Test a Positional that specifies unlimited nargs and a default"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
812
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
813 argument_signatures = [Sig('foo', nargs='*', default='bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
814 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
815 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
816 ('', NS(foo='bar')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
817 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
818 ('a b', NS(foo=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
819 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
820
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
821
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
822 class TestPositionalsNargsOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
823 """Test a Positional that specifies one or more nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
824
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
825 argument_signatures = [Sig('foo', nargs='+')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
826 failures = ['', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
827 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
828 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
829 ('a b', NS(foo=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
830 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
831
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
832
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
833 class TestPositionalsNargsOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
834 """Tests an Optional Positional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
835
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
836 argument_signatures = [Sig('foo', nargs='?')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
837 failures = ['-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
838 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
839 ('', NS(foo=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
840 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
841 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
842
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
843
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
844 class TestPositionalsNargsOptionalDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
845 """Tests an Optional Positional with a default value"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
846
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
847 argument_signatures = [Sig('foo', nargs='?', default=42)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
848 failures = ['-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
849 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
850 ('', NS(foo=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
851 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
852 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
853
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
854
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
855 class TestPositionalsNargsOptionalConvertedDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
856 """Tests an Optional Positional with a default value
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
857 that needs to be converted to the appropriate type.
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
858 """
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
859
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
860 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
861 Sig('foo', nargs='?', type=int, default='42'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
862 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
863 failures = ['-x', 'a b', '1 2']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
864 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
865 ('', NS(foo=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
866 ('1', NS(foo=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
867 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
868
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
869
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
870 class TestPositionalsNargsNoneNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
871 """Test two Positionals that don't specify nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
872
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
873 argument_signatures = [Sig('foo'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
874 failures = ['', '-x', 'a', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
875 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
876 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
877 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
878
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
879
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
880 class TestPositionalsNargsNone1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
881 """Test a Positional with no nargs followed by one with 1"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
882
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
883 argument_signatures = [Sig('foo'), Sig('bar', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
884 failures = ['', '--foo', 'a', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
885 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
886 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
887 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
888
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
889
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
890 class TestPositionalsNargs2None(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
891 """Test a Positional with 2 nargs followed by one with none"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
892
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
893 argument_signatures = [Sig('foo', nargs=2), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
894 failures = ['', '--foo', 'a', 'a b', 'a b c d']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
895 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
896 ('a b c', NS(foo=['a', 'b'], bar='c')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
897 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
898
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
899
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
900 class TestPositionalsNargsNoneZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
901 """Test a Positional with no nargs followed by one with unlimited"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
902
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
903 argument_signatures = [Sig('foo'), Sig('bar', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
904 failures = ['', '--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
905 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
906 ('a', NS(foo='a', bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
907 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
908 ('a b c', NS(foo='a', bar=['b', 'c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
909 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
910
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
911
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
912 class TestPositionalsNargsNoneOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
913 """Test a Positional with no nargs followed by one with one or more"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
914
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
915 argument_signatures = [Sig('foo'), Sig('bar', nargs='+')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
916 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
917 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
918 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
919 ('a b c', NS(foo='a', bar=['b', 'c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
920 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
921
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
922
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
923 class TestPositionalsNargsNoneOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
924 """Test a Positional with no nargs followed by one with an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
925
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
926 argument_signatures = [Sig('foo'), Sig('bar', nargs='?')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
927 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
928 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
929 ('a', NS(foo='a', bar=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
930 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
931 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
932
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
933
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
934 class TestPositionalsNargsZeroOrMoreNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
935 """Test a Positional with unlimited nargs followed by one with none"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
936
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
937 argument_signatures = [Sig('foo', nargs='*'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
938 failures = ['', '--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
939 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
940 ('a', NS(foo=[], bar='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
941 ('a b', NS(foo=['a'], bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
942 ('a b c', NS(foo=['a', 'b'], bar='c')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
943 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
944
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
945
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
946 class TestPositionalsNargsOneOrMoreNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
947 """Test a Positional with one or more nargs followed by one with none"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
948
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
949 argument_signatures = [Sig('foo', nargs='+'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
950 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
951 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
952 ('a b', NS(foo=['a'], bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
953 ('a b c', NS(foo=['a', 'b'], bar='c')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
954 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
955
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
956
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
957 class TestPositionalsNargsOptionalNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
958 """Test a Positional with an Optional nargs followed by one with none"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
959
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
960 argument_signatures = [Sig('foo', nargs='?', default=42), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
961 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
962 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
963 ('a', NS(foo=42, bar='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
964 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
965 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
966
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
967
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
968 class TestPositionalsNargs2ZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
969 """Test a Positional with 2 nargs followed by one with unlimited"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
970
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
971 argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
972 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
973 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
974 ('a b', NS(foo=['a', 'b'], bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
975 ('a b c', NS(foo=['a', 'b'], bar=['c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
976 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
977
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
978
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
979 class TestPositionalsNargs2OneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
980 """Test a Positional with 2 nargs followed by one with one or more"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
981
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
982 argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='+')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
983 failures = ['', '--foo', 'a', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
984 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
985 ('a b c', NS(foo=['a', 'b'], bar=['c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
986 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
987
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
988
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
989 class TestPositionalsNargs2Optional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
990 """Test a Positional with 2 nargs followed by one optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
991
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
992 argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='?')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
993 failures = ['', '--foo', 'a', 'a b c d']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
994 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
995 ('a b', NS(foo=['a', 'b'], bar=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
996 ('a b c', NS(foo=['a', 'b'], bar='c')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
997 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
998
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
999
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1000 class TestPositionalsNargsZeroOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1001 """Test a Positional with unlimited nargs followed by one with 1"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1002
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1003 argument_signatures = [Sig('foo', nargs='*'), Sig('bar', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1004 failures = ['', '--foo', ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1005 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1006 ('a', NS(foo=[], bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1007 ('a b', NS(foo=['a'], bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1008 ('a b c', NS(foo=['a', 'b'], bar=['c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1009 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1010
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1011
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1012 class TestPositionalsNargsOneOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1013 """Test a Positional with one or more nargs followed by one with 1"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1014
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1015 argument_signatures = [Sig('foo', nargs='+'), Sig('bar', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1016 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1017 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1018 ('a b', NS(foo=['a'], bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1019 ('a b c', NS(foo=['a', 'b'], bar=['c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1020 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1021
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1022
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1023 class TestPositionalsNargsOptional1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1024 """Test a Positional with an Optional nargs followed by one with 1"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1025
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1026 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1027 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1028 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1029 ('a', NS(foo=None, bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1030 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1031 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1032
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1033
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1034 class TestPositionalsNargsNoneZeroOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1035 """Test three Positionals: no nargs, unlimited nargs and 1 nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1036
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1037 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1038 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1039 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1040 Sig('baz', nargs=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1041 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1042 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1043 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1044 ('a b', NS(foo='a', bar=[], baz=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1045 ('a b c', NS(foo='a', bar=['b'], baz=['c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1046 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1047
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1048
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1049 class TestPositionalsNargsNoneOneOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1050 """Test three Positionals: no nargs, one or more nargs and 1 nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1051
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1052 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1053 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1054 Sig('bar', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1055 Sig('baz', nargs=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1056 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1057 failures = ['', '--foo', 'a', 'b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1058 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1059 ('a b c', NS(foo='a', bar=['b'], baz=['c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1060 ('a b c d', NS(foo='a', bar=['b', 'c'], baz=['d'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1061 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1062
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1063
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1064 class TestPositionalsNargsNoneOptional1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1065 """Test three Positionals: no nargs, optional narg and 1 nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1066
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1067 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1068 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1069 Sig('bar', nargs='?', default=0.625),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1070 Sig('baz', nargs=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1071 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1072 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1073 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1074 ('a b', NS(foo='a', bar=0.625, baz=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1075 ('a b c', NS(foo='a', bar='b', baz=['c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1076 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1077
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1078
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1079 class TestPositionalsNargsOptionalOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1080 """Test two optional nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1081
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1082 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1083 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1084 Sig('bar', nargs='?', default=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1085 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1086 failures = ['--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1087 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1088 ('', NS(foo=None, bar=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1089 ('a', NS(foo='a', bar=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1090 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1091 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1092
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1093
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1094 class TestPositionalsNargsOptionalZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1095 """Test an Optional narg followed by unlimited nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1096
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1097 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1098 failures = ['--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1099 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1100 ('', NS(foo=None, bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1101 ('a', NS(foo='a', bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1102 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1103 ('a b c', NS(foo='a', bar=['b', 'c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1104 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1105
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1106
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1107 class TestPositionalsNargsOptionalOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1108 """Test an Optional narg followed by one or more nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1109
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1110 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='+')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1111 failures = ['', '--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1112 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1113 ('a', NS(foo=None, bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1114 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1115 ('a b c', NS(foo='a', bar=['b', 'c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1116 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1117
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1118
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1119 class TestPositionalsChoicesString(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1120 """Test a set of single-character choices"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1121
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1122 argument_signatures = [Sig('spam', choices=set('abcdefg'))]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1123 failures = ['', '--foo', 'h', '42', 'ef']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1124 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1125 ('a', NS(spam='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1126 ('g', NS(spam='g')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1127 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1128
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1129
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1130 class TestPositionalsChoicesInt(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1131 """Test a set of integer choices"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1132
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1133 argument_signatures = [Sig('spam', type=int, choices=range(20))]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1134 failures = ['', '--foo', 'h', '42', 'ef']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1135 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1136 ('4', NS(spam=4)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1137 ('15', NS(spam=15)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1138 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1139
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1140
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1141 class TestPositionalsActionAppend(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1142 """Test the 'append' action"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1143
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1144 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1145 Sig('spam', action='append'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1146 Sig('spam', action='append', nargs=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1147 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1148 failures = ['', '--foo', 'a', 'a b', 'a b c d']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1149 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1150 ('a b c', NS(spam=['a', ['b', 'c']])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1151 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1152
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1153 # ========================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1154 # Combined optionals and positionals tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1155 # ========================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1156
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1157 class TestOptionalsNumericAndPositionals(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1158 """Tests negative number args when numeric options are present"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1159
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1160 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1161 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1162 Sig('-4', dest='y', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1163 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1164 failures = ['-2', '-315']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1165 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1166 ('', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1167 ('a', NS(x='a', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1168 ('-4', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1169 ('-4 a', NS(x='a', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1170 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1171
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1172
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1173 class TestOptionalsAlmostNumericAndPositionals(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1174 """Tests negative number args when almost numeric options are present"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1175
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1176 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1177 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1178 Sig('-k4', dest='y', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1179 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1180 failures = ['-k3']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1181 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1182 ('', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1183 ('-2', NS(x='-2', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1184 ('a', NS(x='a', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1185 ('-k4', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1186 ('-k4 a', NS(x='a', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1187 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1188
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1189
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1190 class TestEmptyAndSpaceContainingArguments(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1191
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1192 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1193 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1194 Sig('-y', '--yyy', dest='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1195 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1196 failures = ['-y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1197 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1198 ([''], NS(x='', y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1199 (['a badger'], NS(x='a badger', y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1200 (['-a badger'], NS(x='-a badger', y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1201 (['-y', ''], NS(x=None, y='')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1202 (['-y', 'a badger'], NS(x=None, y='a badger')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1203 (['-y', '-a badger'], NS(x=None, y='-a badger')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1204 (['--yyy=a badger'], NS(x=None, y='a badger')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1205 (['--yyy=-a badger'], NS(x=None, y='-a badger')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1206 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1207
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1208
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1209 class TestPrefixCharacterOnlyArguments(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1210
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1211 parser_signature = Sig(prefix_chars='-+')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1212 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1213 Sig('-', dest='x', nargs='?', const='badger'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1214 Sig('+', dest='y', type=int, default=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1215 Sig('-+-', dest='z', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1216 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1217 failures = ['-y', '+ -']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1218 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1219 ('', NS(x=None, y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1220 ('-', NS(x='badger', y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1221 ('- X', NS(x='X', y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1222 ('+ -3', NS(x=None, y=-3, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1223 ('-+-', NS(x=None, y=42, z=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1224 ('- ===', NS(x='===', y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1225 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1226
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1227
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1228 class TestNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1229 """Tests specifying an args for an Optional that accepts zero or more"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1230
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1231 argument_signatures = [Sig('-x', nargs='*'), Sig('y', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1232 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1233 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1234 ('', NS(x=None, y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1235 ('-x', NS(x=[], y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1236 ('-x a', NS(x=['a'], y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1237 ('-x a -- b', NS(x=['a'], y=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1238 ('a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1239 ('a -x', NS(x=[], y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1240 ('a -x b', NS(x=['b'], y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1241 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1242
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1243
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1244 class TestNargsRemainder(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1245 """Tests specifying a positional with nargs=REMAINDER"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1246
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1247 argument_signatures = [Sig('x'), Sig('y', nargs='...'), Sig('-z')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1248 failures = ['', '-z', '-z Z']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1249 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1250 ('X', NS(x='X', y=[], z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1251 ('-z Z X', NS(x='X', y=[], z='Z')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1252 ('X A B -z Z', NS(x='X', y=['A', 'B', '-z', 'Z'], z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1253 ('X Y --foo', NS(x='X', y=['Y', '--foo'], z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1254 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1255
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1256
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1257 class TestOptionLike(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1258 """Tests options that may or may not be arguments"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1259
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1260 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1261 Sig('-x', type=float),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1262 Sig('-3', type=float, dest='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1263 Sig('z', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1264 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1265 failures = ['-x', '-y2.5', '-xa', '-x -a',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1266 '-x -3', '-x -3.5', '-3 -3.5',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1267 '-x -2.5', '-x -2.5 a', '-3 -.5',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1268 'a x -1', '-x -1 a', '-3 -1 a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1269 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1270 ('', NS(x=None, y=None, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1271 ('-x 2.5', NS(x=2.5, y=None, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1272 ('-x 2.5 a', NS(x=2.5, y=None, z=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1273 ('-3.5', NS(x=None, y=0.5, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1274 ('-3-.5', NS(x=None, y=-0.5, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1275 ('-3 .5', NS(x=None, y=0.5, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1276 ('a -3.5', NS(x=None, y=0.5, z=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1277 ('a', NS(x=None, y=None, z=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1278 ('a -x 1', NS(x=1.0, y=None, z=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1279 ('-x 1 a', NS(x=1.0, y=None, z=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1280 ('-3 1 a', NS(x=None, y=1.0, z=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1281 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1282
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1283
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1284 class TestDefaultSuppress(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1285 """Test actions with suppressed defaults"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1286
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1287 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1288 Sig('foo', nargs='?', default=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1289 Sig('bar', nargs='*', default=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1290 Sig('--baz', action='store_true', default=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1291 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1292 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1293 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1294 ('', NS()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1295 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1296 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1297 ('--baz', NS(baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1298 ('a --baz', NS(foo='a', baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1299 ('--baz a b', NS(foo='a', bar=['b'], baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1300 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1301
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1302
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1303 class TestParserDefaultSuppress(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1304 """Test actions with a parser-level default of SUPPRESS"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1305
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1306 parser_signature = Sig(argument_default=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1307 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1308 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1309 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1310 Sig('--baz', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1311 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1312 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1313 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1314 ('', NS()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1315 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1316 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1317 ('--baz', NS(baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1318 ('a --baz', NS(foo='a', baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1319 ('--baz a b', NS(foo='a', bar=['b'], baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1320 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1321
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1322
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1323 class TestParserDefault42(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1324 """Test actions with a parser-level default of 42"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1325
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1326 parser_signature = Sig(argument_default=42)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1327 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1328 Sig('--version', action='version', version='1.0'),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1329 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1330 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1331 Sig('--baz', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1332 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1333 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1334 successes = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1335 ('', NS(foo=42, bar=42, baz=42, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1336 ('a', NS(foo='a', bar=42, baz=42, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1337 ('a b', NS(foo='a', bar=['b'], baz=42, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1338 ('--baz', NS(foo=42, bar=42, baz=True, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1339 ('a --baz', NS(foo='a', bar=42, baz=True, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1340 ('--baz a b', NS(foo='a', bar=['b'], baz=True, version=42)),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1341 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1342
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1343
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1344 class TestArgumentsFromFile(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1345 """Test reading arguments from a file"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1346
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1347 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1348 super(TestArgumentsFromFile, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1349 file_texts = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1350 ('hello', 'hello world!\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1351 ('recursive', '-a\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1352 'A\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1353 '@hello'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1354 ('invalid', '@no-such-path\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1355 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1356 for path, text in file_texts:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1357 file = open(path, 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1358 file.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1359 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1360
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1361 parser_signature = Sig(fromfile_prefix_chars='@')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1362 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1363 Sig('-a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1364 Sig('x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1365 Sig('y', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1366 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1367 failures = ['', '-b', 'X', '@invalid', '@missing']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1368 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1369 ('X Y', NS(a=None, x='X', y=['Y'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1370 ('X -a A Y Z', NS(a='A', x='X', y=['Y', 'Z'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1371 ('@hello X', NS(a=None, x='hello world!', y=['X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1372 ('X @hello', NS(a=None, x='X', y=['hello world!'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1373 ('-a B @recursive Y Z', NS(a='A', x='hello world!', y=['Y', 'Z'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1374 ('X @recursive Z -a B', NS(a='B', x='X', y=['hello world!', 'Z'])),
78229
ac53876d1cc8 #12353: argparse now correctly handles null argument values.
R David Murray <rdmurray@bitdance.com>
parents: 74316
diff changeset
1375 (["-a", "", "X", "Y"], NS(a='', x='X', y=['Y'])),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1376 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1377
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1378
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1379 class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1380 """Test reading arguments from a file"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1381
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1382 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1383 super(TestArgumentsFromFileConverter, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1384 file_texts = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1385 ('hello', 'hello world!\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1386 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1387 for path, text in file_texts:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1388 file = open(path, 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1389 file.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1390 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1391
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1392 class FromFileConverterArgumentParser(ErrorRaisingArgumentParser):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1393
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1394 def convert_arg_line_to_args(self, arg_line):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1395 for arg in arg_line.split():
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1396 if not arg.strip():
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1397 continue
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1398 yield arg
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1399 parser_class = FromFileConverterArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1400 parser_signature = Sig(fromfile_prefix_chars='@')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1401 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1402 Sig('y', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1403 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1404 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1405 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1406 ('@hello X', NS(y=['hello', 'world!', 'X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1407 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1408
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1409
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1410 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1411 # Type conversion tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1412 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1413
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1414 class TestFileTypeRepr(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1415
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1416 def test_r(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1417 type = argparse.FileType('r')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1418 self.assertEqual("FileType('r')", repr(type))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1419
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1420 def test_wb_1(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1421 type = argparse.FileType('wb', 1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1422 self.assertEqual("FileType('wb', 1)", repr(type))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1423
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1424
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1425 class RFile(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1426 seen = {}
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1427
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1428 def __init__(self, name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1429 self.name = name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1430
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1431 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1432 if other in self.seen:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1433 text = self.seen[other]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1434 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1435 text = self.seen[other] = other.read()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1436 other.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1437 if not isinstance(text, str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1438 text = text.decode('ascii')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1439 return self.name == other.name == text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1440
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1441
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1442 class TestFileTypeR(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1443 """Test the FileType option/argument type for reading files"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1444
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1445 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1446 super(TestFileTypeR, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1447 for file_name in ['foo', 'bar']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1448 file = open(os.path.join(self.temp_dir, file_name), 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1449 file.write(file_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1450 file.close()
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1451 self.create_readonly_file('readonly')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1452
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1453 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1454 Sig('-x', type=argparse.FileType()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1455 Sig('spam', type=argparse.FileType('r')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1456 ]
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1457 failures = ['-x', '', 'non-existent-file.txt']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1458 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1459 ('foo', NS(x=None, spam=RFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1460 ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1461 ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1462 ('-x - -', NS(x=sys.stdin, spam=sys.stdin)),
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1463 ('readonly', NS(x=None, spam=RFile('readonly'))),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1464 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1465
78821
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1466 class TestFileTypeDefaults(TempDirMixin, ParserTestCase):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1467 """Test that a file is not created unless the default is needed"""
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1468 def setUp(self):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1469 super(TestFileTypeDefaults, self).setUp()
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1470 file = open(os.path.join(self.temp_dir, 'good'), 'w')
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1471 file.write('good')
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1472 file.close()
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1473
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1474 argument_signatures = [
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1475 Sig('-c', type=argparse.FileType('r'), default='no-file.txt'),
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1476 ]
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1477 # should provoke no such file error
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1478 failures = ['']
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1479 # should not provoke error because default file is created
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1480 successes = [('-c good', NS(c=RFile('good')))]
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1481
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1482
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1483 class TestFileTypeRB(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1484 """Test the FileType option/argument type for reading files"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1485
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1486 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1487 super(TestFileTypeRB, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1488 for file_name in ['foo', 'bar']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1489 file = open(os.path.join(self.temp_dir, file_name), 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1490 file.write(file_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1491 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1492
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1493 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1494 Sig('-x', type=argparse.FileType('rb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1495 Sig('spam', type=argparse.FileType('rb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1496 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1497 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1498 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1499 ('foo', NS(x=None, spam=RFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1500 ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1501 ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1502 ('-x - -', NS(x=sys.stdin, spam=sys.stdin)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1503 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1504
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1505
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1506 class WFile(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1507 seen = set()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1508
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1509 def __init__(self, name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1510 self.name = name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1511
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1512 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1513 if other not in self.seen:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1514 text = 'Check that file is writable.'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1515 if 'b' in other.mode:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1516 text = text.encode('ascii')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1517 other.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1518 other.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1519 self.seen.add(other)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1520 return self.name == other.name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1521
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1522
73645
ba3da86d1c5d Close #13401: Skip TestFileTypeW of test_argparse if the current user is root
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69126
diff changeset
1523 @unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0,
ba3da86d1c5d Close #13401: Skip TestFileTypeW of test_argparse if the current user is root
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69126
diff changeset
1524 "non-root user required")
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1525 class TestFileTypeW(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1526 """Test the FileType option/argument type for writing files"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1527
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1528 def setUp(self):
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1529 super(TestFileTypeW, self).setUp()
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1530 self.create_readonly_file('readonly')
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1531
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1532 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1533 Sig('-x', type=argparse.FileType('w')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1534 Sig('spam', type=argparse.FileType('w')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1535 ]
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1536 failures = ['-x', '', 'readonly']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1537 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1538 ('foo', NS(x=None, spam=WFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1539 ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1540 ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1541 ('-x - -', NS(x=sys.stdout, spam=sys.stdout)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1542 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1543
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1544
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1545 class TestFileTypeWB(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1546
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1547 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1548 Sig('-x', type=argparse.FileType('wb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1549 Sig('spam', type=argparse.FileType('wb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1550 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1551 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1552 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1553 ('foo', NS(x=None, spam=WFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1554 ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1555 ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1556 ('-x - -', NS(x=sys.stdout, spam=sys.stdout)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1557 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1558
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1559
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1560 class TestTypeCallable(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1561 """Test some callables as option/argument types"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1562
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1563 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1564 Sig('--eggs', type=complex),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1565 Sig('spam', type=float),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1566 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1567 failures = ['a', '42j', '--eggs a', '--eggs 2i']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1568 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1569 ('--eggs=42 42', NS(eggs=42, spam=42.0)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1570 ('--eggs 2j -- -1.5', NS(eggs=2j, spam=-1.5)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1571 ('1024.675', NS(eggs=None, spam=1024.675)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1572 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1573
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1574
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1575 class TestTypeUserDefined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1576 """Test a user-defined option/argument type"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1577
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1578 class MyType(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1579
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1580 def __init__(self, value):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1581 self.value = value
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1582
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1583 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1584 return (type(self), self.value) == (type(other), other.value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1585
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1586 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1587 Sig('-x', type=MyType),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1588 Sig('spam', type=MyType),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1589 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1590 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1591 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1592 ('a -x b', NS(x=MyType('b'), spam=MyType('a'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1593 ('-xf g', NS(x=MyType('f'), spam=MyType('g'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1594 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1595
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1596
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1597 class TestTypeClassicClass(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1598 """Test a classic class type"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1599
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1600 class C:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1601
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1602 def __init__(self, value):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1603 self.value = value
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1604
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1605 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1606 return (type(self), self.value) == (type(other), other.value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1607
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1608 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1609 Sig('-x', type=C),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1610 Sig('spam', type=C),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1611 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1612 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1613 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1614 ('a -x b', NS(x=C('b'), spam=C('a'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1615 ('-xf g', NS(x=C('f'), spam=C('g'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1616 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1617
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1618
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1619 class TestTypeRegistration(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1620 """Test a user-defined type by registering it"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1621
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1622 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1623
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1624 def get_my_type(string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1625 return 'my_type{%s}' % string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1626
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1627 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1628 parser.register('type', 'my_type', get_my_type)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1629 parser.add_argument('-x', type='my_type')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1630 parser.add_argument('y', type='my_type')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1631
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1632 self.assertEqual(parser.parse_args('1'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1633 NS(x=None, y='my_type{1}'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1634 self.assertEqual(parser.parse_args('-x 1 42'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1635 NS(x='my_type{1}', y='my_type{42}'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1636
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1637
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1638 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1639 # Action tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1640 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1641
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1642 class TestActionUserDefined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1643 """Test a user-defined option/argument action"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1644
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1645 class OptionalAction(argparse.Action):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1646
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1647 def __call__(self, parser, namespace, value, option_string=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1648 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1649 # check destination and option string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1650 assert self.dest == 'spam', 'dest: %s' % self.dest
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1651 assert option_string == '-s', 'flag: %s' % option_string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1652 # when option is before argument, badger=2, and when
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1653 # option is after argument, badger=<whatever was set>
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1654 expected_ns = NS(spam=0.25)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1655 if value in [0.125, 0.625]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1656 expected_ns.badger = 2
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1657 elif value in [2.0]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1658 expected_ns.badger = 84
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1659 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1660 raise AssertionError('value: %s' % value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1661 assert expected_ns == namespace, ('expected %s, got %s' %
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1662 (expected_ns, namespace))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1663 except AssertionError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1664 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1665 raise ArgumentParserError('opt_action failed: %s' % e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1666 setattr(namespace, 'spam', value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1667
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1668 class PositionalAction(argparse.Action):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1669
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1670 def __call__(self, parser, namespace, value, option_string=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1671 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1672 assert option_string is None, ('option_string: %s' %
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1673 option_string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1674 # check destination
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1675 assert self.dest == 'badger', 'dest: %s' % self.dest
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1676 # when argument is before option, spam=0.25, and when
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1677 # option is after argument, spam=<whatever was set>
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1678 expected_ns = NS(badger=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1679 if value in [42, 84]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1680 expected_ns.spam = 0.25
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1681 elif value in [1]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1682 expected_ns.spam = 0.625
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1683 elif value in [2]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1684 expected_ns.spam = 0.125
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1685 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1686 raise AssertionError('value: %s' % value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1687 assert expected_ns == namespace, ('expected %s, got %s' %
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1688 (expected_ns, namespace))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1689 except AssertionError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1690 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1691 raise ArgumentParserError('arg_action failed: %s' % e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1692 setattr(namespace, 'badger', value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1693
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1694 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1695 Sig('-s', dest='spam', action=OptionalAction,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1696 type=float, default=0.25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1697 Sig('badger', action=PositionalAction,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1698 type=int, nargs='?', default=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1699 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1700 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1701 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1702 ('-s0.125', NS(spam=0.125, badger=2)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1703 ('42', NS(spam=0.25, badger=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1704 ('-s 0.625 1', NS(spam=0.625, badger=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1705 ('84 -s2', NS(spam=2.0, badger=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1706 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1707
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1708
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1709 class TestActionRegistration(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1710 """Test a user-defined action supplied by registering it"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1711
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1712 class MyAction(argparse.Action):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1713
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1714 def __call__(self, parser, namespace, values, option_string=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1715 setattr(namespace, self.dest, 'foo[%s]' % values)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1716
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1717 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1718
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1719 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1720 parser.register('action', 'my_action', self.MyAction)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1721 parser.add_argument('badger', action='my_action')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1722
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1723 self.assertEqual(parser.parse_args(['1']), NS(badger='foo[1]'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1724 self.assertEqual(parser.parse_args(['42']), NS(badger='foo[42]'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1725
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1726
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1727 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1728 # Subparsers tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1729 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1730
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1731 class TestAddSubparsers(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1732 """Test the add_subparsers method"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1733
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1734 def assertArgumentParserError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1735 self.assertRaises(ArgumentParserError, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1736
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1737 def _get_parser(self, subparser_help=False, prefix_chars=None,
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1738 aliases=False):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1739 # create a parser with a subparsers argument
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1740 if prefix_chars:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1741 parser = ErrorRaisingArgumentParser(
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1742 prog='PROG', description='main description', prefix_chars=prefix_chars)
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1743 parser.add_argument(
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1744 prefix_chars[0] * 2 + 'foo', action='store_true', help='foo help')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1745 else:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1746 parser = ErrorRaisingArgumentParser(
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1747 prog='PROG', description='main description')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1748 parser.add_argument(
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1749 '--foo', action='store_true', help='foo help')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1750 parser.add_argument(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1751 'bar', type=float, help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1752
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1753 # check that only one subparsers argument can be added
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1754 subparsers_kwargs = {}
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1755 if aliases:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1756 subparsers_kwargs['metavar'] = 'COMMAND'
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1757 subparsers_kwargs['title'] = 'commands'
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1758 else:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1759 subparsers_kwargs['help'] = 'command help'
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1760 subparsers = parser.add_subparsers(**subparsers_kwargs)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1761 self.assertArgumentParserError(parser.add_subparsers)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1762
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1763 # add first sub-parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1764 parser1_kwargs = dict(description='1 description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1765 if subparser_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1766 parser1_kwargs['help'] = '1 help'
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1767 if aliases:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1768 parser1_kwargs['aliases'] = ['1alias1', '1alias2']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1769 parser1 = subparsers.add_parser('1', **parser1_kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1770 parser1.add_argument('-w', type=int, help='w help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1771 parser1.add_argument('x', choices='abc', help='x help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1772
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1773 # add second sub-parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1774 parser2_kwargs = dict(description='2 description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1775 if subparser_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1776 parser2_kwargs['help'] = '2 help'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1777 parser2 = subparsers.add_parser('2', **parser2_kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1778 parser2.add_argument('-y', choices='123', help='y help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1779 parser2.add_argument('z', type=complex, nargs='*', help='z help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1780
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1781 # add third sub-parser
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1782 parser3_kwargs = dict(description='3 description')
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1783 if subparser_help:
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1784 parser3_kwargs['help'] = '3 help'
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1785 parser3 = subparsers.add_parser('3', **parser3_kwargs)
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1786 parser3.add_argument('t', type=int, help='t help')
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1787 parser3.add_argument('u', nargs='...', help='u help')
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1788
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1789 # return the main parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1790 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1791
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1792 def setUp(self):
65857
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
1793 super().setUp()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1794 self.parser = self._get_parser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1795 self.command_help_parser = self._get_parser(subparser_help=True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1796
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1797 def test_parse_args_failures(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1798 # check some failure cases:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1799 for args_str in ['', 'a', 'a a', '0.5 a', '0.5 1',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1800 '0.5 1 -y', '0.5 2 -w']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1801 args = args_str.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1802 self.assertArgumentParserError(self.parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1803
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1804 def test_parse_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1805 # check some non-failure cases:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1806 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1807 self.parser.parse_args('0.5 1 b -w 7'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1808 NS(foo=False, bar=0.5, w=7, x='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1809 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1810 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1811 self.parser.parse_args('0.25 --foo 2 -y 2 3j -- -1j'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1812 NS(foo=True, bar=0.25, y='2', z=[3j, -1j]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1813 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1814 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1815 self.parser.parse_args('--foo 0.125 1 c'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1816 NS(foo=True, bar=0.125, w=None, x='c'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1817 )
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1818 self.assertEqual(
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1819 self.parser.parse_args('-1.5 3 11 -- a --foo 7 -- b'.split()),
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1820 NS(foo=False, bar=-1.5, t=11, u=['a', '--foo', '7', '--', 'b']),
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1821 )
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1822
65887
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1823 def test_parse_known_args(self):
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1824 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1825 self.parser.parse_known_args('0.5 1 b -w 7'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1826 (NS(foo=False, bar=0.5, w=7, x='b'), []),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1827 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1828 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1829 self.parser.parse_known_args('0.5 -p 1 b -w 7'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1830 (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1831 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1832 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1833 self.parser.parse_known_args('0.5 1 b -w 7 -p'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1834 (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1835 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1836 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1837 self.parser.parse_known_args('0.5 1 b -q -rs -w 7'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1838 (NS(foo=False, bar=0.5, w=7, x='b'), ['-q', '-rs']),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1839 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1840 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1841 self.parser.parse_known_args('0.5 -W 1 b -X Y -w 7 Z'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1842 (NS(foo=False, bar=0.5, w=7, x='b'), ['-W', '-X', 'Y', 'Z']),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1843 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1844
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1845 def test_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1846 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1847 parser.add_argument('--foo', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1848 subparsers = parser.add_subparsers(dest='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1849 parser1 = subparsers.add_parser('1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1850 parser1.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1851 self.assertEqual(NS(foo=False, bar='1', baz='2'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1852 parser.parse_args('1 2'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1853
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1854 def test_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1855 self.assertEqual(self.parser.format_usage(),
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1856 'usage: PROG [-h] [--foo] bar {1,2,3} ...\n')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1857 self.assertEqual(self.parser.format_help(), textwrap.dedent('''\
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1858 usage: PROG [-h] [--foo] bar {1,2,3} ...
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1859
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1860 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1861
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1862 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1863 bar bar help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1864 {1,2,3} command help
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1865
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1866 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1867 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1868 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1869 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1870
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1871 def test_help_extra_prefix_chars(self):
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1872 # Make sure - is still used for help if it is a non-first prefix char
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1873 parser = self._get_parser(prefix_chars='+:-')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1874 self.assertEqual(parser.format_usage(),
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1875 'usage: PROG [-h] [++foo] bar {1,2,3} ...\n')
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1876 self.assertEqual(parser.format_help(), textwrap.dedent('''\
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1877 usage: PROG [-h] [++foo] bar {1,2,3} ...
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1878
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1879 main description
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1880
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1881 positional arguments:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1882 bar bar help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1883 {1,2,3} command help
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1884
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1885 optional arguments:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1886 -h, --help show this help message and exit
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1887 ++foo foo help
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1888 '''))
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1889
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1890
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1891 def test_help_alternate_prefix_chars(self):
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1892 parser = self._get_parser(prefix_chars='+:/')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1893 self.assertEqual(parser.format_usage(),
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1894 'usage: PROG [+h] [++foo] bar {1,2,3} ...\n')
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1895 self.assertEqual(parser.format_help(), textwrap.dedent('''\
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1896 usage: PROG [+h] [++foo] bar {1,2,3} ...
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1897
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1898 main description
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1899
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1900 positional arguments:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1901 bar bar help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1902 {1,2,3} command help
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1903
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1904 optional arguments:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1905 +h, ++help show this help message and exit
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1906 ++foo foo help
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1907 '''))
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1908
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1909 def test_parser_command_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1910 self.assertEqual(self.command_help_parser.format_usage(),
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1911 'usage: PROG [-h] [--foo] bar {1,2,3} ...\n')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1912 self.assertEqual(self.command_help_parser.format_help(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1913 textwrap.dedent('''\
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1914 usage: PROG [-h] [--foo] bar {1,2,3} ...
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1915
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1916 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1917
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1918 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1919 bar bar help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1920 {1,2,3} command help
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1921 1 1 help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1922 2 2 help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1923 3 3 help
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1924
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1925 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1926 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1927 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1928 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1929
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1930 def test_subparser_title_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1931 parser = ErrorRaisingArgumentParser(prog='PROG',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1932 description='main description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1933 parser.add_argument('--foo', action='store_true', help='foo help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1934 parser.add_argument('bar', help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1935 subparsers = parser.add_subparsers(title='subcommands',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1936 description='command help',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1937 help='additional text')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1938 parser1 = subparsers.add_parser('1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1939 parser2 = subparsers.add_parser('2')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1940 self.assertEqual(parser.format_usage(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1941 'usage: PROG [-h] [--foo] bar {1,2} ...\n')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1942 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1943 usage: PROG [-h] [--foo] bar {1,2} ...
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1944
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1945 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1946
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1947 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1948 bar bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1949
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1950 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1951 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1952 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1953
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1954 subcommands:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1955 command help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1956
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1957 {1,2} additional text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1958 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1959
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1960 def _test_subparser_help(self, args_str, expected_help):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1961 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1962 self.parser.parse_args(args_str.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1963 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1964 err = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1965 if err.stdout != expected_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1966 print(repr(expected_help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1967 print(repr(err.stdout))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1968 self.assertEqual(err.stdout, expected_help)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1969
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1970 def test_subparser1_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1971 self._test_subparser_help('5.0 1 -h', textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1972 usage: PROG bar 1 [-h] [-w W] {a,b,c}
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1973
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1974 1 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1975
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1976 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1977 {a,b,c} x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1978
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1979 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1980 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1981 -w W w help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1982 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1983
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1984 def test_subparser2_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1985 self._test_subparser_help('5.0 2 -h', textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1986 usage: PROG bar 2 [-h] [-y {1,2,3}] [z [z ...]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1987
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1988 2 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1989
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1990 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1991 z z help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1992
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1993 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1994 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1995 -y {1,2,3} y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1996 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1997
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1998 def test_alias_invocation(self):
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1999 parser = self._get_parser(aliases=True)
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2000 self.assertEqual(
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2001 parser.parse_known_args('0.5 1alias1 b'.split()),
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2002 (NS(foo=False, bar=0.5, w=None, x='b'), []),
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2003 )
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2004 self.assertEqual(
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2005 parser.parse_known_args('0.5 1alias2 b'.split()),
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2006 (NS(foo=False, bar=0.5, w=None, x='b'), []),
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2007 )
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2008
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2009 def test_error_alias_invocation(self):
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2010 parser = self._get_parser(aliases=True)
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2011 self.assertArgumentParserError(parser.parse_args,
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2012 '0.5 1alias3 b'.split())
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2013
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2014 def test_alias_help(self):
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2015 parser = self._get_parser(aliases=True, subparser_help=True)
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2016 self.maxDiff = None
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2017 self.assertEqual(parser.format_help(), textwrap.dedent("""\
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2018 usage: PROG [-h] [--foo] bar COMMAND ...
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2019
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2020 main description
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2021
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2022 positional arguments:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2023 bar bar help
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2024
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2025 optional arguments:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2026 -h, --help show this help message and exit
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2027 --foo foo help
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2028
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2029 commands:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2030 COMMAND
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2031 1 (1alias1, 1alias2)
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2032 1 help
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2033 2 2 help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
2034 3 3 help
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2035 """))
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2036
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2037 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2038 # Groups tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2039 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2040
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2041 class TestPositionalsGroups(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2042 """Tests that order of group positionals matches construction order"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2043
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2044 def test_nongroup_first(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2045 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2046 parser.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2047 group = parser.add_argument_group('g')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2048 group.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2049 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2050 expected = NS(foo='1', bar='2', baz='3')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2051 result = parser.parse_args('1 2 3'.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2052 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2053
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2054 def test_group_first(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2055 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2056 group = parser.add_argument_group('xxx')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2057 group.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2058 parser.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2059 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2060 expected = NS(foo='1', bar='2', baz='3')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2061 result = parser.parse_args('1 2 3'.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2062 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2063
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2064 def test_interleaved_groups(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2065 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2066 group = parser.add_argument_group('xxx')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2067 parser.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2068 group.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2069 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2070 group = parser.add_argument_group('yyy')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2071 group.add_argument('frell')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2072 expected = NS(foo='1', bar='2', baz='3', frell='4')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2073 result = parser.parse_args('1 2 3 4'.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2074 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2075
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2076 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2077 # Parent parser tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2078 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2079
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2080 class TestParentParsers(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2081 """Tests that parsers can be created with parent parsers"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2082
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2083 def assertArgumentParserError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2084 self.assertRaises(ArgumentParserError, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2085
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2086 def setUp(self):
65857
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
2087 super().setUp()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2088 self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2089 self.wxyz_parent.add_argument('--w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2090 x_group = self.wxyz_parent.add_argument_group('x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2091 x_group.add_argument('-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2092 self.wxyz_parent.add_argument('z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2093
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2094 self.abcd_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2095 self.abcd_parent.add_argument('a')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2096 self.abcd_parent.add_argument('-b')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2097 c_group = self.abcd_parent.add_argument_group('c')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2098 c_group.add_argument('--d')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2099
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2100 self.w_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2101 self.w_parent.add_argument('--w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2102
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2103 self.z_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2104 self.z_parent.add_argument('z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2105
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2106 # parents with mutually exclusive groups
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2107 self.ab_mutex_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2108 group = self.ab_mutex_parent.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2109 group.add_argument('-a', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2110 group.add_argument('-b', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2111
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2112 self.main_program = os.path.basename(sys.argv[0])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2113
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2114 def test_single_parent(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2115 parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2116 self.assertEqual(parser.parse_args('-y 1 2 --w 3'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2117 NS(w='3', y='1', z='2'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2118
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2119 def test_single_parent_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2120 self._test_mutex_ab(self.ab_mutex_parent.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2121 parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2122 self._test_mutex_ab(parser.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2123
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2124 def test_single_granparent_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2125 parents = [self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2126 parser = ErrorRaisingArgumentParser(add_help=False, parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2127 parser = ErrorRaisingArgumentParser(parents=[parser])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2128 self._test_mutex_ab(parser.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2129
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2130 def _test_mutex_ab(self, parse_args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2131 self.assertEqual(parse_args([]), NS(a=False, b=False))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2132 self.assertEqual(parse_args(['-a']), NS(a=True, b=False))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2133 self.assertEqual(parse_args(['-b']), NS(a=False, b=True))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2134 self.assertArgumentParserError(parse_args, ['-a', '-b'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2135 self.assertArgumentParserError(parse_args, ['-b', '-a'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2136 self.assertArgumentParserError(parse_args, ['-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2137 self.assertArgumentParserError(parse_args, ['-a', '-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2138 self.assertArgumentParserError(parse_args, ['-b', '-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2139
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2140 def test_multiple_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2141 parents = [self.abcd_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2142 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2143 self.assertEqual(parser.parse_args('--d 1 --w 2 3 4'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2144 NS(a='3', b=None, d='1', w='2', y=None, z='4'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2145
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2146 def test_multiple_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2147 parents = [self.ab_mutex_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2148 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2149 self.assertEqual(parser.parse_args('-a --w 2 3'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2150 NS(a=True, b=False, w='2', y=None, z='3'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2151 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2152 parser.parse_args, '-a --w 2 3 -b'.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2153 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2154 parser.parse_args, '-a -b --w 2 3'.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2155
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2156 def test_conflicting_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2157 self.assertRaises(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2158 argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2159 argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2160 parents=[self.w_parent, self.wxyz_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2161
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2162 def test_conflicting_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2163 self.assertRaises(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2164 argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2165 argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2166 parents=[self.abcd_parent, self.ab_mutex_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2167
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2168 def test_same_argument_name_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2169 parents = [self.wxyz_parent, self.z_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2170 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2171 self.assertEqual(parser.parse_args('1 2'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2172 NS(w=None, y=None, z='2'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2173
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2174 def test_subparser_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2175 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2176 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2177 abcde_parser = subparsers.add_parser('bar', parents=[self.abcd_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2178 abcde_parser.add_argument('e')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2179 self.assertEqual(parser.parse_args('bar -b 1 --d 2 3 4'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2180 NS(a='3', b='1', d='2', e='4'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2181
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2182 def test_subparser_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2183 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2184 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2185 parents = [self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2186 abc_parser = subparsers.add_parser('foo', parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2187 c_group = abc_parser.add_argument_group('c_group')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2188 c_group.add_argument('c')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2189 parents = [self.wxyz_parent, self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2190 wxyzabe_parser = subparsers.add_parser('bar', parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2191 wxyzabe_parser.add_argument('e')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2192 self.assertEqual(parser.parse_args('foo -a 4'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2193 NS(a=True, b=False, c='4'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2194 self.assertEqual(parser.parse_args('bar -b --w 2 3 4'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2195 NS(a=False, b=True, w='2', y=None, z='3', e='4'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2196 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2197 parser.parse_args, 'foo -a -b 4'.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2198 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2199 parser.parse_args, 'bar -b -a 4'.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2200
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2201 def test_parent_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2202 parents = [self.abcd_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2203 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2204 parser_help = parser.format_help()
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2205 progname = self.main_program
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2206 self.assertEqual(parser_help, textwrap.dedent('''\
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2207 usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2208
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2209 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2210 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2211 z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2212
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2213 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2214 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2215 -b B
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2216 --w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2217
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2218 c:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2219 --d D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2220
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2221 x:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2222 -y Y
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2223 '''.format(progname, ' ' if progname else '' )))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2224
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2225 def test_groups_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2226 parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2227 g = parent.add_argument_group(title='g', description='gd')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2228 g.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2229 g.add_argument('-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2230 m = parent.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2231 m.add_argument('-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2232 m.add_argument('-z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2233 parser = ErrorRaisingArgumentParser(parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2234
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2235 self.assertRaises(ArgumentParserError, parser.parse_args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2236 ['-y', 'Y', '-z', 'Z'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2237
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2238 parser_help = parser.format_help()
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2239 progname = self.main_program
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2240 self.assertEqual(parser_help, textwrap.dedent('''\
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2241 usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2242
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2243 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2244 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2245 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2246 -z Z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2247
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2248 g:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2249 gd
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2250
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2251 -w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2252 -x X
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2253 '''.format(progname, ' ' if progname else '' )))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2254
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2255 # ==============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2256 # Mutually exclusive group tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2257 # ==============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2258
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2259 class TestMutuallyExclusiveGroupErrors(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2260
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2261 def test_invalid_add_argument_group(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2262 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2263 raises = self.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2264 raises(TypeError, parser.add_mutually_exclusive_group, title='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2265
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2266 def test_invalid_add_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2267 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2268 group = parser.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2269 add_argument = group.add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2270 raises = self.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2271 raises(ValueError, add_argument, '--foo', required=True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2272 raises(ValueError, add_argument, 'bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2273 raises(ValueError, add_argument, 'bar', nargs='+')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2274 raises(ValueError, add_argument, 'bar', nargs=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2275 raises(ValueError, add_argument, 'bar', nargs=argparse.PARSER)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2276
65869
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2277 def test_help(self):
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2278 parser = ErrorRaisingArgumentParser(prog='PROG')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2279 group1 = parser.add_mutually_exclusive_group()
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2280 group1.add_argument('--foo', action='store_true')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2281 group1.add_argument('--bar', action='store_false')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2282 group2 = parser.add_mutually_exclusive_group()
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2283 group2.add_argument('--soup', action='store_true')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2284 group2.add_argument('--nuts', action='store_false')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2285 expected = '''\
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2286 usage: PROG [-h] [--foo | --bar] [--soup | --nuts]
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2287
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2288 optional arguments:
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2289 -h, --help show this help message and exit
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2290 --foo
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2291 --bar
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2292 --soup
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2293 --nuts
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2294 '''
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2295 self.assertEqual(parser.format_help(), textwrap.dedent(expected))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2296
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2297 class MEMixin(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2298
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2299 def test_failures_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2300 parse_args = self.get_parser(required=False).parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2301 error = ArgumentParserError
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2302 for args_string in self.failures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2303 self.assertRaises(error, parse_args, args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2304
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2305 def test_failures_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2306 parse_args = self.get_parser(required=True).parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2307 error = ArgumentParserError
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2308 for args_string in self.failures + ['']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2309 self.assertRaises(error, parse_args, args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2310
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2311 def test_successes_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2312 parse_args = self.get_parser(required=False).parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2313 successes = self.successes + self.successes_when_not_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2314 for args_string, expected_ns in successes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2315 actual_ns = parse_args(args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2316 self.assertEqual(actual_ns, expected_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2317
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2318 def test_successes_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2319 parse_args = self.get_parser(required=True).parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2320 for args_string, expected_ns in self.successes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2321 actual_ns = parse_args(args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2322 self.assertEqual(actual_ns, expected_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2323
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2324 def test_usage_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2325 format_usage = self.get_parser(required=False).format_usage
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2326 expected_usage = self.usage_when_not_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2327 self.assertEqual(format_usage(), textwrap.dedent(expected_usage))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2328
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2329 def test_usage_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2330 format_usage = self.get_parser(required=True).format_usage
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2331 expected_usage = self.usage_when_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2332 self.assertEqual(format_usage(), textwrap.dedent(expected_usage))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2333
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2334 def test_help_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2335 format_help = self.get_parser(required=False).format_help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2336 help = self.usage_when_not_required + self.help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2337 self.assertEqual(format_help(), textwrap.dedent(help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2338
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2339 def test_help_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2340 format_help = self.get_parser(required=True).format_help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2341 help = self.usage_when_required + self.help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2342 self.assertEqual(format_help(), textwrap.dedent(help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2343
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2344
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2345 class TestMutuallyExclusiveSimple(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2346
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2347 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2348 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2349 group = parser.add_mutually_exclusive_group(required=required)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2350 group.add_argument('--bar', help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2351 group.add_argument('--baz', nargs='?', const='Z', help='baz help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2352 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2353
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2354 failures = ['--bar X --baz Y', '--bar X --baz']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2355 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2356 ('--bar X', NS(bar='X', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2357 ('--bar X --bar Z', NS(bar='Z', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2358 ('--baz Y', NS(bar=None, baz='Y')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2359 ('--baz', NS(bar=None, baz='Z')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2360 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2361 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2362 ('', NS(bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2363 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2364
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2365 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2366 usage: PROG [-h] [--bar BAR | --baz [BAZ]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2367 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2368 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2369 usage: PROG [-h] (--bar BAR | --baz [BAZ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2370 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2371 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2372
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2373 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2374 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2375 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2376 --baz [BAZ] baz help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2377 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2378
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2379
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2380 class TestMutuallyExclusiveLong(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2381
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2382 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2383 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2384 parser.add_argument('--abcde', help='abcde help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2385 parser.add_argument('--fghij', help='fghij help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2386 group = parser.add_mutually_exclusive_group(required=required)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2387 group.add_argument('--klmno', help='klmno help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2388 group.add_argument('--pqrst', help='pqrst help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2389 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2390
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2391 failures = ['--klmno X --pqrst Y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2392 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2393 ('--klmno X', NS(abcde=None, fghij=None, klmno='X', pqrst=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2394 ('--abcde Y --klmno X',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2395 NS(abcde='Y', fghij=None, klmno='X', pqrst=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2396 ('--pqrst X', NS(abcde=None, fghij=None, klmno=None, pqrst='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2397 ('--pqrst X --fghij Y',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2398 NS(abcde=None, fghij='Y', klmno=None, pqrst='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2399 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2400 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2401 ('', NS(abcde=None, fghij=None, klmno=None, pqrst=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2402 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2403
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2404 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2405 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2406 [--klmno KLMNO | --pqrst PQRST]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2407 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2408 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2409 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2410 (--klmno KLMNO | --pqrst PQRST)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2411 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2412 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2413
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2414 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2415 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2416 --abcde ABCDE abcde help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2417 --fghij FGHIJ fghij help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2418 --klmno KLMNO klmno help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2419 --pqrst PQRST pqrst help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2420 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2421
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2422
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2423 class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2424
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2425 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2426 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2427 group = parser.add_mutually_exclusive_group(required=required)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2428 group.add_argument('-x', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2429 group.add_argument('-y', action='store_false', help='y help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2430 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2431
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2432 failures = ['-x X -y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2433 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2434 ('-x X', NS(x='X', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2435 ('-x X -x Y', NS(x='Y', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2436 ('-y', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2437 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2438 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2439 ('', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2440 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2441
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2442 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2443 usage: PROG [-h] [-y]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2444 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2445 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2446 usage: PROG [-h] -y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2447 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2448 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2449
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2450 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2451 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2452 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2453 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2454
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2455
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2456 class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2457
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2458 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2459 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2460 group = parser.add_mutually_exclusive_group(required=required)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2461 add = group.add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2462 add('--spam', action='store_true', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2463 add('--badger', action='store_false', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2464 add('--bladder', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2465 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2466
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2467 failures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2468 '--spam --badger',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2469 '--badger --bladder B',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2470 '--bladder B --spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2471 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2472 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2473 ('--spam', NS(spam=True, badger=True, bladder=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2474 ('--badger', NS(spam=False, badger=False, bladder=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2475 ('--bladder B', NS(spam=False, badger=True, bladder='B')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2476 ('--spam --spam', NS(spam=True, badger=True, bladder=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2477 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2478 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2479 ('', NS(spam=False, badger=True, bladder=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2480 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2481
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2482 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2483 usage: PROG [-h]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2484 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2485 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2486
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2487 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2488 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2489 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2490
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2491
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2492 class TestMutuallyExclusiveOptionalAndPositional(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2493
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2494 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2495 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2496 group = parser.add_mutually_exclusive_group(required=required)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2497 group.add_argument('--foo', action='store_true', help='FOO')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2498 group.add_argument('--spam', help='SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2499 group.add_argument('badger', nargs='*', default='X', help='BADGER')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2500 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2501
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2502 failures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2503 '--foo --spam S',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2504 '--spam S X',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2505 'X --foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2506 'X Y Z --spam S',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2507 '--foo X Y',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2508 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2509 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2510 ('--foo', NS(foo=True, spam=None, badger='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2511 ('--spam S', NS(foo=False, spam='S', badger='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2512 ('X', NS(foo=False, spam=None, badger=['X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2513 ('X Y Z', NS(foo=False, spam=None, badger=['X', 'Y', 'Z'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2514 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2515 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2516 ('', NS(foo=False, spam=None, badger='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2517 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2518
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2519 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2520 usage: PROG [-h] [--foo | --spam SPAM | badger [badger ...]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2521 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2522 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2523 usage: PROG [-h] (--foo | --spam SPAM | badger [badger ...])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2524 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2525 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2526
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2527 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2528 badger BADGER
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2529
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2530 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2531 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2532 --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2533 --spam SPAM SPAM
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2534 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2535
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2536
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2537 class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2538
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2539 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2540 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2541 parser.add_argument('-x', action='store_true', help='x help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2542 group = parser.add_mutually_exclusive_group(required=required)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2543 group.add_argument('-a', action='store_true', help='a help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2544 group.add_argument('-b', action='store_true', help='b help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2545 parser.add_argument('-y', action='store_true', help='y help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2546 group.add_argument('-c', action='store_true', help='c help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2547 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2548
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2549 failures = ['-a -b', '-b -c', '-a -c', '-a -b -c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2550 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2551 ('-a', NS(a=True, b=False, c=False, x=False, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2552 ('-b', NS(a=False, b=True, c=False, x=False, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2553 ('-c', NS(a=False, b=False, c=True, x=False, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2554 ('-a -x', NS(a=True, b=False, c=False, x=True, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2555 ('-y -b', NS(a=False, b=True, c=False, x=False, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2556 ('-x -y -c', NS(a=False, b=False, c=True, x=True, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2557 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2558 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2559 ('', NS(a=False, b=False, c=False, x=False, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2560 ('-x', NS(a=False, b=False, c=False, x=True, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2561 ('-y', NS(a=False, b=False, c=False, x=False, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2562 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2563
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2564 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2565 usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2566 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2567 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2568
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2569 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2570 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2571 -x x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2572 -a a help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2573 -b b help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2574 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2575 -c c help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2576 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2577
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2578
67819
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2579 class TestMutuallyExclusiveInGroup(MEMixin, TestCase):
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2580
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2581 def get_parser(self, required=None):
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2582 parser = ErrorRaisingArgumentParser(prog='PROG')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2583 titled_group = parser.add_argument_group(
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2584 title='Titled group', description='Group description')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2585 mutex_group = \
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2586 titled_group.add_mutually_exclusive_group(required=required)
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2587 mutex_group.add_argument('--bar', help='bar help')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2588 mutex_group.add_argument('--baz', help='baz help')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2589 return parser
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2590
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2591 failures = ['--bar X --baz Y', '--baz X --bar Y']
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2592 successes = [
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2593 ('--bar X', NS(bar='X', baz=None)),
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2594 ('--baz Y', NS(bar=None, baz='Y')),
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2595 ]
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2596 successes_when_not_required = [
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2597 ('', NS(bar=None, baz=None)),
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2598 ]
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2599
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2600 usage_when_not_required = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2601 usage: PROG [-h] [--bar BAR | --baz BAZ]
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2602 '''
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2603 usage_when_required = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2604 usage: PROG [-h] (--bar BAR | --baz BAZ)
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2605 '''
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2606 help = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2607
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2608 optional arguments:
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2609 -h, --help show this help message and exit
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2610
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2611 Titled group:
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2612 Group description
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2613
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2614 --bar BAR bar help
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2615 --baz BAZ baz help
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2616 '''
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2617
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2618
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2619 class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2620
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2621 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2622 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2623 parser.add_argument('x', help='x help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2624 parser.add_argument('-y', action='store_true', help='y help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2625 group = parser.add_mutually_exclusive_group(required=required)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2626 group.add_argument('a', nargs='?', help='a help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2627 group.add_argument('-b', action='store_true', help='b help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2628 group.add_argument('-c', action='store_true', help='c help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2629 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2630
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2631 failures = ['X A -b', '-b -c', '-c X A']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2632 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2633 ('X A', NS(a='A', b=False, c=False, x='X', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2634 ('X -b', NS(a=None, b=True, c=False, x='X', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2635 ('X -c', NS(a=None, b=False, c=True, x='X', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2636 ('X A -y', NS(a='A', b=False, c=False, x='X', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2637 ('X -y -b', NS(a=None, b=True, c=False, x='X', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2638 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2639 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2640 ('X', NS(a=None, b=False, c=False, x='X', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2641 ('X -y', NS(a=None, b=False, c=False, x='X', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2642 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2643
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2644 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2645 usage: PROG [-h] [-y] [-b] [-c] x [a]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2646 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2647 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2648
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2649 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2650 x x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2651 a a help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2652
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2653 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2654 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2655 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2656 -b b help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2657 -c c help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2658 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2659
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2660 # =================================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2661 # Mutually exclusive group in parent parser tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2662 # =================================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2663
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2664 class MEPBase(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2665
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2666 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2667 parent = super(MEPBase, self).get_parser(required=required)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2668 parser = ErrorRaisingArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2669 prog=parent.prog, add_help=False, parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2670 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2671
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2672
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2673 class TestMutuallyExclusiveGroupErrorsParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2674 MEPBase, TestMutuallyExclusiveGroupErrors):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2675 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2676
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2677
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2678 class TestMutuallyExclusiveSimpleParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2679 MEPBase, TestMutuallyExclusiveSimple):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2680 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2681
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2682
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2683 class TestMutuallyExclusiveLongParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2684 MEPBase, TestMutuallyExclusiveLong):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2685 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2686
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2687
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2688 class TestMutuallyExclusiveFirstSuppressedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2689 MEPBase, TestMutuallyExclusiveFirstSuppressed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2690 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2691
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2692
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2693 class TestMutuallyExclusiveManySuppressedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2694 MEPBase, TestMutuallyExclusiveManySuppressed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2695 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2696
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2697
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2698 class TestMutuallyExclusiveOptionalAndPositionalParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2699 MEPBase, TestMutuallyExclusiveOptionalAndPositional):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2700 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2701
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2702
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2703 class TestMutuallyExclusiveOptionalsMixedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2704 MEPBase, TestMutuallyExclusiveOptionalsMixed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2705 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2706
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2707
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2708 class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2709 MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2710 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2711
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2712 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2713 # Set default tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2714 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2715
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2716 class TestSetDefaults(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2717
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2718 def test_set_defaults_no_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2719 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2720 parser.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2721 parser.set_defaults(y='bar', z=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2722 self.assertEqual(NS(x='foo', y='bar', z=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2723 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2724 self.assertEqual(NS(x='foo', y='bar', z=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2725 parser.parse_args([], NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2726 self.assertEqual(NS(x='baz', y='bar', z=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2727 parser.parse_args([], NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2728 self.assertEqual(NS(x='baz', y='bar', z=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2729 parser.parse_args([], NS(x='baz', z=2)))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2730
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2731 def test_set_defaults_with_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2732 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2733 parser.set_defaults(x='foo', y='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2734 parser.add_argument('-x', default='xfoox')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2735 self.assertEqual(NS(x='xfoox', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2736 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2737 self.assertEqual(NS(x='xfoox', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2738 parser.parse_args([], NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2739 self.assertEqual(NS(x='baz', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2740 parser.parse_args([], NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2741 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2742 parser.parse_args('-x 1'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2743 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2744 parser.parse_args('-x 1'.split(), NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2745 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2746 parser.parse_args('-x 1'.split(), NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2747
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2748 def test_set_defaults_subparsers(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2749 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2750 parser.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2751 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2752 parser_a = subparsers.add_parser('a')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2753 parser_a.set_defaults(y='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2754 self.assertEqual(NS(x='foo', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2755 parser.parse_args('a'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2756
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2757 def test_set_defaults_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2758 parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2759 parent.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2760 parser = ErrorRaisingArgumentParser(parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2761 self.assertEqual(NS(x='foo'), parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2762
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2763 def test_set_defaults_same_as_add_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2764 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2765 parser.set_defaults(w='W', x='X', y='Y', z='Z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2766 parser.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2767 parser.add_argument('-x', default='XX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2768 parser.add_argument('y', nargs='?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2769 parser.add_argument('z', nargs='?', default='ZZ')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2770
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2771 # defaults set previously
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2772 self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2773 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2774
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2775 # reset defaults
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2776 parser.set_defaults(w='WW', x='X', y='YY', z='Z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2777 self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2778 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2779
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2780 def test_set_defaults_same_as_add_argument_group(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2781 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2782 parser.set_defaults(w='W', x='X', y='Y', z='Z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2783 group = parser.add_argument_group('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2784 group.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2785 group.add_argument('-x', default='XX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2786 group.add_argument('y', nargs='?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2787 group.add_argument('z', nargs='?', default='ZZ')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2788
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2789
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2790 # defaults set previously
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2791 self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2792 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2793
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2794 # reset defaults
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2795 parser.set_defaults(w='WW', x='X', y='YY', z='Z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2796 self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2797 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2798
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2799 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2800 # Get default tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2801 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2802
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2803 class TestGetDefault(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2804
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2805 def test_get_default(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2806 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2807 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2808 self.assertEqual(None, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2809
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2810 parser.add_argument("--foo")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2811 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2812 self.assertEqual(None, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2813
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2814 parser.add_argument("--bar", type=int, default=42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2815 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2816 self.assertEqual(42, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2817
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2818 parser.set_defaults(foo="badger")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2819 self.assertEqual("badger", parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2820 self.assertEqual(42, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2821
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2822 # ==========================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2823 # Namespace 'contains' tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2824 # ==========================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2825
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2826 class TestNamespaceContainsSimple(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2827
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2828 def test_empty(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2829 ns = argparse.Namespace()
66310
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2830 self.assertEqual('' in ns, False)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2831 self.assertEqual('' not in ns, True)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2832 self.assertEqual('x' in ns, False)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2833
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2834 def test_non_empty(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2835 ns = argparse.Namespace(x=1, y=2)
66310
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2836 self.assertEqual('x' in ns, True)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2837 self.assertEqual('x' not in ns, False)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2838 self.assertEqual('y' in ns, True)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2839 self.assertEqual('' in ns, False)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2840 self.assertEqual('xx' in ns, False)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2841 self.assertEqual('z' in ns, False)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2842
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2843 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2844 # Help formatting tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2845 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2846
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2847 class TestHelpFormattingMetaclass(type):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2848
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2849 def __init__(cls, name, bases, bodydict):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2850 if name == 'HelpTestCase':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2851 return
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2852
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2853 class AddTests(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2854
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2855 def __init__(self, test_class, func_suffix, std_name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2856 self.func_suffix = func_suffix
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2857 self.std_name = std_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2858
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2859 for test_func in [self.test_format,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2860 self.test_print,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2861 self.test_print_file]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2862 test_name = '%s_%s' % (test_func.__name__, func_suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2863
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2864 def test_wrapper(self, test_func=test_func):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2865 test_func(self)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2866 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2867 test_wrapper.__name__ = test_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2868 except TypeError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2869 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2870 setattr(test_class, test_name, test_wrapper)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2871
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2872 def _get_parser(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2873 parser = argparse.ArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2874 *tester.parser_signature.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2875 **tester.parser_signature.kwargs)
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2876 for argument_sig in getattr(tester, 'argument_signatures', []):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2877 parser.add_argument(*argument_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2878 **argument_sig.kwargs)
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2879 group_sigs = getattr(tester, 'argument_group_signatures', [])
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2880 for group_sig, argument_sigs in group_sigs:
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2881 group = parser.add_argument_group(*group_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2882 **group_sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2883 for argument_sig in argument_sigs:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2884 group.add_argument(*argument_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2885 **argument_sig.kwargs)
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2886 subparsers_sigs = getattr(tester, 'subparsers_signatures', [])
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2887 if subparsers_sigs:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2888 subparsers = parser.add_subparsers()
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2889 for subparser_sig in subparsers_sigs:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2890 subparsers.add_parser(*subparser_sig.args,
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2891 **subparser_sig.kwargs)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2892 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2893
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2894 def _test(self, tester, parser_text):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2895 expected_text = getattr(tester, self.func_suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2896 expected_text = textwrap.dedent(expected_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2897 if expected_text != parser_text:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2898 print(repr(expected_text))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2899 print(repr(parser_text))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2900 for char1, char2 in zip(expected_text, parser_text):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2901 if char1 != char2:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2902 print('first diff: %r %r' % (char1, char2))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2903 break
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2904 tester.assertEqual(expected_text, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2905
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2906 def test_format(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2907 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2908 format = getattr(parser, 'format_%s' % self.func_suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2909 self._test(tester, format())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2910
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2911 def test_print(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2912 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2913 print_ = getattr(parser, 'print_%s' % self.func_suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2914 old_stream = getattr(sys, self.std_name)
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
2915 setattr(sys, self.std_name, StdIOBuffer())
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2916 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2917 print_()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2918 parser_text = getattr(sys, self.std_name).getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2919 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2920 setattr(sys, self.std_name, old_stream)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2921 self._test(tester, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2922
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2923 def test_print_file(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2924 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2925 print_ = getattr(parser, 'print_%s' % self.func_suffix)
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
2926 sfile = StdIOBuffer()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2927 print_(sfile)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2928 parser_text = sfile.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2929 self._test(tester, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2930
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2931 # add tests for {format,print}_{usage,help}
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2932 for func_suffix, std_name in [('usage', 'stdout'),
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2933 ('help', 'stdout')]:
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2934 AddTests(cls, func_suffix, std_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2935
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2936 bases = TestCase,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2937 HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2938
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2939
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2940 class TestHelpBiggerOptionals(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2941 """Make sure that argument help aligns when options are longer"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2942
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2943 parser_signature = Sig(prog='PROG', description='DESCRIPTION',
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2944 epilog='EPILOG')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2945 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2946 Sig('-v', '--version', action='version', version='0.1'),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2947 Sig('-x', action='store_true', help='X HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2948 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2949 Sig('foo', help='FOO HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2950 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2951 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2952 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2953 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2954 usage: PROG [-h] [-v] [-x] [--y Y] foo bar
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2955 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2956 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2957
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2958 DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2959
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2960 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2961 foo FOO HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2962 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2963
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2964 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2965 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2966 -v, --version show program's version number and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2967 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2968 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2969
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2970 EPILOG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2971 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2972 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2973 0.1
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2974 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2975
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2976
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2977 class TestHelpBiggerOptionalGroups(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2978 """Make sure that argument help aligns when options are longer"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2979
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2980 parser_signature = Sig(prog='PROG', description='DESCRIPTION',
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2981 epilog='EPILOG')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2982 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2983 Sig('-v', '--version', action='version', version='0.1'),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2984 Sig('-x', action='store_true', help='X HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2985 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2986 Sig('foo', help='FOO HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2987 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2988 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2989 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2990 (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2991 Sig('baz', help='BAZ HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2992 Sig('-z', nargs='+', help='Z HELP')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2993 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2994 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2995 usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2996 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2997 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2998
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2999 DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3000
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3001 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3002 foo FOO HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3003 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3004
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3005 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3006 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3007 -v, --version show program's version number and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3008 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3009 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3010
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3011 GROUP TITLE:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3012 GROUP DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3013
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3014 baz BAZ HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3015 -z Z [Z ...] Z HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3016
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3017 EPILOG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3018 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3019 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3020 0.1
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3021 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3022
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3023
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3024 class TestHelpBiggerPositionals(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3025 """Make sure that help aligns when arguments are longer"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3026
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3027 parser_signature = Sig(usage='USAGE', description='DESCRIPTION')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3028 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3029 Sig('-x', action='store_true', help='X HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3030 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3031 Sig('ekiekiekifekang', help='EKI HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3032 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3033 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3034 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3035 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3036 usage: USAGE
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3037 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3038 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3039
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3040 DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3041
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3042 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3043 ekiekiekifekang EKI HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3044 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3045
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3046 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3047 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3048 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3049 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3050 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3051
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3052 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3053
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3054
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3055 class TestHelpReformatting(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3056 """Make sure that text after short names starts on the first line"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3057
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3058 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3059 prog='PROG',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3060 description=' oddly formatted\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3061 'description\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3062 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3063 'that is so long that it should go onto multiple '
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3064 'lines when wrapped')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3065 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3066 Sig('-x', metavar='XX', help='oddly\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3067 ' formatted -x help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3068 Sig('y', metavar='yyy', help='normal y help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3069 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3070 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3071 (Sig('title', description='\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3072 ' oddly formatted group\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3073 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3074 'description'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3075 [Sig('-a', action='store_true',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3076 help=' oddly \n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3077 'formatted -a help \n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3078 ' again, so long that it should be wrapped over '
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3079 'multiple lines')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3080 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3081 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3082 usage: PROG [-h] [-x XX] [-a] yyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3083 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3084 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3085
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3086 oddly formatted description that is so long that it should go onto \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3087 multiple
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3088 lines when wrapped
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3089
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3090 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3091 yyy normal y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3092
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3093 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3094 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3095 -x XX oddly formatted -x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3096
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3097 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3098 oddly formatted group description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3099
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3100 -a oddly formatted -a help again, so long that it should \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3101 be wrapped
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3102 over multiple lines
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3103 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3104 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3105
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3106
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3107 class TestHelpWrappingShortNames(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3108 """Make sure that text after short names starts on the first line"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3109
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3110 parser_signature = Sig(prog='PROG', description= 'D\nD' * 30)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3111 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3112 Sig('-x', metavar='XX', help='XHH HX' * 20),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3113 Sig('y', metavar='yyy', help='YH YH' * 20),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3114 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3115 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3116 (Sig('ALPHAS'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3117 Sig('-a', action='store_true', help='AHHH HHA' * 10)]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3118 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3119 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3120 usage: PROG [-h] [-x XX] [-a] yyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3121 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3122 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3123
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3124 D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3125 DD DD DD
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3126 DD DD DD DD D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3127
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3128 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3129 yyy YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3130 YHYH YHYH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3131 YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3132
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3133 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3134 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3135 -x XX XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3136 HXXHH HXXHH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3137 HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3138
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3139 ALPHAS:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3140 -a AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3141 HHAAHHH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3142 HHAAHHH HHAAHHH HHA
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3143 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3144 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3145
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3146
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3147 class TestHelpWrappingLongNames(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3148 """Make sure that text after long names starts on the next line"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3149
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3150 parser_signature = Sig(usage='USAGE', description= 'D D' * 30)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3151 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3152 Sig('-v', '--version', action='version', version='V V' * 30),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3153 Sig('-x', metavar='X' * 25, help='XH XH' * 20),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3154 Sig('y', metavar='y' * 25, help='YH YH' * 20),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3155 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3156 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3157 (Sig('ALPHAS'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3158 Sig('-a', metavar='A' * 25, help='AH AH' * 20),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3159 Sig('z', metavar='z' * 25, help='ZH ZH' * 20)]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3160 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3161 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3162 usage: USAGE
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3163 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3164 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3165
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3166 D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3167 DD DD DD
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3168 DD DD DD DD D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3169
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3170 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3171 yyyyyyyyyyyyyyyyyyyyyyyyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3172 YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3173 YHYH YHYH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3174 YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3175
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3176 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3177 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3178 -v, --version show program's version number and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3179 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3180 XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3181 XHXH XHXH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3182 XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3183
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3184 ALPHAS:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3185 -a AAAAAAAAAAAAAAAAAAAAAAAAA
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3186 AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3187 AHAH AHAH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3188 AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3189 zzzzzzzzzzzzzzzzzzzzzzzzz
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3190 ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3191 ZHZH ZHZH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3192 ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3193 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3194 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3195 V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3196 VV VV VV
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3197 VV VV VV VV V
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3198 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3199
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3200
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3201 class TestHelpUsage(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3202 """Test basic usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3203
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3204 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3205 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3206 Sig('-w', nargs='+', help='w'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3207 Sig('-x', nargs='*', help='x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3208 Sig('a', help='a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3209 Sig('b', help='b', nargs=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3210 Sig('c', help='c', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3211 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3212 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3213 (Sig('group'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3214 Sig('-y', nargs='?', help='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3215 Sig('-z', nargs=3, help='z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3216 Sig('d', help='d', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3217 Sig('e', help='e', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3218 ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3219 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3220 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3221 usage: PROG [-h] [-w W [W ...]] [-x [X [X ...]]] [-y [Y]] [-z Z Z Z]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3222 a b b [c] [d [d ...]] e [e ...]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3223 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3224 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3225
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3226 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3227 a a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3228 b b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3229 c c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3230
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3231 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3232 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3233 -w W [W ...] w
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3234 -x [X [X ...]] x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3235
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3236 group:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3237 -y [Y] y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3238 -z Z Z Z z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3239 d d
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3240 e e
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3241 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3242 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3243
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3244
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3245 class TestHelpOnlyUserGroups(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3246 """Test basic usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3247
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3248 parser_signature = Sig(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3249 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3250 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3251 (Sig('xxxx'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3252 Sig('-x', help='x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3253 Sig('a', help='a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3254 ]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3255 (Sig('yyyy'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3256 Sig('b', help='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3257 Sig('-y', help='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3258 ]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3259 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3260 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3261 usage: PROG [-x X] [-y Y] a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3262 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3263 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3264
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3265 xxxx:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3266 -x X x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3267 a a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3268
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3269 yyyy:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3270 b b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3271 -y Y y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3272 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3273 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3274
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3276 class TestHelpUsageLongProg(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3277 """Test usage messages where the prog is long"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3278
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3279 parser_signature = Sig(prog='P' * 60)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3280 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3281 Sig('-w', metavar='W'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3282 Sig('-x', metavar='X'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3283 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3284 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3285 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3286 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3287 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3288 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3289 [-h] [-w W] [-x X] a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3290 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3291 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3292
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3293 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3294 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3295 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3296
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3297 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3298 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3299 -w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3300 -x X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3301 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3302 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3303
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3304
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3305 class TestHelpUsageLongProgOptionsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3306 """Test usage messages where the prog is long and the optionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3307
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3308 parser_signature = Sig(prog='P' * 60)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3309 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3310 Sig('-w', metavar='W' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3311 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3312 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3313 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3314 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3315 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3316 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3317 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3318 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3319 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3320 [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3321 [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3322 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3323 a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3324 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3325 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3326
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3327 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3328 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3329 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3330
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3331 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3332 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3333 -w WWWWWWWWWWWWWWWWWWWWWWWWW
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3334 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3335 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3336 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3337 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3338 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3339
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3340
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3341 class TestHelpUsageLongProgPositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3342 """Test usage messages where the prog is long and the positionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3343
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3344 parser_signature = Sig(prog='P' * 60, add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3345 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3346 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3347 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3348 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3349 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3350 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3351 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3352 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3353 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3354 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3355 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3356 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3357
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3358 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3359 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3360 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3361 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3362 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3363 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3364
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3365
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3366 class TestHelpUsageOptionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3367 """Test usage messages where the optionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3368
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3369 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3370 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3371 Sig('-w', metavar='W' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3372 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3373 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3374 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3375 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3376 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3377 Sig('c'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3378 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3379 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3380 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3381 usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3382 [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3383 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3384 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3385 a b c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3386 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3387 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3388
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3389 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3390 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3391 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3392 c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3393
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3394 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3395 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3396 -w WWWWWWWWWWWWWWWWWWWWWWWWW
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3397 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3398 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3399 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3400 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3401 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3402
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3403
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3404 class TestHelpUsagePositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3405 """Test usage messages where the positionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3406
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3407 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3408 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3409 Sig('-x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3410 Sig('-y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3411 Sig('-z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3412 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3413 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3414 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3415 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3416 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3417 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3418 usage: PROG [-h] [-x X] [-y Y] [-z Z]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3419 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3420 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3421 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3422 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3423
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3424 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3425 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3426 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3427 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3428
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3429 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3430 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3431 -x X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3432 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3433 -z Z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3434 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3435 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3436
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3437
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3438 class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3439 """Test usage messages where the optionals and positionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3440
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3441 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3442 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3443 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3444 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3445 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3446 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3447 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3448 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3449 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3450 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3451 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3452 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3453 [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3454 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3455 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3456 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3457 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3458 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3459
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3460 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3461 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3462 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3463 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3464
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3465 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3466 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3467 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3468 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3469 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3470 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3471 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3472
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3473
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3474 class TestHelpUsageOptionalsOnlyWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3475 """Test usage messages where there are only optionals and they wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3476
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3477 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3478 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3479 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3480 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3481 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3482 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3483 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3484 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3485 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3486 [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3487 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3488 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3489 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3490
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3491 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3492 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3493 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3494 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3495 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3496 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3497 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3498
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3499
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3500 class TestHelpUsagePositionalsOnlyWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3501 """Test usage messages where there are only positionals and they wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3502
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3503 parser_signature = Sig(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3504 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3505 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3506 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3507 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3508 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3509 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3510 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3511 usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3512 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3513 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3514 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3515
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3516 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3517 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3518 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3519 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3520 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3521 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3522
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3523
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3524 class TestHelpVariableExpansion(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3525 """Test that variables are expanded properly in help messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3526
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3527 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3528 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3529 Sig('-x', type=int,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3530 help='x %(prog)s %(default)s %(type)s %%'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3531 Sig('-y', action='store_const', default=42, const='XXX',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3532 help='y %(prog)s %(default)s %(const)s'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3533 Sig('--foo', choices='abc',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3534 help='foo %(prog)s %(default)s %(choices)s'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3535 Sig('--bar', default='baz', choices=[1, 2], metavar='BBB',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3536 help='bar %(prog)s %(default)s %(dest)s'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3537 Sig('spam', help='spam %(prog)s %(default)s'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3538 Sig('badger', default=0.5, help='badger %(prog)s %(default)s'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3539 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3540 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3541 (Sig('group'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3542 Sig('-a', help='a %(prog)s %(default)s'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3543 Sig('-b', default=-1, help='b %(prog)s %(default)s'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3544 ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3545 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3546 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3547 usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3548 spam badger
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3549 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3550 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3551
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3552 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3553 spam spam PROG None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3554 badger badger PROG 0.5
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3555
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3556 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3557 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3558 -x X x PROG None int %
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3559 -y y PROG 42 XXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3560 --foo {a,b,c} foo PROG None a, b, c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3561 --bar BBB bar PROG baz bar
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3562
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3563 group:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3564 -a A a PROG None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3565 -b B b PROG -1
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3566 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3567 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3568
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3569
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3570 class TestHelpVariableExpansionUsageSupplied(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3571 """Test that variables are expanded properly when usage= is present"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3572
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3573 parser_signature = Sig(prog='PROG', usage='%(prog)s FOO')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3574 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3575 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3576 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3577 usage: PROG FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3578 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3579 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3580
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3581 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3582 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3583 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3584 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3585
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3586
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3587 class TestHelpVariableExpansionNoArguments(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3588 """Test that variables are expanded properly with no arguments"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3589
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3590 parser_signature = Sig(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3591 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3592 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3593 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3594 usage: PROG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3595 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3596 help = usage
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3597 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3598
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3599
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3600 class TestHelpSuppressUsage(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3601 """Test that items can be suppressed in usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3602
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3603 parser_signature = Sig(prog='PROG', usage=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3604 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3605 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3606 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3607 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3608 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3609 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3610 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3611 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3612
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3613 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3614 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3615 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3616 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3617 usage = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3618 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3619
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3620
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3621 class TestHelpSuppressOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3622 """Test that optional arguments can be suppressed in help messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3623
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3624 parser_signature = Sig(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3625 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3626 Sig('--foo', help=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3627 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3628 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3629 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3630 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3631 usage: PROG spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3632 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3633 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3634
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3635 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3636 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3637 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3638 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3639
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3640
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3641 class TestHelpSuppressOptionalGroup(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3642 """Test that optional groups can be suppressed in help messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3643
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3644 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3645 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3646 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3647 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3648 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3649 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3650 (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3651 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3652 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3653 usage: PROG [-h] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3654 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3655 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3656
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3657 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3658 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3659
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3660 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3661 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3662 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3663 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3664 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3665
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3666
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3667 class TestHelpSuppressPositional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3668 """Test that positional arguments can be suppressed in help messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3669
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3670 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3671 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3672 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3673 Sig('spam', help=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3674 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3675 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3676 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3677 usage: PROG [-h] [--foo FOO]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3678 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3679 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3680
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3681 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3682 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3683 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3684 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3685 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3686
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3687
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3688 class TestHelpRequiredOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3689 """Test that required options don't look optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3690
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3691 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3692 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3693 Sig('--foo', required=True, help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3694 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3695 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3696 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3697 usage: PROG [-h] --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3698 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3699 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3700
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3701 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3702 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3703 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3704 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3705 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3706
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3707
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3708 class TestHelpAlternatePrefixChars(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3709 """Test that options display with different prefix characters"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3710
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3711 parser_signature = Sig(prog='PROG', prefix_chars='^;', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3712 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3713 Sig('^^foo', action='store_true', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3714 Sig(';b', ';;bar', help='bar help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3715 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3716 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3717 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3718 usage: PROG [^^foo] [;b BAR]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3719 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3720 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3721
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3722 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3723 ^^foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3724 ;b BAR, ;;bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3725 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3726 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3727
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3728
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3729 class TestHelpNoHelpOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3730 """Test that the --help argument can be suppressed help messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3731
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3732 parser_signature = Sig(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3733 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3734 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3735 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3736 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3737 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3738 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3739 usage: PROG [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3740 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3741 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3742
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3743 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3744 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3745
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3746 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3747 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3748 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3749 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3750
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3751
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3752 class TestHelpVersionOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3753 """Test that the --version argument can be suppressed help messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3754
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3755 parser_signature = Sig(prog='PROG')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3756 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3757 Sig('-v', '--version', action='version', version='1.0'),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3758 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3759 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3760 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3761 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3762 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3763 usage: PROG [-h] [-v] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3764 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3765 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3766
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3767 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3768 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3769
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3770 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3771 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3772 -v, --version show program's version number and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3773 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3774 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3775 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3776 1.0
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3777 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3778
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3779
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3780 class TestHelpNone(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3781 """Test that no errors occur if no help is specified"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3782
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3783 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3784 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3785 Sig('--foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3786 Sig('spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3787 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3788 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3789 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3790 usage: PROG [-h] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3791 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3792 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3793
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3794 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3795 spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3796
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3797 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3798 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3799 --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3800 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3801 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3802
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3803
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3804 class TestHelpTupleMetavar(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3805 """Test specifying metavar as a tuple"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3806
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3807 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3808 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3809 Sig('-w', help='w', nargs='+', metavar=('W1', 'W2')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3810 Sig('-x', help='x', nargs='*', metavar=('X1', 'X2')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3811 Sig('-y', help='y', nargs=3, metavar=('Y1', 'Y2', 'Y3')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3812 Sig('-z', help='z', nargs='?', metavar=('Z1', )),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3813 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3814 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3815 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3816 usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3817 [-z [Z1]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3818 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3819 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3820
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3821 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3822 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3823 -w W1 [W2 ...] w
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3824 -x [X1 [X2 ...]] x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3825 -y Y1 Y2 Y3 y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3826 -z [Z1] z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3827 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3828 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3829
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3830
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3831 class TestHelpRawText(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3832 """Test the RawTextHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3833
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3834 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3835 prog='PROG', formatter_class=argparse.RawTextHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3836 description='Keep the formatting\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3837 ' exactly as it is written\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3838 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3839 'here\n')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3840
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3841 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3842 Sig('--foo', help=' foo help should also\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3843 'appear as given here'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3844 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3845 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3846 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3847 (Sig('title', description=' This text\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3848 ' should be indented\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3849 ' exactly like it is here\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3850 [Sig('--bar', help='bar help')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3851 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3852 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3853 usage: PROG [-h] [--foo FOO] [--bar BAR] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3854 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3855 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3856
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3857 Keep the formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3858 exactly as it is written
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3859
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3860 here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3861
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3862 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3863 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3864
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3865 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3866 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3867 --foo FOO foo help should also
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3868 appear as given here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3869
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3870 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3871 This text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3872 should be indented
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3873 exactly like it is here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3874
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3875 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3876 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3877 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3878
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3879
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3880 class TestHelpRawDescription(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3881 """Test the RawTextHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3882
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3883 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3884 prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3885 description='Keep the formatting\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3886 ' exactly as it is written\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3887 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3888 'here\n')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3889
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3890 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3891 Sig('--foo', help=' foo help should not\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3892 ' retain this odd formatting'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3893 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3894 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3895 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3896 (Sig('title', description=' This text\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3897 ' should be indented\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3898 ' exactly like it is here\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3899 [Sig('--bar', help='bar help')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3900 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3901 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3902 usage: PROG [-h] [--foo FOO] [--bar BAR] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3903 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3904 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3905
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3906 Keep the formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3907 exactly as it is written
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3908
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3909 here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3910
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3911 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3912 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3913
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3914 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3915 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3916 --foo FOO foo help should not retain this odd formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3917
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3918 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3919 This text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3920 should be indented
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3921 exactly like it is here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3922
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3923 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3924 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3925 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3926
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3927
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3928 class TestHelpArgumentDefaults(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3929 """Test the ArgumentDefaultsHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3930
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3931 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3932 prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3933 description='description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3934
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3935 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3936 Sig('--foo', help='foo help - oh and by the way, %(default)s'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3937 Sig('--bar', action='store_true', help='bar help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3938 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3939 Sig('badger', nargs='?', default='wooden', help='badger help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3940 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3941 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3942 (Sig('title', description='description'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3943 [Sig('--baz', type=int, default=42, help='baz help')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3944 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3945 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3946 usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3947 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3948 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3949
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3950 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3951
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3952 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3953 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3954 badger badger help (default: wooden)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3955
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3956 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3957 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3958 --foo FOO foo help - oh and by the way, None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3959 --bar bar help (default: False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3960
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3961 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3962 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3963
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3964 --baz BAZ baz help (default: 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3965 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3966 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3967
61880
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3968 class TestHelpVersionAction(HelpTestCase):
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3969 """Test the default help for the version action"""
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3970
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3971 parser_signature = Sig(prog='PROG', description='description')
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3972 argument_signatures = [Sig('-V', '--version', action='version', version='3.6')]
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3973 argument_group_signatures = []
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3974 usage = '''\
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3975 usage: PROG [-h] [-V]
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3976 '''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3977 help = usage + '''\
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3978
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3979 description
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3980
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3981 optional arguments:
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3982 -h, --help show this help message and exit
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3983 -V, --version show program's version number and exit
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3984 '''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3985 version = ''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3986
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3987 class TestHelpSubparsersOrdering(HelpTestCase):
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3988 """Test ordering of subcommands in help matches the code"""
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3989 parser_signature = Sig(prog='PROG',
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3990 description='display some subcommands')
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3991 argument_signatures = [Sig('-v', '--version', action='version', version='0.1')]
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3992
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3993 subparsers_signatures = [Sig(name=name)
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3994 for name in ('a', 'b', 'c', 'd', 'e')]
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3995
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3996 usage = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3997 usage: PROG [-h] [-v] {a,b,c,d,e} ...
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3998 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3999
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4000 help = usage + '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4001
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4002 display some subcommands
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4004 positional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4005 {a,b,c,d,e}
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4006
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4007 optional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4008 -h, --help show this help message and exit
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4009 -v, --version show program's version number and exit
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4010 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4011
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4012 version = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4013 0.1
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4014 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4015
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4016 class TestHelpSubparsersWithHelpOrdering(HelpTestCase):
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4017 """Test ordering of subcommands in help matches the code"""
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4018 parser_signature = Sig(prog='PROG',
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4019 description='display some subcommands')
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4020 argument_signatures = [Sig('-v', '--version', action='version', version='0.1')]
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4021
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4022 subcommand_data = (('a', 'a subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4023 ('b', 'b subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4024 ('c', 'c subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4025 ('d', 'd subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4026 ('e', 'e subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4027 )
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4028
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4029 subparsers_signatures = [Sig(name=name, help=help)
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4030 for name, help in subcommand_data]
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4031
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4032 usage = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4033 usage: PROG [-h] [-v] {a,b,c,d,e} ...
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4034 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4035
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4036 help = usage + '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4037
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4038 display some subcommands
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4039
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4040 positional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4041 {a,b,c,d,e}
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4042 a a subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4043 b b subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4044 c c subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4045 d d subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4046 e e subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4047
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4048 optional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4049 -h, --help show this help message and exit
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4050 -v, --version show program's version number and exit
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4051 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4052
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4053 version = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4054 0.1
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4055 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4056
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4057
68966
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4058
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4059 class TestHelpMetavarTypeFormatter(HelpTestCase):
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4060 """"""
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4061
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4062 def custom_type(string):
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4063 return string
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4064
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4065 parser_signature = Sig(prog='PROG', description='description',
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4066 formatter_class=argparse.MetavarTypeHelpFormatter)
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4067 argument_signatures = [Sig('a', type=int),
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4068 Sig('-b', type=custom_type),
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4069 Sig('-c', type=float, metavar='SOME FLOAT')]
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4070 argument_group_signatures = []
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4071 usage = '''\
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4072 usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4073 '''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4074 help = usage + '''\
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4075
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4076 description
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4077
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4078 positional arguments:
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4079 int
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4080
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4081 optional arguments:
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4082 -h, --help show this help message and exit
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4083 -b custom_type
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4084 -c SOME FLOAT
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4085 '''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4086 version = ''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4087
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4088
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4089 # =====================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4090 # Optional/Positional constructor tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4091 # =====================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4092
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4093 class TestInvalidArgumentConstructors(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4094 """Test a bunch of invalid Argument constructors"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4095
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4096 def assertTypeError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4097 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4098 self.assertRaises(TypeError, parser.add_argument,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4099 *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4100
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4101 def assertValueError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4102 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4103 self.assertRaises(ValueError, parser.add_argument,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4104 *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4105
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4106 def test_invalid_keyword_arguments(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4107 self.assertTypeError('-x', bar=None)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4108 self.assertTypeError('-y', callback='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4109 self.assertTypeError('-y', callback_args=())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4110 self.assertTypeError('-y', callback_kwargs={})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4111
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4112 def test_missing_destination(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4113 self.assertTypeError()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4114 for action in ['append', 'store']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4115 self.assertTypeError(action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4116
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4117 def test_invalid_option_strings(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4118 self.assertValueError('--')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4119 self.assertValueError('---')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4120
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4121 def test_invalid_type(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4122 self.assertValueError('--foo', type='int')
69126
69ab5251f3f0 Issue #9347: Fix formatting for tuples in argparse type= error messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 69003
diff changeset
4123 self.assertValueError('--foo', type=(int, float))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4124
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4125 def test_invalid_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4126 self.assertValueError('-x', action='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4127 self.assertValueError('foo', action='baz')
69126
69ab5251f3f0 Issue #9347: Fix formatting for tuples in argparse type= error messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 69003
diff changeset
4128 self.assertValueError('--foo', action=('store', 'append'))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4129 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4130 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4131 parser.add_argument("--foo", action="store-true")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4132 except ValueError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4133 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4134 expected = 'unknown action'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4135 msg = 'expected %r, found %r' % (expected, e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4136 self.assertTrue(expected in str(e), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4137
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4138 def test_multiple_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4139 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4140 parser.add_argument(dest='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4141 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4142 parser.add_argument('bar', dest='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4143 except ValueError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4144 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4145 expected = 'dest supplied twice for positional argument'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4146 msg = 'expected %r, found %r' % (expected, e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4147 self.assertTrue(expected in str(e), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4148
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4149 def test_no_argument_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4150 for action in ['store_const', 'store_true', 'store_false',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4151 'append_const', 'count']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4152 for attrs in [dict(type=int), dict(nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4153 dict(choices='ab')]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4154 self.assertTypeError('-x', action=action, **attrs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4155
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4156 def test_no_argument_no_const_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4157 # options with zero arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4158 for action in ['store_true', 'store_false', 'count']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4159
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4160 # const is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4161 self.assertTypeError('-x', const='foo', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4162
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4163 # nargs is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4164 self.assertTypeError('-x', nargs='*', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4165
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4166 def test_more_than_one_argument_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4167 for action in ['store', 'append']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4168
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4169 # nargs=0 is disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4170 self.assertValueError('-x', nargs=0, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4171 self.assertValueError('spam', nargs=0, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4172
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4173 # const is disallowed with non-optional arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4174 for nargs in [1, '*', '+']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4175 self.assertValueError('-x', const='foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4176 nargs=nargs, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4177 self.assertValueError('spam', const='foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4178 nargs=nargs, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4179
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4180 def test_required_const_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4181 for action in ['store_const', 'append_const']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4182
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4183 # nargs is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4184 self.assertTypeError('-x', nargs='+', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4185
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4186 def test_parsers_action_missing_params(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4187 self.assertTypeError('command', action='parsers')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4188 self.assertTypeError('command', action='parsers', prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4189 self.assertTypeError('command', action='parsers',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4190 parser_class=argparse.ArgumentParser)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4191
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4192 def test_required_positional(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4193 self.assertTypeError('foo', required=True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4194
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4195 def test_user_defined_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4196
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4197 class Success(Exception):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4198 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4199
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4200 class Action(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4201
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4202 def __init__(self,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4203 option_strings,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4204 dest,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4205 const,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4206 default,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4207 required=False):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4208 if dest == 'spam':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4209 if const is Success:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4210 if default is Success:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4211 raise Success()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4212
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4213 def __call__(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4214 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4215
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4216 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4217 self.assertRaises(Success, parser.add_argument, '--spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4218 action=Action, default=Success, const=Success)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4219 self.assertRaises(Success, parser.add_argument, 'spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4220 action=Action, default=Success, const=Success)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4221
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4222 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4223 # Actions returned by add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4224 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4225
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4226 class TestActionsReturned(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4227
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4228 def test_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4229 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4230 action = parser.add_argument('--foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4231 self.assertEqual(action.dest, 'foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4232 action = parser.add_argument('-b', '--bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4233 self.assertEqual(action.dest, 'bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4234 action = parser.add_argument('-x', '-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4235 self.assertEqual(action.dest, 'x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4236
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4237 def test_misc(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4238 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4239 action = parser.add_argument('--foo', nargs='?', const=42,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4240 default=84, type=int, choices=[1, 2],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4241 help='FOO', metavar='BAR', dest='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4242 self.assertEqual(action.nargs, '?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4243 self.assertEqual(action.const, 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4244 self.assertEqual(action.default, 84)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4245 self.assertEqual(action.type, int)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4246 self.assertEqual(action.choices, [1, 2])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4247 self.assertEqual(action.help, 'FOO')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4248 self.assertEqual(action.metavar, 'BAR')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4249 self.assertEqual(action.dest, 'baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4250
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4251
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4252 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4253 # Argument conflict handling tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4254 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4255
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4256 class TestConflictHandling(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4257
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4258 def test_bad_type(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4259 self.assertRaises(ValueError, argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4260 conflict_handler='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4261
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4262 def test_conflict_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4263 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4264 parser.add_argument('-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4265 self.assertRaises(argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4266 parser.add_argument, '-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4267 parser.add_argument('--spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4268 self.assertRaises(argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4269 parser.add_argument, '--spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4270
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4271 def test_resolve_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4272 get_parser = argparse.ArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4273 parser = get_parser(prog='PROG', conflict_handler='resolve')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4274
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4275 parser.add_argument('-x', help='OLD X')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4276 parser.add_argument('-x', help='NEW X')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4277 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4278 usage: PROG [-h] [-x X]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4279
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4280 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4281 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4282 -x X NEW X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4283 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4284
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4285 parser.add_argument('--spam', metavar='OLD_SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4286 parser.add_argument('--spam', metavar='NEW_SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4287 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4288 usage: PROG [-h] [-x X] [--spam NEW_SPAM]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4289
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4290 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4291 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4292 -x X NEW X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4293 --spam NEW_SPAM
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4294 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4295
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4296
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4297 # =============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4298 # Help and Version option tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4299 # =============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4300
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4301 class TestOptionalsHelpVersionActions(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4302 """Test the help and version actions"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4303
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4304 def _get_error(self, func, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4305 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4306 func(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4307 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4308 return sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4309 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4310 self.assertRaises(ArgumentParserError, func, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4311
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4312 def assertPrintHelpExit(self, parser, args_str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4313 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4314 parser.format_help(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4315 self._get_error(parser.parse_args, args_str.split()).stdout)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4316
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4317 def assertArgumentParserError(self, parser, *args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4318 self.assertRaises(ArgumentParserError, parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4319
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4320 def test_version(self):
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4321 parser = ErrorRaisingArgumentParser()
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4322 parser.add_argument('-v', '--version', action='version', version='1.0')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4323 self.assertPrintHelpExit(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4324 self.assertPrintHelpExit(parser, '--help')
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4325 self.assertRaises(AttributeError, getattr, parser, 'format_version')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4326
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4327 def test_version_format(self):
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4328 parser = ErrorRaisingArgumentParser(prog='PPP')
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4329 parser.add_argument('-v', '--version', action='version', version='%(prog)s 3.5')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4330 msg = self._get_error(parser.parse_args, ['-v']).stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4331 self.assertEqual('PPP 3.5\n', msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4332
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4333 def test_version_no_help(self):
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4334 parser = ErrorRaisingArgumentParser(add_help=False)
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4335 parser.add_argument('-v', '--version', action='version', version='1.0')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4336 self.assertArgumentParserError(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4337 self.assertArgumentParserError(parser, '--help')
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4338 self.assertRaises(AttributeError, getattr, parser, 'format_version')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4339
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4340 def test_version_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4341 parser = ErrorRaisingArgumentParser(prog='XXX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4342 parser.add_argument('-V', action='version', version='%(prog)s 3.7')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4343 msg = self._get_error(parser.parse_args, ['-V']).stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4344 self.assertEqual('XXX 3.7\n', msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4345
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4346 def test_no_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4347 parser = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4348 self.assertArgumentParserError(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4349 self.assertArgumentParserError(parser, '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4350 self.assertArgumentParserError(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4351 self.assertArgumentParserError(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4352
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4353 def test_alternate_help_version(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4354 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4355 parser.add_argument('-x', action='help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4356 parser.add_argument('-y', action='version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4357 self.assertPrintHelpExit(parser, '-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4358 self.assertArgumentParserError(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4359 self.assertArgumentParserError(parser, '--version')
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4360 self.assertRaises(AttributeError, getattr, parser, 'format_version')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4361
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4362 def test_help_version_extra_arguments(self):
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4363 parser = ErrorRaisingArgumentParser()
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4364 parser.add_argument('--version', action='version', version='1.0')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4365 parser.add_argument('-x', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4366 parser.add_argument('y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4367
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4368 # try all combinations of valid prefixes and suffixes
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4369 valid_prefixes = ['', '-x', 'foo', '-x bar', 'baz -x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4370 valid_suffixes = valid_prefixes + ['--bad-option', 'foo bar baz']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4371 for prefix in valid_prefixes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4372 for suffix in valid_suffixes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4373 format = '%s %%s %s' % (prefix, suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4374 self.assertPrintHelpExit(parser, format % '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4375 self.assertPrintHelpExit(parser, format % '--help')
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4376 self.assertRaises(AttributeError, getattr, parser, 'format_version')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4377
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4378
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4379 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4380 # str() and repr() tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4381 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4382
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4383 class TestStrings(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4384 """Test str() and repr() on Optionals and Positionals"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4385
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4386 def assertStringEqual(self, obj, result_string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4387 for func in [str, repr]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4388 self.assertEqual(func(obj), result_string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4389
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4390 def test_optional(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4391 option = argparse.Action(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4392 option_strings=['--foo', '-a', '-b'],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4393 dest='b',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4394 type='int',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4395 nargs='+',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4396 default=42,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4397 choices=[1, 2, 3],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4398 help='HELP',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4399 metavar='METAVAR')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4400 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4401 "Action(option_strings=['--foo', '-a', '-b'], dest='b', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4402 "nargs='+', const=None, default=42, type='int', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4403 "choices=[1, 2, 3], help='HELP', metavar='METAVAR')")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4404 self.assertStringEqual(option, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4405
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4406 def test_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4407 argument = argparse.Action(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4408 option_strings=[],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4409 dest='x',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4410 type=float,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4411 nargs='?',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4412 default=2.5,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4413 choices=[0.5, 1.5, 2.5],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4414 help='H HH H',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4415 metavar='MV MV MV')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4416 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4417 "Action(option_strings=[], dest='x', nargs='?', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4418 "const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4419 "help='H HH H', metavar='MV MV MV')" % float)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4420 self.assertStringEqual(argument, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4421
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4422 def test_namespace(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4423 ns = argparse.Namespace(foo=42, bar='spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4424 string = "Namespace(bar='spam', foo=42)"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4425 self.assertStringEqual(ns, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4426
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4427 def test_parser(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4428 parser = argparse.ArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4429 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4430 "ArgumentParser(prog='PROG', usage=None, description=None, "
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4431 "formatter_class=%r, conflict_handler='error', "
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4432 "add_help=True)" % argparse.HelpFormatter)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4433 self.assertStringEqual(parser, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4434
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4435 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4436 # Namespace tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4437 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4438
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4439 class TestNamespace(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4440
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4441 def test_constructor(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4442 ns = argparse.Namespace()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4443 self.assertRaises(AttributeError, getattr, ns, 'x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4444
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4445 ns = argparse.Namespace(a=42, b='spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4446 self.assertEqual(ns.a, 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4447 self.assertEqual(ns.b, 'spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4448
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4449 def test_equality(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4450 ns1 = argparse.Namespace(a=1, b=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4451 ns2 = argparse.Namespace(b=2, a=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4452 ns3 = argparse.Namespace(a=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4453 ns4 = argparse.Namespace(b=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4454
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4455 self.assertEqual(ns1, ns2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4456 self.assertNotEqual(ns1, ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4457 self.assertNotEqual(ns1, ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4458 self.assertNotEqual(ns2, ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4459 self.assertNotEqual(ns2, ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4460 self.assertTrue(ns1 != ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4461 self.assertTrue(ns1 != ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4462 self.assertTrue(ns2 != ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4463 self.assertTrue(ns2 != ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4464
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4465
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4466 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4467 # File encoding tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4468 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4469
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4470 class TestEncoding(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4471
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4472 def _test_module_encoding(self, path):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4473 path, _ = os.path.splitext(path)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4474 path += ".py"
68142
be6c38d1817b Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents: 67819
diff changeset
4475 with codecs.open(path, 'r', 'utf-8') as f:
65331
46956a25c264 Explicitly close some files (from issue #10093)
Antoine Pitrou <solipsis@pitrou.net>
parents: 63690
diff changeset
4476 f.read()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4477
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4478 def test_argparse_module_encoding(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4479 self._test_module_encoding(argparse.__file__)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4480
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4481 def test_test_argparse_module_encoding(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4482 self._test_module_encoding(__file__)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4483
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4484 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4485 # ArgumentError tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4486 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4487
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4488 class TestArgumentError(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4489
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4490 def test_argument_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4491 msg = "my error here"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4492 error = argparse.ArgumentError(None, msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4493 self.assertEqual(str(error), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4494
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4495 # =======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4496 # ArgumentTypeError tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4497 # =======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4498
66257
d4f5e27ed186 Make test class name unique so that both test classes run.
R. David Murray <rdmurray@bitdance.com>
parents: 65887
diff changeset
4499 class TestArgumentTypeError(TestCase):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4500
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4501 def test_argument_type_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4502
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4503 def spam(string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4504 raise argparse.ArgumentTypeError('spam!')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4505
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4506 parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4507 parser.add_argument('x', type=spam)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4508 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4509 parser.parse_args(['XXX'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4510 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4511 expected = 'usage: PROG x\nPROG: error: argument x: spam!\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4512 msg = sys.exc_info()[1].stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4513 self.assertEqual(expected, msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4514 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4515 self.fail()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4516
70741
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4517 # =========================
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4518 # MessageContentError tests
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4519 # =========================
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4520
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4521 class TestMessageContentError(TestCase):
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4522
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4523 def test_missing_argument_name_in_message(self):
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4524 parser = ErrorRaisingArgumentParser(prog='PROG', usage='')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4525 parser.add_argument('req_pos', type=str)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4526 parser.add_argument('-req_opt', type=int, required=True)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4527 parser.add_argument('need_one', type=str, nargs='+')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4528
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4529 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4530 parser.parse_args([])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4531 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4532 self.assertRegex(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4533 self.assertRegex(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4534 self.assertRegex(msg, 'need_one')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4535 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4536 parser.parse_args(['myXargument'])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4537 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4538 self.assertNotIn(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4539 self.assertRegex(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4540 self.assertRegex(msg, 'need_one')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4541 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4542 parser.parse_args(['myXargument', '-req_opt=1'])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4543 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4544 self.assertNotIn(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4545 self.assertNotIn(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4546 self.assertRegex(msg, 'need_one')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4547
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4548 def test_optional_optional_not_in_message(self):
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4549 parser = ErrorRaisingArgumentParser(prog='PROG', usage='')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4550 parser.add_argument('req_pos', type=str)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4551 parser.add_argument('--req_opt', type=int, required=True)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4552 parser.add_argument('--opt_opt', type=bool, nargs='?',
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4553 default=True)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4554 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4555 parser.parse_args([])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4556 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4557 self.assertRegex(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4558 self.assertRegex(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4559 self.assertNotIn(msg, 'opt_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4560 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4561 parser.parse_args(['--req_opt=1'])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4562 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4563 self.assertRegex(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4564 self.assertNotIn(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4565 self.assertNotIn(msg, 'opt_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4566
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4567 def test_optional_positional_not_in_message(self):
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4568 parser = ErrorRaisingArgumentParser(prog='PROG', usage='')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4569 parser.add_argument('req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4570 parser.add_argument('optional_positional', nargs='?', default='eggs')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4571 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4572 parser.parse_args([])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4573 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4574 self.assertRegex(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4575 self.assertNotIn(msg, 'optional_positional')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4576
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4577
78821
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4578 # ================================================
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4579 # Check that the type function is called only once
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4580 # ================================================
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4581
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4582 class TestTypeFunctionCallOnlyOnce(TestCase):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4583
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4584 def test_type_function_call_only_once(self):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4585 def spam(string_to_convert):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4586 self.assertEqual(string_to_convert, 'spam!')
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4587 return 'foo_converted'
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4588
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4589 parser = argparse.ArgumentParser()
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4590 parser.add_argument('--foo', type=spam, default='bar')
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4591 args = parser.parse_args('--foo spam!'.split())
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4592 self.assertEqual(NS(foo='foo_converted'), args)
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4593
79015
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4594 # ==================================================================
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4595 # Check semantics regarding the default argument and type conversion
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4596 # ==================================================================
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4597
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4598 class TestTypeFunctionCalledOnDefault(TestCase):
78821
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4599
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4600 def test_type_function_call_with_non_string_default(self):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4601 def spam(int_to_convert):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4602 self.assertEqual(int_to_convert, 0)
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4603 return 'foo_converted'
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4604
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4605 parser = argparse.ArgumentParser()
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4606 parser.add_argument('--foo', type=spam, default=0)
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4607 args = parser.parse_args([])
79015
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4608 # foo should *not* be converted because its default is not a string.
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4609 self.assertEqual(NS(foo=0), args)
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4610
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4611 def test_type_function_call_with_string_default(self):
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4612 def spam(int_to_convert):
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4613 return 'foo_converted'
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4614
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4615 parser = argparse.ArgumentParser()
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4616 parser.add_argument('--foo', type=spam, default='0')
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4617 args = parser.parse_args([])
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4618 # foo is converted because its default is a string.
78821
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4619 self.assertEqual(NS(foo='foo_converted'), args)
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4620
79015
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4621 def test_no_double_type_conversion_of_default(self):
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4622 def extend(str_to_convert):
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4623 return str_to_convert + '*'
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4624
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4625 parser = argparse.ArgumentParser()
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4626 parser.add_argument('--test', type=extend, default='*')
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4627 args = parser.parse_args([])
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4628 # The test argument will be two stars, one coming from the default
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4629 # value and one coming from the type conversion being called exactly
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4630 # once.
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4631 self.assertEqual(NS(test='**'), args)
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4632
79000
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4633 def test_issue_15906(self):
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4634 # Issue #15906: When action='append', type=str, default=[] are
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4635 # providing, the dest value was the string representation "[]" when it
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4636 # should have been an empty list.
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4637 parser = argparse.ArgumentParser()
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4638 parser.add_argument('--test', dest='test', type=str,
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4639 default=[], action='append')
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4640 args = parser.parse_args([])
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4641 self.assertEqual(args.test, [])
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4642
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4643 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4644 # parse_known_args tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4645 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4646
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4647 class TestParseKnownArgs(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4648
78879
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4649 def test_arguments_tuple(self):
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4650 parser = argparse.ArgumentParser()
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4651 parser.parse_args(())
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4652
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4653 def test_arguments_list(self):
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4654 parser = argparse.ArgumentParser()
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4655 parser.parse_args([])
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4656
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4657 def test_arguments_tuple_positional(self):
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4658 parser = argparse.ArgumentParser()
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4659 parser.add_argument('x')
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4660 parser.parse_args(('x',))
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4661
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4662 def test_arguments_list_positional(self):
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4663 parser = argparse.ArgumentParser()
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4664 parser.add_argument('x')
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4665 parser.parse_args(['x'])
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4666
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4667 def test_optionals(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4668 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4669 parser.add_argument('--foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4670 args, extras = parser.parse_known_args('--foo F --bar --baz'.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4671 self.assertEqual(NS(foo='F'), args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4672 self.assertEqual(['--bar', '--baz'], extras)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4673
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4674 def test_mixed(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4675 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4676 parser.add_argument('-v', nargs='?', const=1, type=int)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4677 parser.add_argument('--spam', action='store_false')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4678 parser.add_argument('badger')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4679
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4680 argv = ["B", "C", "--foo", "-v", "3", "4"]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4681 args, extras = parser.parse_known_args(argv)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4682 self.assertEqual(NS(v=3, spam=True, badger="B"), args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4683 self.assertEqual(["C", "--foo", "4"], extras)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4684
68967
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4685 # ==========================
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4686 # add_argument metavar tests
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4687 # ==========================
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4688
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4689 class TestAddArgumentMetavar(TestCase):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4690
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4691 EXPECTED_MESSAGE = "length of metavar tuple does not match nargs"
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4692
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4693 def do_test_no_exception(self, nargs, metavar):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4694 parser = argparse.ArgumentParser()
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4695 parser.add_argument("--foo", nargs=nargs, metavar=metavar)
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4696
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4697 def do_test_exception(self, nargs, metavar):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4698 parser = argparse.ArgumentParser()
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4699 with self.assertRaises(ValueError) as cm:
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4700 parser.add_argument("--foo", nargs=nargs, metavar=metavar)
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4701 self.assertEqual(cm.exception.args[0], self.EXPECTED_MESSAGE)
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4702
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4703 # Unit tests for different values of metavar when nargs=None
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4704
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4705 def test_nargs_None_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4706 self.do_test_no_exception(nargs=None, metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4707
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4708 def test_nargs_None_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4709 self.do_test_exception(nargs=None, metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4710
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4711 def test_nargs_None_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4712 self.do_test_no_exception(nargs=None, metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4713
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4714 def test_nargs_None_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4715 self.do_test_exception(nargs=None, metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4716
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4717 def test_nargs_None_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4718 self.do_test_exception(nargs=None, metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4719
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4720 # Unit tests for different values of metavar when nargs=?
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4721
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4722 def test_nargs_optional_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4723 self.do_test_no_exception(nargs="?", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4724
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4725 def test_nargs_optional_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4726 self.do_test_exception(nargs="?", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4727
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4728 def test_nargs_optional_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4729 self.do_test_no_exception(nargs="?", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4730
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4731 def test_nargs_optional_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4732 self.do_test_exception(nargs="?", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4733
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4734 def test_nargs_optional_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4735 self.do_test_exception(nargs="?", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4736
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4737 # Unit tests for different values of metavar when nargs=*
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4738
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4739 def test_nargs_zeroormore_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4740 self.do_test_no_exception(nargs="*", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4741
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4742 def test_nargs_zeroormore_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4743 self.do_test_exception(nargs="*", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4744
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4745 def test_nargs_zeroormore_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4746 self.do_test_no_exception(nargs="*", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4747
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4748 def test_nargs_zeroormore_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4749 self.do_test_no_exception(nargs="*", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4750
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4751 def test_nargs_zeroormore_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4752 self.do_test_exception(nargs="*", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4753
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4754 # Unit tests for different values of metavar when nargs=+
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4755
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4756 def test_nargs_oneormore_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4757 self.do_test_no_exception(nargs="+", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4758
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4759 def test_nargs_oneormore_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4760 self.do_test_exception(nargs="+", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4761
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4762 def test_nargs_oneormore_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4763 self.do_test_no_exception(nargs="+", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4764
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4765 def test_nargs_oneormore_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4766 self.do_test_no_exception(nargs="+", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4767
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4768 def test_nargs_oneormore_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4769 self.do_test_exception(nargs="+", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4770
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4771 # Unit tests for different values of metavar when nargs=...
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4772
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4773 def test_nargs_remainder_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4774 self.do_test_no_exception(nargs="...", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4775
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4776 def test_nargs_remainder_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4777 self.do_test_no_exception(nargs="...", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4778
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4779 def test_nargs_remainder_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4780 self.do_test_no_exception(nargs="...", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4781
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4782 def test_nargs_remainder_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4783 self.do_test_no_exception(nargs="...", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4784
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4785 def test_nargs_remainder_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4786 self.do_test_no_exception(nargs="...", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4787
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4788 # Unit tests for different values of metavar when nargs=A...
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4789
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4790 def test_nargs_parser_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4791 self.do_test_no_exception(nargs="A...", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4792
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4793 def test_nargs_parser_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4794 self.do_test_exception(nargs="A...", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4795
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4796 def test_nargs_parser_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4797 self.do_test_no_exception(nargs="A...", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4798
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4799 def test_nargs_parser_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4800 self.do_test_exception(nargs="A...", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4801
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4802 def test_nargs_parser_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4803 self.do_test_exception(nargs="A...", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4804
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4805 # Unit tests for different values of metavar when nargs=1
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4806
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4807 def test_nargs_1_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4808 self.do_test_no_exception(nargs=1, metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4809
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4810 def test_nargs_1_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4811 self.do_test_exception(nargs=1, metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4812
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4813 def test_nargs_1_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4814 self.do_test_no_exception(nargs=1, metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4815
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4816 def test_nargs_1_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4817 self.do_test_exception(nargs=1, metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4818
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4819 def test_nargs_1_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4820 self.do_test_exception(nargs=1, metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4821
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4822 # Unit tests for different values of metavar when nargs=2
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4823
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4824 def test_nargs_2_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4825 self.do_test_no_exception(nargs=2, metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4826
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4827 def test_nargs_2_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4828 self.do_test_exception(nargs=2, metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4829
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4830 def test_nargs_2_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4831 self.do_test_no_exception(nargs=2, metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4832
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4833 def test_nargs_2_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4834 self.do_test_no_exception(nargs=2, metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4835
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4836 def test_nargs_2_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4837 self.do_test_exception(nargs=2, metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4838
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4839 # Unit tests for different values of metavar when nargs=3
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4840
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4841 def test_nargs_3_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4842 self.do_test_no_exception(nargs=3, metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4843
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4844 def test_nargs_3_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4845 self.do_test_exception(nargs=3, metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4846
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4847 def test_nargs_3_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4848 self.do_test_no_exception(nargs=3, metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4849
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4850 def test_nargs_3_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4851 self.do_test_exception(nargs=3, metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4852
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4853 def test_nargs_3_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4854 self.do_test_no_exception(nargs=3, metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4855
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4856 # ============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4857 # from argparse import * tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4858 # ============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4859
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4860 class TestImportStar(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4861
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4862 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4863 for name in argparse.__all__:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4864 self.assertTrue(hasattr(argparse, name))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4865
65863
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4866 def test_all_exports_everything_but_modules(self):
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4867 items = [
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4868 name
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4869 for name, value in vars(argparse).items()
66721
1827a8ac9b18 Use proper plural forms in argparse (#4391)
Éric Araujo <merwok@netwok.org>
parents: 66310
diff changeset
4870 if not (name.startswith("_") or name == 'ngettext')
65863
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4871 if not inspect.ismodule(value)
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4872 ]
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4873 self.assertEqual(sorted(items), sorted(argparse.__all__))
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4874
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4875 def test_main():
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4876 support.run_unittest(__name__)
59285
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4877 # Remove global references to avoid looking like we have refleaks.
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4878 RFile.seen = {}
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4879 WFile.seen = set()
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4880
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4881
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4882
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4883 if __name__ == '__main__':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4884 test_main()