annotate Lib/test/test_argparse.py @ 70817:dd775b1561ba

Fix markup.
author Georg Brandl <georg@python.org>
date Tue, 14 Jun 2011 21:09:55 +0200
parents cab204a79e09
children 50e788691eda
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1326 parser_signature = Sig(argument_default=42, version='1.0')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1327 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1328 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1329 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1330 Sig('--baz', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1331 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1332 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1333 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1334 ('', NS(foo=42, bar=42, baz=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1335 ('a', NS(foo='a', bar=42, baz=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1336 ('a b', NS(foo='a', bar=['b'], baz=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1337 ('--baz', NS(foo=42, bar=42, baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1338 ('a --baz', NS(foo='a', bar=42, baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1339 ('--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
1340 ]
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 class TestArgumentsFromFile(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1344 """Test reading arguments from a file"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1345
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1346 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1347 super(TestArgumentsFromFile, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1348 file_texts = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1349 ('hello', 'hello world!\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1350 ('recursive', '-a\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1351 'A\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1352 '@hello'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1353 ('invalid', '@no-such-path\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1354 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1355 for path, text in file_texts:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1356 file = open(path, 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1357 file.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1358 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1359
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1360 parser_signature = Sig(fromfile_prefix_chars='@')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1361 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1362 Sig('-a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1363 Sig('x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1364 Sig('y', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1365 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1366 failures = ['', '-b', 'X', '@invalid', '@missing']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1367 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1368 ('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
1369 ('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
1370 ('@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
1371 ('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
1372 ('-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
1373 ('X @recursive Z -a B', NS(a='B', x='X', y=['hello world!', 'Z'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1374 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1375
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 class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1378 """Test reading arguments from a file"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1379
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1380 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1381 super(TestArgumentsFromFileConverter, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1382 file_texts = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1383 ('hello', 'hello world!\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1384 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1385 for path, text in file_texts:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1386 file = open(path, 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1387 file.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1388 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1389
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1390 class FromFileConverterArgumentParser(ErrorRaisingArgumentParser):
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 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
1393 for arg in arg_line.split():
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1394 if not arg.strip():
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1395 continue
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1396 yield arg
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1397 parser_class = FromFileConverterArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1398 parser_signature = Sig(fromfile_prefix_chars='@')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1399 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1400 Sig('y', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1401 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1402 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1403 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1404 ('@hello X', NS(y=['hello', 'world!', 'X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1405 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1406
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 # Type conversion tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1412 class TestFileTypeRepr(TestCase):
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 def test_r(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1415 type = argparse.FileType('r')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1416 self.assertEqual("FileType('r')", repr(type))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1417
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1418 def test_wb_1(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1419 type = argparse.FileType('wb', 1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1420 self.assertEqual("FileType('wb', 1)", repr(type))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1421
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1422
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1423 class RFile(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1424 seen = {}
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1425
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1426 def __init__(self, name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1427 self.name = name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1428
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1429 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1430 if other in self.seen:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1431 text = self.seen[other]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1432 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1433 text = self.seen[other] = other.read()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1434 other.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1435 if not isinstance(text, str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1436 text = text.decode('ascii')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1437 return self.name == other.name == text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1438
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1439
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1440 class TestFileTypeR(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1441 """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
1442
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1443 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1444 super(TestFileTypeR, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1445 for file_name in ['foo', 'bar']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1446 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
1447 file.write(file_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1448 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
1449 self.create_readonly_file('readonly')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1450
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1451 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1452 Sig('-x', type=argparse.FileType()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1453 Sig('spam', type=argparse.FileType('r')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1454 ]
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
1455 failures = ['-x', '', 'non-existent-file.txt']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1456 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1457 ('foo', NS(x=None, spam=RFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1458 ('-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
1459 ('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
1460 ('-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
1461 ('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
1462 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1463
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 class TestFileTypeRB(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1466 """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
1467
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1468 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1469 super(TestFileTypeRB, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1470 for file_name in ['foo', 'bar']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1471 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
1472 file.write(file_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1473 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1474
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1475 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1476 Sig('-x', type=argparse.FileType('rb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1477 Sig('spam', type=argparse.FileType('rb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1478 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1479 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1480 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1481 ('foo', NS(x=None, spam=RFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1482 ('-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
1483 ('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
1484 ('-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
1485 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1486
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1487
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1488 class WFile(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1489 seen = set()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1490
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1491 def __init__(self, name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1492 self.name = name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1493
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1494 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1495 if other not in self.seen:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1496 text = 'Check that file is writable.'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1497 if 'b' in other.mode:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1498 text = text.encode('ascii')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1499 other.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1500 other.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1501 self.seen.add(other)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1502 return self.name == other.name
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 class TestFileTypeW(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1506 """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
1507
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
1508 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
1509 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
1510 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
1511
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1512 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1513 Sig('-x', type=argparse.FileType('w')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1514 Sig('spam', type=argparse.FileType('w')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1515 ]
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
1516 failures = ['-x', '', 'readonly']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1517 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1518 ('foo', NS(x=None, spam=WFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1519 ('-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
1520 ('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
1521 ('-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
1522 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1523
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1524
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1525 class TestFileTypeWB(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1526
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1527 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1528 Sig('-x', type=argparse.FileType('wb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1529 Sig('spam', type=argparse.FileType('wb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1530 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1531 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1532 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1533 ('foo', NS(x=None, spam=WFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1534 ('-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
1535 ('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
1536 ('-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
1537 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1538
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1539
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1540 class TestTypeCallable(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1541 """Test some callables as option/argument types"""
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 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1544 Sig('--eggs', type=complex),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1545 Sig('spam', type=float),
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 failures = ['a', '42j', '--eggs a', '--eggs 2i']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1548 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1549 ('--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
1550 ('--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
1551 ('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
1552 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1553
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1554
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1555 class TestTypeUserDefined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1556 """Test a user-defined option/argument type"""
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 class MyType(TestCase):
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 def __init__(self, value):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1561 self.value = value
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 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1564 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
1565
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1566 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1567 Sig('-x', type=MyType),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1568 Sig('spam', type=MyType),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1569 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1570 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1571 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1572 ('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
1573 ('-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
1574 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1575
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1576
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1577 class TestTypeClassicClass(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1578 """Test a classic class type"""
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 class C:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1581
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1582 def __init__(self, value):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1583 self.value = value
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1584
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1585 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1586 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
1587
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1588 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1589 Sig('-x', type=C),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1590 Sig('spam', type=C),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1591 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1592 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1593 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1594 ('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
1595 ('-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
1596 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1597
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1598
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1599 class TestTypeRegistration(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1600 """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
1601
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1602 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1603
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1604 def get_my_type(string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1605 return 'my_type{%s}' % string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1606
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1607 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1608 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
1609 parser.add_argument('-x', type='my_type')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1610 parser.add_argument('y', type='my_type')
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 self.assertEqual(parser.parse_args('1'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1613 NS(x=None, y='my_type{1}'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1614 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
1615 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
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 # Action tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1620 # ============
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 class TestActionUserDefined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1623 """Test a user-defined option/argument action"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1624
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1625 class OptionalAction(argparse.Action):
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 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
1628 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1629 # check destination and option string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1630 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
1631 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
1632 # 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
1633 # 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
1634 expected_ns = NS(spam=0.25)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1635 if value in [0.125, 0.625]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1636 expected_ns.badger = 2
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1637 elif value in [2.0]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1638 expected_ns.badger = 84
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1639 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1640 raise AssertionError('value: %s' % value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1641 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
1642 (expected_ns, namespace))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1643 except AssertionError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1644 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1645 raise ArgumentParserError('opt_action failed: %s' % e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1646 setattr(namespace, 'spam', value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1647
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1648 class PositionalAction(argparse.Action):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1649
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1650 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
1651 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1652 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
1653 option_string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1654 # check destination
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1655 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
1656 # 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
1657 # 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
1658 expected_ns = NS(badger=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1659 if value in [42, 84]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1660 expected_ns.spam = 0.25
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1661 elif value in [1]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1662 expected_ns.spam = 0.625
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1663 elif value in [2]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1664 expected_ns.spam = 0.125
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1665 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1666 raise AssertionError('value: %s' % value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1667 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
1668 (expected_ns, namespace))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1669 except AssertionError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1670 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1671 raise ArgumentParserError('arg_action failed: %s' % e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1672 setattr(namespace, 'badger', value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1673
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1674 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1675 Sig('-s', dest='spam', action=OptionalAction,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1676 type=float, default=0.25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1677 Sig('badger', action=PositionalAction,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1678 type=int, nargs='?', default=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1679 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1680 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1681 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1682 ('-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
1683 ('42', NS(spam=0.25, badger=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1684 ('-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
1685 ('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
1686 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1687
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1688
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1689 class TestActionRegistration(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1690 """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
1691
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1692 class MyAction(argparse.Action):
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 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
1695 setattr(namespace, self.dest, 'foo[%s]' % values)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1696
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1697 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1698
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1699 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1700 parser.register('action', 'my_action', self.MyAction)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1701 parser.add_argument('badger', action='my_action')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1702
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1703 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
1704 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
1705
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 # Subparsers tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1709 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1710
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1711 class TestAddSubparsers(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1712 """Test the add_subparsers method"""
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 assertArgumentParserError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1715 self.assertRaises(ArgumentParserError, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1716
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
1717 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
1718 aliases=False):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1719 # 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
1720 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
1721 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
1722 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
1723 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
1724 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
1725 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
1726 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
1727 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
1728 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
1729 '--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
1730 parser.add_argument(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1731 'bar', type=float, help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1732
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1733 # 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
1734 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
1735 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
1736 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
1737 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
1738 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
1739 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
1740 subparsers = parser.add_subparsers(**subparsers_kwargs)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1741 self.assertArgumentParserError(parser.add_subparsers)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1742
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1743 # add first sub-parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1744 parser1_kwargs = dict(description='1 description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1745 if subparser_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1746 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
1747 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
1748 parser1_kwargs['aliases'] = ['1alias1', '1alias2']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1749 parser1 = subparsers.add_parser('1', **parser1_kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1750 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
1751 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
1752
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1753 # add second sub-parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1754 parser2_kwargs = dict(description='2 description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1755 if subparser_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1756 parser2_kwargs['help'] = '2 help'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1757 parser2 = subparsers.add_parser('2', **parser2_kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1758 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
1759 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
1760
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1761 # return the main parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1762 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1763
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1764 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
1765 super().setUp()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1766 self.parser = self._get_parser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1767 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
1768
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1769 def test_parse_args_failures(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1770 # check some failure cases:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1771 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
1772 '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
1773 args = args_str.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1774 self.assertArgumentParserError(self.parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1775
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1776 def test_parse_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1777 # check some non-failure cases:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1778 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1779 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
1780 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
1781 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1782 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1783 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
1784 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
1785 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1786 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1787 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
1788 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
1789 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1790
65887
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1791 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
1792 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
1793 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
1794 (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
1795 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1796 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
1797 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
1798 (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
1799 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1800 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
1801 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
1802 (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
1803 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1804 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
1805 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
1806 (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
1807 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1808 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
1809 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
1810 (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
1811 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1812
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1813 def test_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1814 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1815 parser.add_argument('--foo', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1816 subparsers = parser.add_subparsers(dest='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1817 parser1 = subparsers.add_parser('1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1818 parser1.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1819 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
1820 parser.parse_args('1 2'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1821
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1822 def test_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1823 self.assertEqual(self.parser.format_usage(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1824 '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
1825 self.assertEqual(self.parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1826 usage: PROG [-h] [--foo] bar {1,2} ...
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1827
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1828 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1829
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1830 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1831 bar bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1832 {1,2} command help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1833
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1834 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1835 -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
1836 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1837 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1838
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
1839 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
1840 # 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
1841 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
1842 self.assertEqual(parser.format_usage(),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1843 'usage: PROG [-h] [++foo] bar {1,2} ...\n')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1844 self.assertEqual(parser.format_help(), textwrap.dedent('''\
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1845 usage: PROG [-h] [++foo] bar {1,2} ...
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1846
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1847 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
1848
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1849 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
1850 bar bar 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
1851 {1,2} command 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
1852
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1853 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
1854 -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
1855 ++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
1856 '''))
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1857
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1858
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1859 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
1860 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
1861 self.assertEqual(parser.format_usage(),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1862 'usage: PROG [+h] [++foo] bar {1,2} ...\n')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1863 self.assertEqual(parser.format_help(), textwrap.dedent('''\
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1864 usage: PROG [+h] [++foo] bar {1,2} ...
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1865
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1866 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
1867
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1868 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
1869 bar bar 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
1870 {1,2} command 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
1871
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 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
1873 +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
1874 ++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
1875 '''))
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
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1877 def test_parser_command_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1878 self.assertEqual(self.command_help_parser.format_usage(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1879 '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
1880 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
1881 textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1882 usage: PROG [-h] [--foo] bar {1,2} ...
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1883
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1884 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1885
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1886 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1887 bar bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1888 {1,2} command help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1889 1 1 help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1890 2 2 help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1891
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1892 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1893 -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
1894 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1895 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1896
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1897 def test_subparser_title_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1898 parser = ErrorRaisingArgumentParser(prog='PROG',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1899 description='main description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1900 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
1901 parser.add_argument('bar', help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1902 subparsers = parser.add_subparsers(title='subcommands',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1903 description='command help',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1904 help='additional text')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1905 parser1 = subparsers.add_parser('1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1906 parser2 = subparsers.add_parser('2')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1907 self.assertEqual(parser.format_usage(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1908 '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
1909 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1910 usage: PROG [-h] [--foo] bar {1,2} ...
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1911
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1912 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1913
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1914 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1915 bar bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1916
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1917 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1918 -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
1919 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1920
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1921 subcommands:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1922 command help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1923
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1924 {1,2} additional text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1925 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1926
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1927 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
1928 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1929 self.parser.parse_args(args_str.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1930 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1931 err = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1932 if err.stdout != expected_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1933 print(repr(expected_help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1934 print(repr(err.stdout))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1935 self.assertEqual(err.stdout, expected_help)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1936
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1937 def test_subparser1_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1938 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
1939 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
1940
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1941 1 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1942
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1943 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1944 {a,b,c} x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1945
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1946 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1947 -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
1948 -w W w 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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1951 def test_subparser2_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1952 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
1953 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
1954
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1955 2 description
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1958 z z help
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1961 -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
1962 -y {1,2,3} y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1963 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1964
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
1965 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
1966 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
1967 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
1968 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
1969 (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
1970 )
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
1971 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
1972 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
1973 (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
1974 )
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
1975
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
1976 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
1977 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
1978 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
1979 '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
1980
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
1981 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
1982 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
1983 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
1984 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
1985 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
1986
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
1987 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
1988
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
1989 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
1990 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
1991
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
1992 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
1993 -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
1994 --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
1995
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
1996 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
1997 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
1998 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
1999 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
2000 2 2 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
2001 """))
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
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2003 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2004 # Groups tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2005 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2006
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2007 class TestPositionalsGroups(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2008 """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
2009
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2010 def test_nongroup_first(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2011 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2012 parser.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2013 group = parser.add_argument_group('g')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2014 group.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2015 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2016 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
2017 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
2018 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2019
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2020 def test_group_first(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2021 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2022 group = parser.add_argument_group('xxx')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2023 group.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2024 parser.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2025 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2026 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
2027 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
2028 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2029
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2030 def test_interleaved_groups(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2031 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2032 group = parser.add_argument_group('xxx')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2033 parser.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2034 group.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2035 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2036 group = parser.add_argument_group('yyy')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2037 group.add_argument('frell')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2038 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
2039 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
2040 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2041
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2042 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2043 # Parent parser tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2044 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2045
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2046 class TestParentParsers(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2047 """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
2048
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2049 def assertArgumentParserError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2050 self.assertRaises(ArgumentParserError, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2051
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2052 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
2053 super().setUp()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2054 self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2055 self.wxyz_parent.add_argument('--w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2056 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
2057 x_group.add_argument('-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2058 self.wxyz_parent.add_argument('z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2059
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2060 self.abcd_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2061 self.abcd_parent.add_argument('a')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2062 self.abcd_parent.add_argument('-b')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2063 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
2064 c_group.add_argument('--d')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2065
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2066 self.w_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2067 self.w_parent.add_argument('--w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2068
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2069 self.z_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2070 self.z_parent.add_argument('z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2071
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2072 # parents with mutually exclusive groups
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2073 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
2074 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
2075 group.add_argument('-a', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2076 group.add_argument('-b', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2077
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2078 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
2079
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2080 def test_single_parent(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2081 parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2082 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
2083 NS(w='3', y='1', z='2'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2084
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2085 def test_single_parent_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2086 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
2087 parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2088 self._test_mutex_ab(parser.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2089
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2090 def test_single_granparent_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2091 parents = [self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2092 parser = ErrorRaisingArgumentParser(add_help=False, parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2093 parser = ErrorRaisingArgumentParser(parents=[parser])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2094 self._test_mutex_ab(parser.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2095
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2096 def _test_mutex_ab(self, parse_args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2097 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
2098 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
2099 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
2100 self.assertArgumentParserError(parse_args, ['-a', '-b'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2101 self.assertArgumentParserError(parse_args, ['-b', '-a'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2102 self.assertArgumentParserError(parse_args, ['-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2103 self.assertArgumentParserError(parse_args, ['-a', '-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2104 self.assertArgumentParserError(parse_args, ['-b', '-c'])
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 def test_multiple_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2107 parents = [self.abcd_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2108 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2109 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
2110 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
2111
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2112 def test_multiple_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2113 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
2114 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2115 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
2116 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
2117 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2118 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
2119 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2120 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
2121
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2122 def test_conflicting_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2123 self.assertRaises(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2124 argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2125 argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2126 parents=[self.w_parent, self.wxyz_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2127
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2128 def test_conflicting_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2129 self.assertRaises(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2130 argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2131 argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2132 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
2133
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2134 def test_same_argument_name_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2135 parents = [self.wxyz_parent, self.z_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2136 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2137 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
2138 NS(w=None, y=None, z='2'))
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_subparser_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2141 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2142 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2143 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
2144 abcde_parser.add_argument('e')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2145 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
2146 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
2147
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2148 def test_subparser_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2149 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2150 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2151 parents = [self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2152 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
2153 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
2154 c_group.add_argument('c')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2155 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
2156 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
2157 wxyzabe_parser.add_argument('e')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2158 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
2159 NS(a=True, b=False, c='4'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2160 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
2161 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
2162 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2163 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
2164 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2165 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
2166
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2167 def test_parent_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2168 parents = [self.abcd_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2169 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2170 parser_help = parser.format_help()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2171 self.assertEqual(parser_help, textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2172 usage: {} [-h] [-b B] [--d D] [--w W] [-y Y] a z
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2175 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2176 z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2177
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2178 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2179 -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
2180 -b B
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2181 --w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2182
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2183 c:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2184 --d D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2185
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2186 x:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2187 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2188 '''.format(self.main_program)))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2189
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2190 def test_groups_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2191 parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2192 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
2193 g.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2194 g.add_argument('-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2195 m = parent.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2196 m.add_argument('-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2197 m.add_argument('-z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2198 parser = ErrorRaisingArgumentParser(parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2199
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2200 self.assertRaises(ArgumentParserError, parser.parse_args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2201 ['-y', 'Y', '-z', 'Z'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2202
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2203 parser_help = parser.format_help()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2204 self.assertEqual(parser_help, textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2205 usage: {} [-h] [-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
2206
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2207 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2208 -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
2209 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2210 -z Z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2211
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2212 g:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2213 gd
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2214
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2215 -w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2216 -x X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2217 '''.format(self.main_program)))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2218
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2219 # ==============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2220 # Mutually exclusive group tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2221 # ==============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2222
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2223 class TestMutuallyExclusiveGroupErrors(TestCase):
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_invalid_add_argument_group(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2226 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2227 raises = self.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2228 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
2229
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2230 def test_invalid_add_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2231 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2232 group = parser.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2233 add_argument = group.add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2234 raises = self.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2235 raises(ValueError, add_argument, '--foo', required=True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2236 raises(ValueError, add_argument, 'bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2237 raises(ValueError, add_argument, 'bar', nargs='+')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2238 raises(ValueError, add_argument, 'bar', nargs=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2239 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
2240
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
2241 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
2242 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
2243 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
2244 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
2245 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
2246 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
2247 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
2248 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
2249 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
2250 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
2251
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
2252 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
2253 -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
2254 --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
2255 --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
2256 --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
2257 --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
2258 '''
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
2259 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
2260
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2261 class MEMixin(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2262
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2263 def test_failures_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2264 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
2265 error = ArgumentParserError
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2266 for args_string in self.failures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2267 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
2268
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2269 def test_failures_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2270 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
2271 error = ArgumentParserError
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2272 for args_string in self.failures + ['']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2273 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
2274
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2275 def test_successes_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2276 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
2277 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
2278 for args_string, expected_ns in successes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2279 actual_ns = parse_args(args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2280 self.assertEqual(actual_ns, expected_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2281
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2282 def test_successes_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2283 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
2284 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
2285 actual_ns = parse_args(args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2286 self.assertEqual(actual_ns, expected_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2287
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2288 def test_usage_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2289 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
2290 expected_usage = self.usage_when_not_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2291 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
2292
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2293 def test_usage_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2294 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
2295 expected_usage = self.usage_when_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2296 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
2297
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2298 def test_help_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2299 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
2300 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
2301 self.assertEqual(format_help(), textwrap.dedent(help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2302
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2303 def test_help_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2304 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
2305 help = self.usage_when_required + self.help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2306 self.assertEqual(format_help(), textwrap.dedent(help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2307
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2308
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2309 class TestMutuallyExclusiveSimple(MEMixin, TestCase):
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 get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2312 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2313 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
2314 group.add_argument('--bar', help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2315 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
2316 return parser
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 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
2319 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2320 ('--bar X', NS(bar='X', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2321 ('--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
2322 ('--baz Y', NS(bar=None, baz='Y')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2323 ('--baz', NS(bar=None, baz='Z')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2324 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2325 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2326 ('', NS(bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2327 ]
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 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2330 usage: PROG [-h] [--bar BAR | --baz [BAZ]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2331 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2332 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2333 usage: PROG [-h] (--bar BAR | --baz [BAZ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2334 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2335 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2336
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2337 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2338 -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
2339 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2340 --baz [BAZ] baz help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2341 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2342
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 class TestMutuallyExclusiveLong(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2345
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2346 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2347 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2348 parser.add_argument('--abcde', help='abcde help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2349 parser.add_argument('--fghij', help='fghij help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2350 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
2351 group.add_argument('--klmno', help='klmno help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2352 group.add_argument('--pqrst', help='pqrst help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2353 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2354
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2355 failures = ['--klmno X --pqrst Y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2356 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2357 ('--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
2358 ('--abcde Y --klmno X',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2359 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
2360 ('--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
2361 ('--pqrst X --fghij Y',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2362 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
2363 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2364 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2365 ('', 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
2366 ]
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_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2369 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2370 [--klmno KLMNO | --pqrst PQRST]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2371 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2372 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2373 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2374 (--klmno KLMNO | --pqrst PQRST)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2375 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2376 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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2379 -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
2380 --abcde ABCDE abcde help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2381 --fghij FGHIJ fghij help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2382 --klmno KLMNO klmno help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2383 --pqrst PQRST pqrst help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2384 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2385
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2386
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2387 class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2388
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2389 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2390 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2391 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
2392 group.add_argument('-x', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2393 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
2394 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2395
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2396 failures = ['-x X -y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2397 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2398 ('-x X', NS(x='X', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2399 ('-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
2400 ('-y', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2401 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2402 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2403 ('', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2404 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2405
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2406 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2407 usage: PROG [-h] [-y]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2408 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2409 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2410 usage: PROG [-h] -y
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 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2417 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2418
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2419
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2420 class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase):
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 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2423 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2424 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
2425 add = group.add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2426 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
2427 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
2428 add('--bladder', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2429 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2430
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2431 failures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2432 '--spam --badger',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2433 '--badger --bladder B',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2434 '--bladder B --spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2435 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2436 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2437 ('--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
2438 ('--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
2439 ('--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
2440 ('--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
2441 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2442 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2443 ('', NS(spam=False, badger=True, bladder=None)),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2446 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2447 usage: PROG [-h]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2448 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2449 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2450
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2451 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2452 -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
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 TestMutuallyExclusiveOptionalAndPositional(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 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
2462 group.add_argument('--spam', help='SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2463 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
2464 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2465
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2466 failures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2467 '--foo --spam S',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2468 '--spam S X',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2469 'X --foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2470 'X Y Z --spam S',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2471 '--foo X Y',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2472 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2473 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2474 ('--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
2475 ('--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
2476 ('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
2477 ('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
2478 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2479 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2480 ('', NS(foo=False, spam=None, badger='X')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2483 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2484 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
2485 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2486 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2487 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
2488 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2489 help = '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2492 badger BADGER
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2495 -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
2496 --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2497 --spam SPAM SPAM
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2498 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2499
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2500
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2501 class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2502
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2503 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2504 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2505 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
2506 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
2507 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
2508 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
2509 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
2510 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
2511 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2512
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2513 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
2514 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2515 ('-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
2516 ('-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
2517 ('-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
2518 ('-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
2519 ('-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
2520 ('-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
2521 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2522 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2523 ('', 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
2524 ('-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
2525 ('-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
2526 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2527
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2528 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2529 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
2530 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2531 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2532
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2533 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2534 -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
2535 -x x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2536 -a a help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2537 -b b help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2538 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2539 -c c help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2540 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2541
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2542
67819
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2543 class TestMutuallyExclusiveInGroup(MEMixin, TestCase):
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2544
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2545 def get_parser(self, required=None):
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2546 parser = ErrorRaisingArgumentParser(prog='PROG')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2547 titled_group = parser.add_argument_group(
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2548 title='Titled group', description='Group description')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2549 mutex_group = \
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2550 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
2551 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
2552 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
2553 return parser
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2554
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2555 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
2556 successes = [
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2557 ('--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
2558 ('--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
2559 ]
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2560 successes_when_not_required = [
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2561 ('', NS(bar=None, baz=None)),
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2562 ]
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2563
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2564 usage_when_not_required = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2565 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
2566 '''
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2567 usage_when_required = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2568 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
2569 '''
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2570 help = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2571
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2572 optional arguments:
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2573 -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
2574
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2575 Titled group:
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2576 Group description
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2577
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2578 --bar BAR bar help
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2579 --baz BAZ baz help
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
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2582
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2583 class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2584
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2585 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2586 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2587 parser.add_argument('x', help='x help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2588 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
2589 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
2590 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
2591 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
2592 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
2593 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2594
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2595 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
2596 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2597 ('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
2598 ('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
2599 ('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
2600 ('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
2601 ('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
2602 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2603 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2604 ('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
2605 ('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
2606 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2607
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2608 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2609 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
2610 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2611 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2612
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2613 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2614 x x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2615 a a help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2616
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2617 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2618 -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
2619 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2620 -b b help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2621 -c c help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2622 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2623
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2624 # =================================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2625 # Mutually exclusive group in parent parser tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2626 # =================================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2627
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2628 class MEPBase(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2629
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2630 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2631 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
2632 parser = ErrorRaisingArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2633 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
2634 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2635
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2636
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2637 class TestMutuallyExclusiveGroupErrorsParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2638 MEPBase, TestMutuallyExclusiveGroupErrors):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2639 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2640
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2641
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2642 class TestMutuallyExclusiveSimpleParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2643 MEPBase, TestMutuallyExclusiveSimple):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2644 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2645
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 class TestMutuallyExclusiveLongParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2648 MEPBase, TestMutuallyExclusiveLong):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2649 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2650
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2651
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2652 class TestMutuallyExclusiveFirstSuppressedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2653 MEPBase, TestMutuallyExclusiveFirstSuppressed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2654 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2655
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2656
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2657 class TestMutuallyExclusiveManySuppressedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2658 MEPBase, TestMutuallyExclusiveManySuppressed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2659 pass
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2662 class TestMutuallyExclusiveOptionalAndPositionalParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2663 MEPBase, TestMutuallyExclusiveOptionalAndPositional):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2664 pass
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2667 class TestMutuallyExclusiveOptionalsMixedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2668 MEPBase, TestMutuallyExclusiveOptionalsMixed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2669 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2670
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 class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2673 MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2674 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2675
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 # Set default tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2678 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2679
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2680 class TestSetDefaults(TestCase):
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 def test_set_defaults_no_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2683 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2684 parser.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2685 parser.set_defaults(y='bar', z=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2686 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
2687 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2688 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
2689 parser.parse_args([], NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2690 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
2691 parser.parse_args([], NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2692 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
2693 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
2694
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2695 def test_set_defaults_with_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2696 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2697 parser.set_defaults(x='foo', y='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2698 parser.add_argument('-x', default='xfoox')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2699 self.assertEqual(NS(x='xfoox', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2700 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2701 self.assertEqual(NS(x='xfoox', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2702 parser.parse_args([], NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2703 self.assertEqual(NS(x='baz', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2704 parser.parse_args([], NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2705 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2706 parser.parse_args('-x 1'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2707 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2708 parser.parse_args('-x 1'.split(), NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2709 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2710 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
2711
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2712 def test_set_defaults_subparsers(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2713 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2714 parser.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2715 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2716 parser_a = subparsers.add_parser('a')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2717 parser_a.set_defaults(y='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2718 self.assertEqual(NS(x='foo', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2719 parser.parse_args('a'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2720
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2721 def test_set_defaults_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2722 parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2723 parent.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2724 parser = ErrorRaisingArgumentParser(parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2725 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
2726
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2727 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
2728 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2729 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
2730 parser.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2731 parser.add_argument('-x', default='XX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2732 parser.add_argument('y', nargs='?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2733 parser.add_argument('z', nargs='?', default='ZZ')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2734
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2735 # defaults set previously
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2736 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
2737 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2738
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2739 # reset defaults
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2740 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
2741 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
2742 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2743
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2744 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
2745 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2746 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
2747 group = parser.add_argument_group('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2748 group.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2749 group.add_argument('-x', default='XX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2750 group.add_argument('y', nargs='?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2751 group.add_argument('z', nargs='?', default='ZZ')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2752
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2753
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2754 # defaults set previously
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2755 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
2756 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2757
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2758 # reset defaults
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2759 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
2760 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
2761 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 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2764 # Get default tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2765 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2766
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2767 class TestGetDefault(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2768
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2769 def test_get_default(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2770 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2771 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2772 self.assertEqual(None, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2773
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2774 parser.add_argument("--foo")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2775 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2776 self.assertEqual(None, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2777
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2778 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
2779 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2780 self.assertEqual(42, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2781
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2782 parser.set_defaults(foo="badger")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2783 self.assertEqual("badger", parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2784 self.assertEqual(42, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2785
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2786 # ==========================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2787 # Namespace 'contains' tests
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 class TestNamespaceContainsSimple(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2791
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2792 def test_empty(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2793 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
2794 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
2795 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
2796 self.assertEqual('x' in ns, False)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2797
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2798 def test_non_empty(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2799 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
2800 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
2801 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
2802 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
2803 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
2804 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
2805 self.assertEqual('z' in ns, False)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2806
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2807 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2808 # Help formatting tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2811 class TestHelpFormattingMetaclass(type):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2812
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2813 def __init__(cls, name, bases, bodydict):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2814 if name == 'HelpTestCase':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2815 return
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2816
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2817 class AddTests(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2818
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2819 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
2820 self.func_suffix = func_suffix
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2821 self.std_name = std_name
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 for test_func in [self.test_format,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2824 self.test_print,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2825 self.test_print_file]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2826 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
2827
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2828 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
2829 test_func(self)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2830 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2831 test_wrapper.__name__ = test_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2832 except TypeError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2833 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2834 setattr(test_class, test_name, test_wrapper)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2835
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2836 def _get_parser(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2837 parser = argparse.ArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2838 *tester.parser_signature.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2839 **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
2840 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
2841 parser.add_argument(*argument_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2842 **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
2843 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
2844 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
2845 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
2846 **group_sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2847 for argument_sig in argument_sigs:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2848 group.add_argument(*argument_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2849 **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
2850 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
2851 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
2852 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
2853 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
2854 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
2855 **subparser_sig.kwargs)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2856 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2857
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2858 def _test(self, tester, parser_text):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2859 expected_text = getattr(tester, self.func_suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2860 expected_text = textwrap.dedent(expected_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2861 if expected_text != parser_text:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2862 print(repr(expected_text))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2863 print(repr(parser_text))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2864 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
2865 if char1 != char2:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2866 print('first diff: %r %r' % (char1, char2))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2867 break
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2868 tester.assertEqual(expected_text, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2869
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2870 def test_format(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2871 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2872 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
2873 self._test(tester, format())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2874
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2875 def test_print(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2876 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2877 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
2878 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
2879 setattr(sys, self.std_name, StdIOBuffer())
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2880 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2881 print_()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2882 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
2883 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2884 setattr(sys, self.std_name, old_stream)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2885 self._test(tester, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2886
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2887 def test_print_file(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2888 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2889 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
2890 sfile = StdIOBuffer()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2891 print_(sfile)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2892 parser_text = sfile.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2893 self._test(tester, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2894
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2895 # add tests for {format,print}_{usage,help,version}
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2896 for func_suffix, std_name in [('usage', 'stdout'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2897 ('help', 'stdout'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2898 ('version', 'stderr')]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2899 AddTests(cls, func_suffix, std_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2900
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2901 bases = TestCase,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2902 HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2903
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2904
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2905 class TestHelpBiggerOptionals(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2906 """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
2907
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2908 parser_signature = Sig(prog='PROG', description='DESCRIPTION',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2909 epilog='EPILOG', version='0.1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2910 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2911 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
2912 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2913 Sig('foo', help='FOO HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2914 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2915 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2916 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2917 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2918 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
2919 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2920 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2921
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2922 DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2923
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2924 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2925 foo FOO HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2926 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2927
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2928 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2929 -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
2930 -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
2931 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2932 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2933
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2934 EPILOG
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 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2937 0.1
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2941 class TestHelpBiggerOptionalGroups(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2942 """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
2943
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2944 parser_signature = Sig(prog='PROG', description='DESCRIPTION',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2945 epilog='EPILOG', version='0.1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2946 argument_signatures = [
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 (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2954 Sig('baz', help='BAZ HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2955 Sig('-z', nargs='+', help='Z HELP')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2956 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2957 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2958 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
2959 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2960 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2961
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2962 DESCRIPTION
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2965 foo FOO HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2966 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2967
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2968 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2969 -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
2970 -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
2971 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2972 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2973
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2974 GROUP TITLE:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2975 GROUP DESCRIPTION
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 baz BAZ HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2978 -z Z [Z ...] Z HELP
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 EPILOG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2981 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2982 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2983 0.1
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2984 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2985
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2986
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2987 class TestHelpBiggerPositionals(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2988 """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
2989
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2990 parser_signature = Sig(usage='USAGE', description='DESCRIPTION')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2991 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2992 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
2993 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2994 Sig('ekiekiekifekang', help='EKI HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2995 Sig('bar', help='BAR HELP'),
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 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2998 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2999 usage: USAGE
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3002
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3003 DESCRIPTION
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3006 ekiekiekifekang EKI HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3007 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3008
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3009 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3010 -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
3011 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3012 --y Y Y HELP
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3015 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3018 class TestHelpReformatting(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3019 """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
3020
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3021 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3022 prog='PROG',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3023 description=' oddly formatted\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3024 'description\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3025 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3026 '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
3027 'lines when wrapped')
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', metavar='XX', help='oddly\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3030 ' formatted -x help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3031 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
3032 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3033 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3034 (Sig('title', description='\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3035 ' oddly formatted group\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3036 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3037 'description'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3038 [Sig('-a', action='store_true',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3039 help=' oddly \n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3040 'formatted -a help \n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3041 ' 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
3042 'multiple lines')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3043 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3044 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3045 usage: PROG [-h] [-x XX] [-a] yyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3046 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3047 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3048
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3049 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
3050 multiple
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3051 lines when wrapped
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3052
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3053 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3054 yyy normal y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3055
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3056 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3057 -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
3058 -x XX oddly formatted -x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3059
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3060 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3061 oddly formatted group description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3062
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3063 -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
3064 be wrapped
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3065 over multiple lines
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3066 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3067 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3068
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 class TestHelpWrappingShortNames(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3071 """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
3072
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3073 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
3074 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3075 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
3076 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
3077 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3078 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3079 (Sig('ALPHAS'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3080 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
3081 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3082 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3083 usage: PROG [-h] [-x XX] [-a] yyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3084 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3085 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3086
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3087 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
3088 DD DD DD
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3089 DD DD DD DD D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3090
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3091 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3092 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
3093 YHYH YHYH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3094 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
3095
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3096 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3097 -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
3098 -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
3099 HXXHH HXXHH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3100 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
3101
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3102 ALPHAS:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3103 -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
3104 HHAAHHH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3105 HHAAHHH HHAAHHH HHA
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3108
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 class TestHelpWrappingLongNames(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3111 """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
3112
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3113 parser_signature = Sig(usage='USAGE', description= 'D D' * 30,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3114 version='V V'*30)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3115 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3116 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
3117 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
3118 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3119 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3120 (Sig('ALPHAS'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3121 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
3122 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
3123 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3124 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3125 usage: USAGE
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3126 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3127 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3128
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3129 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
3130 DD DD DD
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3131 DD DD DD DD D
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3134 yyyyyyyyyyyyyyyyyyyyyyyyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3135 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
3136 YHYH YHYH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3137 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
3138
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3139 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3140 -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
3141 -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
3142 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3143 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
3144 XHXH XHXH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3145 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
3146
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3147 ALPHAS:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3148 -a AAAAAAAAAAAAAAAAAAAAAAAAA
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3149 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
3150 AHAH AHAH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3151 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
3152 zzzzzzzzzzzzzzzzzzzzzzzzz
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3153 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
3154 ZHZH ZHZH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3155 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
3156 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3157 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3158 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
3159 VV VV VV
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3160 VV VV VV VV V
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3161 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3162
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 class TestHelpUsage(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3165 """Test basic usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3166
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3167 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3168 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3169 Sig('-w', nargs='+', help='w'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3170 Sig('-x', nargs='*', help='x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3171 Sig('a', help='a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3172 Sig('b', help='b', nargs=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3173 Sig('c', help='c', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3174 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3175 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3176 (Sig('group'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3177 Sig('-y', nargs='?', help='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3178 Sig('-z', nargs=3, help='z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3179 Sig('d', help='d', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3180 Sig('e', help='e', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3181 ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3182 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3183 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3184 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
3185 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
3186 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3187 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3188
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3189 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3190 a a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3191 b b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3192 c c
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3195 -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
3196 -w W [W ...] w
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3197 -x [X [X ...]] x
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 group:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3200 -y [Y] y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3201 -z Z Z Z z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3202 d d
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3203 e e
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3204 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3205 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3206
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3207
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3208 class TestHelpOnlyUserGroups(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3209 """Test basic usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3210
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3211 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
3212 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3213 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3214 (Sig('xxxx'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3215 Sig('-x', help='x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3216 Sig('a', help='a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3217 ]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3218 (Sig('yyyy'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3219 Sig('b', help='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3220 Sig('-y', help='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3221 ]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3222 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3223 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3224 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
3225 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3226 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3227
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3228 xxxx:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3229 -x X x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3230 a a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3231
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3232 yyyy:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3233 b b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3234 -y Y y
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3237
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3238
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3239 class TestHelpUsageLongProg(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3240 """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
3241
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3242 parser_signature = Sig(prog='P' * 60)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3243 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3244 Sig('-w', metavar='W'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3245 Sig('-x', metavar='X'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3246 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3247 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3248 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3249 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3250 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3251 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3252 [-h] [-w W] [-x X] a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3253 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3254 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3255
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3256 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3257 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3258 b
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3261 -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
3262 -w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3263 -x X
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3266
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3267
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3268 class TestHelpUsageLongProgOptionsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3269 """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
3270
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3271 parser_signature = Sig(prog='P' * 60)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3272 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3273 Sig('-w', metavar='W' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3274 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3275 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3276 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3277 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3278 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3279 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3280 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3281 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3282 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3283 [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3284 [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3285 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3286 a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3287 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3288 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3289
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3290 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3291 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3292 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3293
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3294 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3295 -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
3296 -w WWWWWWWWWWWWWWWWWWWWWWWWW
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3297 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3298 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3299 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3300 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3301 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3302
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 class TestHelpUsageLongProgPositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3305 """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
3306
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3307 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
3308 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3309 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3310 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3311 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3312 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3313 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3314 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3315 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3316 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3317 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3318 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3319 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3320
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3321 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3322 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3323 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3324 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3325 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3326 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3327
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3328
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3329 class TestHelpUsageOptionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3330 """Test usage messages where the optionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3331
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3332 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3333 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3334 Sig('-w', metavar='W' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3335 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3336 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3337 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3338 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3339 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3340 Sig('c'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3341 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3342 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3343 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3344 usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3345 [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3346 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3347 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3348 a b c
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3351
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3352 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3353 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3354 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3355 c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3356
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3357 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3358 -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
3359 -w WWWWWWWWWWWWWWWWWWWWWWWWW
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3360 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3361 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3362 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3363 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3364 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3367 class TestHelpUsagePositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3368 """Test usage messages where the positionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3369
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3370 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3371 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3372 Sig('-x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3373 Sig('-y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3374 Sig('-z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3375 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3376 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3377 Sig('c' * 25),
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] [-x X] [-y Y] [-z Z]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3382 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3383 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3384 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3385 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3388 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3389 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3390 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3391
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3392 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3393 -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
3394 -x X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3395 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3396 -z Z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3397 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3398 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3399
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 class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3402 """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
3403
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3404 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3405 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3406 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3407 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3408 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3409 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3410 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3411 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3412 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3413 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3414 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3415 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3416 [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3417 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3418 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3419 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3420 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3421 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3422
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3423 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3424 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3425 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3426 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3427
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3428 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3429 -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
3430 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3431 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3432 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3433 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3434 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3435
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 class TestHelpUsageOptionalsOnlyWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3438 """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
3439
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3440 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3441 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3442 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3443 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3444 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3445 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3446 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3447 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3448 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3449 [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3450 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3451 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3452 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3453
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3454 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3455 -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
3456 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3457 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3458 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3461
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3462
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3463 class TestHelpUsagePositionalsOnlyWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3464 """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
3465
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3466 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
3467 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3468 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3469 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3470 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3471 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3472 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3473 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3474 usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3475 ccccccccccccccccccccccccc
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3478
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3479 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3480 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3481 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3482 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3483 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3484 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3485
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3486
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3487 class TestHelpVariableExpansion(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3488 """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
3489
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3490 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3491 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3492 Sig('-x', type=int,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3493 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
3494 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
3495 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
3496 Sig('--foo', choices='abc',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3497 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
3498 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
3499 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
3500 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
3501 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
3502 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3503 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3504 (Sig('group'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3505 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
3506 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
3507 ])
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 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3510 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
3511 spam badger
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3512 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3513 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3514
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3515 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3516 spam spam PROG None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3517 badger badger PROG 0.5
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3518
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3519 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3520 -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
3521 -x X x PROG None int %
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3522 -y y PROG 42 XXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3523 --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
3524 --bar BBB bar PROG baz bar
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3525
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3526 group:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3527 -a A a PROG None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3528 -b B b PROG -1
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3529 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3530 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3531
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3532
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3533 class TestHelpVariableExpansionUsageSupplied(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3534 """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
3535
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3536 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
3537 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3538 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3539 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3540 usage: PROG FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3541 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3542 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3543
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3544 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3545 -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
3546 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3547 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3548
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 class TestHelpVariableExpansionNoArguments(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3551 """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
3552
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3553 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
3554 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3555 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3556 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3557 usage: PROG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3558 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3559 help = usage
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3560 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3561
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 class TestHelpSuppressUsage(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3564 """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
3565
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3566 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
3567 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3568 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3569 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3570 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3571 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3572 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3573 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3574 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3575
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3576 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3577 -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
3578 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3579 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3580 usage = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3581 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3582
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 class TestHelpSuppressOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3585 """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
3586
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3587 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
3588 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3589 Sig('--foo', help=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3590 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3591 ]
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 spam
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3598 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3599 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3600 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3601 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3604 class TestHelpSuppressOptionalGroup(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3605 """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
3606
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3607 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3608 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3609 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3610 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3611 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3612 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3613 (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3614 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3615 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3616 usage: PROG [-h] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3617 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3618 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3621 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3622
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3623 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3624 -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
3625 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3626 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3627 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3630 class TestHelpSuppressPositional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3631 """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
3632
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3633 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3634 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3635 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3636 Sig('spam', help=argparse.SUPPRESS),
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 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3639 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3640 usage: PROG [-h] [--foo FOO]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3641 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3642 help = usage + '''\
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3645 -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
3646 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3647 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3648 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3649
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3650
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3651 class TestHelpRequiredOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3652 """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
3653
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3654 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3655 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3656 Sig('--foo', required=True, help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3657 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3658 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3659 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3660 usage: PROG [-h] --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3661 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3662 help = usage + '''\
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3665 -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
3666 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3667 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3668 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3671 class TestHelpAlternatePrefixChars(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3672 """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
3673
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3674 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
3675 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3676 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
3677 Sig(';b', ';;bar', help='bar help'),
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 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3680 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3681 usage: PROG [^^foo] [;b BAR]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3682 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3683 help = usage + '''\
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3686 ^^foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3687 ;b BAR, ;;bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3688 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3689 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3692 class TestHelpNoHelpOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3693 """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
3694
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3695 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
3696 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3697 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3698 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3699 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3700 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3701 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3702 usage: PROG [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3703 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3704 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3705
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3706 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3707 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3708
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3709 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3710 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3711 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3712 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3713
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3714
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3715 class TestHelpVersionOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3716 """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
3717
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3718 parser_signature = Sig(prog='PROG', version='1.0')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3719 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3720 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3721 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3722 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3723 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3724 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3725 usage: PROG [-h] [-v] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3726 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3727 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3730 spam spam help
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3733 -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
3734 -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
3735 --foo FOO foo 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 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3738 1.0
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3739 '''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3742 class TestHelpNone(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3743 """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
3744
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3745 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3746 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3747 Sig('--foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3748 Sig('spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3749 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3750 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3751 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3752 usage: PROG [-h] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3753 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3754 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3755
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3756 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3757 spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3758
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3759 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3760 -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
3761 --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3762 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3763 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3766 class TestHelpTupleMetavar(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3767 """Test specifying metavar as a tuple"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3768
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3769 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3770 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3771 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
3772 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
3773 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
3774 Sig('-z', help='z', nargs='?', metavar=('Z1', )),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3775 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3776 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3777 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3778 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
3779 [-z [Z1]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3780 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3781 help = usage + '''\
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3784 -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
3785 -w W1 [W2 ...] w
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3786 -x [X1 [X2 ...]] x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3787 -y Y1 Y2 Y3 y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3788 -z [Z1] z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3789 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3790 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3793 class TestHelpRawText(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3794 """Test the RawTextHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3795
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3796 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3797 prog='PROG', formatter_class=argparse.RawTextHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3798 description='Keep the formatting\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3799 ' exactly as it is written\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3800 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3801 'here\n')
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 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3804 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
3805 'appear as given here'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3806 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3807 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3808 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3809 (Sig('title', description=' This text\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3810 ' should be indented\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3811 ' exactly like it is here\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3812 [Sig('--bar', help='bar help')]),
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 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3815 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
3816 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3817 help = usage + '''\
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 Keep the formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3820 exactly as it is written
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3821
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3822 here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3823
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3824 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3825 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3826
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3827 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3828 -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
3829 --foo FOO foo help should also
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3830 appear as given here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3831
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3832 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3833 This text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3834 should be indented
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3835 exactly like it is here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3836
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3837 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3838 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3839 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3842 class TestHelpRawDescription(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3843 """Test the RawTextHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3844
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3845 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3846 prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3847 description='Keep the formatting\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3848 ' exactly as it is written\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3849 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3850 'here\n')
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 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3853 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
3854 ' retain this odd formatting'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3855 Sig('spam', help='spam help'),
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 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3858 (Sig('title', description=' This text\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3859 ' should be indented\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3860 ' exactly like it is here\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3861 [Sig('--bar', help='bar help')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3862 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3863 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3864 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
3865 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3866 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3867
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3868 Keep the formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3869 exactly as it is written
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3870
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3871 here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3872
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3873 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3874 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3875
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3876 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3877 -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
3878 --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
3879
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3880 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3881 This text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3882 should be indented
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3883 exactly like it is here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3884
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3885 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3886 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3887 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3888
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 class TestHelpArgumentDefaults(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3891 """Test the ArgumentDefaultsHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3892
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3893 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3894 prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3895 description='description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3896
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3897 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3898 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
3899 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
3900 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3901 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
3902 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3903 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3904 (Sig('title', description='description'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3905 [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
3906 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3907 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3908 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
3909 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3910 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3911
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3912 description
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3915 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3916 badger badger help (default: wooden)
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3919 -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
3920 --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
3921 --bar bar help (default: False)
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 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3924 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3925
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3926 --baz BAZ baz help (default: 42)
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3929
61880
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3930 class TestHelpVersionAction(HelpTestCase):
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3931 """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
3932
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3933 parser_signature = Sig(prog='PROG', description='description')
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3934 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
3935 argument_group_signatures = []
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3936 usage = '''\
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3937 usage: PROG [-h] [-V]
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3938 '''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3939 help = usage + '''\
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3940
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3941 description
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3942
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3943 optional arguments:
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3944 -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
3945 -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
3946 '''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3947 version = ''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
3948
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3949 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
3950 """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
3951 parser_signature = Sig(prog='PROG',
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3952 description='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
3953 version='0.1')
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3954
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3955 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
3956 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
3957
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3958 usage = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3959 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
3960 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3961
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3962 help = usage + '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3963
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3964 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
3965
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3966 positional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3967 {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
3968
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3969 optional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3970 -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
3971 -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
3972 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3973
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3974 version = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3975 0.1
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3976 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3977
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3978 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
3979 """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
3980 parser_signature = Sig(prog='PROG',
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3981 description='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
3982 version='0.1')
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3983
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3984 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
3985 ('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
3986 ('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
3987 ('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
3988 ('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
3989 )
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3990
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3991 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
3992 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
3993
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3994 usage = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3995 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
3996 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3997
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
3998 help = usage + '''\
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 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
4001
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4002 positional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4003 {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
4004 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
4005 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
4006 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
4007 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
4008 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
4009
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4010 optional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4011 -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
4012 -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
4013 '''
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 version = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4016 0.1
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4017 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4018
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4019
68966
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4020
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4021 class TestHelpMetavarTypeFormatter(HelpTestCase):
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4022 """"""
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4023
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4024 def custom_type(string):
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4025 return string
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4026
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4027 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
4028 formatter_class=argparse.MetavarTypeHelpFormatter)
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4029 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
4030 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
4031 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
4032 argument_group_signatures = []
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4033 usage = '''\
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4034 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
4035 '''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4036 help = usage + '''\
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4037
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4038 description
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4039
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4040 positional arguments:
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4041 int
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4042
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4043 optional arguments:
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4044 -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
4045 -b custom_type
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4046 -c SOME FLOAT
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4047 '''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4048 version = ''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4049
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4050
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4051 # =====================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4052 # Optional/Positional constructor tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4053 # =====================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4054
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4055 class TestInvalidArgumentConstructors(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4056 """Test a bunch of invalid Argument constructors"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4057
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4058 def assertTypeError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4059 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4060 self.assertRaises(TypeError, parser.add_argument,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4061 *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4062
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4063 def assertValueError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4064 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4065 self.assertRaises(ValueError, parser.add_argument,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4066 *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4067
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4068 def test_invalid_keyword_arguments(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4069 self.assertTypeError('-x', bar=None)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4070 self.assertTypeError('-y', callback='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4071 self.assertTypeError('-y', callback_args=())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4072 self.assertTypeError('-y', callback_kwargs={})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4073
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4074 def test_missing_destination(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4075 self.assertTypeError()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4076 for action in ['append', 'store']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4077 self.assertTypeError(action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4078
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4079 def test_invalid_option_strings(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4080 self.assertValueError('--')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4081 self.assertValueError('---')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4082
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4083 def test_invalid_type(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4084 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
4085 self.assertValueError('--foo', type=(int, float))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4086
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4087 def test_invalid_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4088 self.assertValueError('-x', action='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4089 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
4090 self.assertValueError('--foo', action=('store', 'append'))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4091 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4092 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4093 parser.add_argument("--foo", action="store-true")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4094 except ValueError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4095 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4096 expected = 'unknown action'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4097 msg = 'expected %r, found %r' % (expected, e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4098 self.assertTrue(expected in str(e), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4099
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4100 def test_multiple_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4101 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4102 parser.add_argument(dest='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4103 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4104 parser.add_argument('bar', dest='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4105 except ValueError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4106 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4107 expected = 'dest supplied twice for positional argument'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4108 msg = 'expected %r, found %r' % (expected, e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4109 self.assertTrue(expected in str(e), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4110
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4111 def test_no_argument_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4112 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
4113 'append_const', 'count']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4114 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
4115 dict(choices='ab')]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4116 self.assertTypeError('-x', action=action, **attrs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4117
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4118 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
4119 # options with zero arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4120 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
4121
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4122 # const is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4123 self.assertTypeError('-x', const='foo', action=action)
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 # nargs is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4126 self.assertTypeError('-x', nargs='*', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4127
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4128 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
4129 for action in ['store', 'append']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4130
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4131 # nargs=0 is disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4132 self.assertValueError('-x', nargs=0, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4133 self.assertValueError('spam', nargs=0, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4134
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4135 # const is disallowed with non-optional arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4136 for nargs in [1, '*', '+']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4137 self.assertValueError('-x', const='foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4138 nargs=nargs, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4139 self.assertValueError('spam', const='foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4140 nargs=nargs, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4141
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4142 def test_required_const_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4143 for action in ['store_const', 'append_const']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4144
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4145 # nargs is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4146 self.assertTypeError('-x', nargs='+', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4147
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4148 def test_parsers_action_missing_params(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4149 self.assertTypeError('command', action='parsers')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4150 self.assertTypeError('command', action='parsers', prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4151 self.assertTypeError('command', action='parsers',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4152 parser_class=argparse.ArgumentParser)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4153
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4154 def test_required_positional(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4155 self.assertTypeError('foo', required=True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4156
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4157 def test_user_defined_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4158
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4159 class Success(Exception):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4160 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4161
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4162 class Action(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4163
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4164 def __init__(self,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4165 option_strings,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4166 dest,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4167 const,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4168 default,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4169 required=False):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4170 if dest == 'spam':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4171 if const is Success:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4172 if default is Success:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4173 raise Success()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4174
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4175 def __call__(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4176 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4177
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4178 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4179 self.assertRaises(Success, parser.add_argument, '--spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4180 action=Action, default=Success, const=Success)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4181 self.assertRaises(Success, parser.add_argument, 'spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4182 action=Action, default=Success, const=Success)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4183
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4184 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4185 # Actions returned by add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4186 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4187
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4188 class TestActionsReturned(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4189
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4190 def test_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4191 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4192 action = parser.add_argument('--foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4193 self.assertEqual(action.dest, 'foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4194 action = parser.add_argument('-b', '--bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4195 self.assertEqual(action.dest, 'bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4196 action = parser.add_argument('-x', '-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4197 self.assertEqual(action.dest, 'x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4198
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4199 def test_misc(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4200 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4201 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
4202 default=84, type=int, choices=[1, 2],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4203 help='FOO', metavar='BAR', dest='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4204 self.assertEqual(action.nargs, '?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4205 self.assertEqual(action.const, 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4206 self.assertEqual(action.default, 84)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4207 self.assertEqual(action.type, int)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4208 self.assertEqual(action.choices, [1, 2])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4209 self.assertEqual(action.help, 'FOO')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4210 self.assertEqual(action.metavar, 'BAR')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4211 self.assertEqual(action.dest, 'baz')
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4214 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4215 # Argument conflict handling tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4216 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4217
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4218 class TestConflictHandling(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4219
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4220 def test_bad_type(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4221 self.assertRaises(ValueError, argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4222 conflict_handler='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4223
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4224 def test_conflict_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4225 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4226 parser.add_argument('-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4227 self.assertRaises(argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4228 parser.add_argument, '-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4229 parser.add_argument('--spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4230 self.assertRaises(argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4231 parser.add_argument, '--spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4232
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4233 def test_resolve_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4234 get_parser = argparse.ArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4235 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
4236
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4237 parser.add_argument('-x', help='OLD X')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4238 parser.add_argument('-x', help='NEW X')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4239 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4240 usage: PROG [-h] [-x X]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4241
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4242 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4243 -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
4244 -x X NEW X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4245 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4246
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4247 parser.add_argument('--spam', metavar='OLD_SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4248 parser.add_argument('--spam', metavar='NEW_SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4249 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4250 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
4251
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4252 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4253 -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
4254 -x X NEW X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4255 --spam NEW_SPAM
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4256 '''))
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4259 # =============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4260 # Help and Version option tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4263 class TestOptionalsHelpVersionActions(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4264 """Test the help and version actions"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4265
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4266 def _get_error(self, func, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4267 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4268 func(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4269 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4270 return sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4271 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4272 self.assertRaises(ArgumentParserError, func, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4273
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4274 def assertPrintHelpExit(self, parser, args_str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4275 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4276 parser.format_help(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4277 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
4278
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4279 def assertPrintVersionExit(self, parser, args_str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4280 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4281 parser.format_version(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4282 self._get_error(parser.parse_args, args_str.split()).stderr)
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 def assertArgumentParserError(self, parser, *args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4285 self.assertRaises(ArgumentParserError, parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4286
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4287 def test_version(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4288 parser = ErrorRaisingArgumentParser(version='1.0')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4289 self.assertPrintHelpExit(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4290 self.assertPrintHelpExit(parser, '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4291 self.assertPrintVersionExit(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4292 self.assertPrintVersionExit(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4293
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4294 def test_version_format(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4295 parser = ErrorRaisingArgumentParser(prog='PPP', version='%(prog)s 3.5')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4296 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
4297 self.assertEqual('PPP 3.5\n', msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4298
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4299 def test_version_no_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4300 parser = ErrorRaisingArgumentParser(add_help=False, version='1.0')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4301 self.assertArgumentParserError(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4302 self.assertArgumentParserError(parser, '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4303 self.assertPrintVersionExit(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4304 self.assertPrintVersionExit(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4305
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4306 def test_version_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4307 parser = ErrorRaisingArgumentParser(prog='XXX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4308 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
4309 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
4310 self.assertEqual('XXX 3.7\n', msg)
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 test_no_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4313 parser = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4314 self.assertArgumentParserError(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4315 self.assertArgumentParserError(parser, '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4316 self.assertArgumentParserError(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4317 self.assertArgumentParserError(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4318
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4319 def test_alternate_help_version(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4320 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4321 parser.add_argument('-x', action='help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4322 parser.add_argument('-y', action='version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4323 self.assertPrintHelpExit(parser, '-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4324 self.assertPrintVersionExit(parser, '-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4325 self.assertArgumentParserError(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4326 self.assertArgumentParserError(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4327
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4328 def test_help_version_extra_arguments(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4329 parser = ErrorRaisingArgumentParser(version='1.0')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4330 parser.add_argument('-x', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4331 parser.add_argument('y')
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 # 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
4334 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
4335 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
4336 for prefix in valid_prefixes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4337 for suffix in valid_suffixes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4338 format = '%s %%s %s' % (prefix, suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4339 self.assertPrintHelpExit(parser, format % '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4340 self.assertPrintHelpExit(parser, format % '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4341 self.assertPrintVersionExit(parser, format % '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4342 self.assertPrintVersionExit(parser, format % '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4343
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4344
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 # str() and repr() tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4347 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4348
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4349 class TestStrings(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4350 """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
4351
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4352 def assertStringEqual(self, obj, result_string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4353 for func in [str, repr]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4354 self.assertEqual(func(obj), result_string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4355
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4356 def test_optional(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4357 option = argparse.Action(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4358 option_strings=['--foo', '-a', '-b'],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4359 dest='b',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4360 type='int',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4361 nargs='+',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4362 default=42,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4363 choices=[1, 2, 3],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4364 help='HELP',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4365 metavar='METAVAR')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4366 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4367 "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
4368 "nargs='+', const=None, default=42, type='int', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4369 "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
4370 self.assertStringEqual(option, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4371
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4372 def test_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4373 argument = argparse.Action(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4374 option_strings=[],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4375 dest='x',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4376 type=float,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4377 nargs='?',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4378 default=2.5,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4379 choices=[0.5, 1.5, 2.5],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4380 help='H HH H',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4381 metavar='MV MV MV')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4382 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4383 "Action(option_strings=[], dest='x', nargs='?', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4384 "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
4385 "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
4386 self.assertStringEqual(argument, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4387
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4388 def test_namespace(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4389 ns = argparse.Namespace(foo=42, bar='spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4390 string = "Namespace(bar='spam', foo=42)"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4391 self.assertStringEqual(ns, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4392
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4393 def test_parser(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4394 parser = argparse.ArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4395 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4396 "ArgumentParser(prog='PROG', usage=None, description=None, "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4397 "version=None, formatter_class=%r, conflict_handler='error', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4398 "add_help=True)" % argparse.HelpFormatter)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4399 self.assertStringEqual(parser, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4400
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4401 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4402 # Namespace tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4403 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4404
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4405 class TestNamespace(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4406
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4407 def test_constructor(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4408 ns = argparse.Namespace()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4409 self.assertRaises(AttributeError, getattr, ns, 'x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4410
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4411 ns = argparse.Namespace(a=42, b='spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4412 self.assertEqual(ns.a, 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4413 self.assertEqual(ns.b, 'spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4414
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4415 def test_equality(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4416 ns1 = argparse.Namespace(a=1, b=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4417 ns2 = argparse.Namespace(b=2, a=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4418 ns3 = argparse.Namespace(a=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4419 ns4 = argparse.Namespace(b=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4420
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4421 self.assertEqual(ns1, ns2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4422 self.assertNotEqual(ns1, ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4423 self.assertNotEqual(ns1, ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4424 self.assertNotEqual(ns2, ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4425 self.assertNotEqual(ns2, ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4426 self.assertTrue(ns1 != ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4427 self.assertTrue(ns1 != ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4428 self.assertTrue(ns2 != ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4429 self.assertTrue(ns2 != ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4430
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4431
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4432 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4433 # File encoding tests
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 class TestEncoding(TestCase):
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 def _test_module_encoding(self, path):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4439 path, _ = os.path.splitext(path)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4440 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
4441 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
4442 f.read()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4443
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4444 def test_argparse_module_encoding(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4445 self._test_module_encoding(argparse.__file__)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4446
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4447 def test_test_argparse_module_encoding(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4448 self._test_module_encoding(__file__)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4449
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4450 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4451 # ArgumentError tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4452 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4453
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4454 class TestArgumentError(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4455
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4456 def test_argument_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4457 msg = "my error here"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4458 error = argparse.ArgumentError(None, msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4459 self.assertEqual(str(error), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4460
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4461 # =======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4462 # ArgumentTypeError tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4463 # =======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4464
66257
d4f5e27ed186 Make test class name unique so that both test classes run.
R. David Murray <rdmurray@bitdance.com>
parents: 65887
diff changeset
4465 class TestArgumentTypeError(TestCase):
59275
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 def test_argument_type_error(self):
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 def spam(string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4470 raise argparse.ArgumentTypeError('spam!')
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 parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4473 parser.add_argument('x', type=spam)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4474 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4475 parser.parse_args(['XXX'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4476 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4477 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
4478 msg = sys.exc_info()[1].stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4479 self.assertEqual(expected, msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4480 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4481 self.fail()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4482
70741
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4483 # =========================
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4484 # MessageContentError tests
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4485 # =========================
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4486
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4487 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
4488
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4489 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
4490 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
4491 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
4492 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
4493 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
4494
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4495 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
4496 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
4497 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
4498 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
4499 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
4500 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
4501 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
4502 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
4503 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
4504 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
4505 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
4506 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
4507 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
4508 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
4509 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
4510 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
4511 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
4512 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
4513
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4514 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
4515 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
4516 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
4517 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
4518 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
4519 default=True)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4520 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
4521 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
4522 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
4523 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
4524 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
4525 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
4526 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
4527 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
4528 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
4529 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
4530 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
4531 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
4532
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4533 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
4534 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
4535 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
4536 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
4537 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
4538 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
4539 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
4540 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
4541 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
4542
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4543
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4544 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4545 # parse_known_args tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4546 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4547
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4548 class TestParseKnownArgs(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4549
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4550 def test_optionals(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4551 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4552 parser.add_argument('--foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4553 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
4554 self.assertEqual(NS(foo='F'), args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4555 self.assertEqual(['--bar', '--baz'], extras)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4556
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4557 def test_mixed(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4558 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4559 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
4560 parser.add_argument('--spam', action='store_false')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4561 parser.add_argument('badger')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4562
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4563 argv = ["B", "C", "--foo", "-v", "3", "4"]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4564 args, extras = parser.parse_known_args(argv)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4565 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
4566 self.assertEqual(["C", "--foo", "4"], extras)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4567
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
4568 # ==========================
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
4569 # 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
4570 # ==========================
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
4571
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
4572 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
4573
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
4574 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
4575
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
4576 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
4577 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
4578 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
4579
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
4580 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
4581 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
4582 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
4583 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
4584 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
4585
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
4586 # 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
4587
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
4588 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
4589 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
4590
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
4591 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
4592 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
4593
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
4594 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
4595 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
4596
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
4597 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
4598 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
4599
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
4600 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
4601 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
4602
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
4603 # 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
4604
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
4605 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
4606 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
4607
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
4608 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
4609 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
4610
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
4611 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
4612 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
4613
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
4614 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
4615 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
4616
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
4617 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
4618 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
4619
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
4620 # 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
4621
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
4622 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
4623 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
4624
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
4625 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
4626 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
4627
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
4628 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
4629 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
4630
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
4631 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
4632 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
4633
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
4634 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
4635 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
4636
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
4637 # 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
4638
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
4639 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
4640 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
4641
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
4642 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
4643 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
4644
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
4645 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
4646 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
4647
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
4648 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
4649 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
4650
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
4651 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
4652 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
4653
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
4654 # 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
4655
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
4656 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
4657 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
4658
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
4659 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
4660 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
4661
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
4662 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
4663 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
4664
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
4665 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
4666 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
4667
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
4668 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
4669 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
4670
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
4671 # 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
4672
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
4673 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
4674 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
4675
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
4676 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
4677 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
4678
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
4679 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
4680 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
4681
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
4682 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
4683 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
4684
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 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
4686 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
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 # 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
4689
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 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
4691 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
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 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
4694 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
4695
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 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
4697 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
4698
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 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
4700 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
4701
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 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
4703 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
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 # 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
4706
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 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
4708 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
4709
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 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
4711 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
4712
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 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
4714 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
4715
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 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
4717 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
4718
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 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
4720 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
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 # 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
4723
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 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
4725 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
4726
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 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
4728 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
4729
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 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
4731 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
4732
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 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
4734 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
4735
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 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
4737 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
4738
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4739 # ============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4740 # from argparse import * tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4741 # ============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4742
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4743 class TestImportStar(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4744
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4745 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4746 for name in argparse.__all__:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4747 self.assertTrue(hasattr(argparse, name))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4748
65863
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4749 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
4750 items = [
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4751 name
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4752 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
4753 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
4754 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
4755 ]
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4756 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
4757
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4758 def test_main():
60174
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4759 # silence warnings about version argument - these are expected
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4760 with support.check_warnings(
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4761 ('The "version" argument to ArgumentParser is deprecated.',
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4762 DeprecationWarning),
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4763 ('The (format|print)_version method is deprecated',
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4764 DeprecationWarning)):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4765 support.run_unittest(__name__)
59285
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4766 # 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
4767 RFile.seen = {}
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4768 WFile.seen = set()
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4769
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4770
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4771
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4772 if __name__ == '__main__':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4773 test_main()