annotate Lib/test/test_argparse.py @ 60174:255a401c19b0

(partially) Merged revisions 79534,79537,79539,79558,79606 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r79534 | florent.xicluna | 2010-03-31 23:21:54 +0200 (mer, 31 mar 2010) | 2 lines Fix test for xml.etree when using a non-ascii path. And use check_warnings instead of catch_warnings. ........ r79537 | florent.xicluna | 2010-03-31 23:40:32 +0200 (mer, 31 mar 2010) | 2 lines Fix typo ........ r79539 | florent.xicluna | 2010-04-01 00:01:03 +0200 (jeu, 01 avr 2010) | 2 lines Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests. ........ r79558 | florent.xicluna | 2010-04-01 20:17:09 +0200 (jeu, 01 avr 2010) | 2 lines #7092: Fix some -3 warnings, and fix Lib/platform.py when the path contains a double-quote. ........ r79606 | florent.xicluna | 2010-04-02 19:26:42 +0200 (ven, 02 avr 2010) | 2 lines Backport some robotparser test and skip the test if the external resource is not available. ........
author Florent Xicluna <florent.xicluna@gmail.com>
date Fri, 02 Apr 2010 18:52:12 +0000
parents 7251e737a5d8
children c41478473eae
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4 import os
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
5 import shutil
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
6 import sys
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
7 import textwrap
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
8 import tempfile
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
9 import unittest
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
10 import argparse
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
11
59282
b30f8ce82167 Merged revisions 78600-78601 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59275
diff changeset
12 from io import StringIO
b30f8ce82167 Merged revisions 78600-78601 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59275
diff changeset
13
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
14 from test import support
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
15
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
16 class TestCase(unittest.TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
17
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
18 def assertEqual(self, obj1, obj2):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
19 if obj1 != obj2:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
20 print('')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
21 print(repr(obj1))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
22 print(repr(obj2))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
23 print(obj1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
24 print(obj2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
25 super(TestCase, self).assertEqual(obj1, obj2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
26
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
27
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
28 class TempDirMixin(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
29
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
30 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
31 self.temp_dir = tempfile.mkdtemp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
32 self.old_dir = os.getcwd()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
33 os.chdir(self.temp_dir)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
34
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
35 def tearDown(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
36 os.chdir(self.old_dir)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
37 while True:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
38 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
39 shutil.rmtree(self.temp_dir)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
40 except WindowsError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
41 continue
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
42 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
43 break
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
44
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
45
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
46 class Sig(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
47
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
48 def __init__(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
49 self.args = args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
50 self.kwargs = kwargs
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
51
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
52
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
53 class NS(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
54
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
55 def __init__(self, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
56 self.__dict__.update(kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
57
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
58 def __repr__(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
59 sorted_items = sorted(self.__dict__.items())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
60 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
61 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
62
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
63 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
64 return vars(self) == vars(other)
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 __ne__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
67 return not (self == other)
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
70 class ArgumentParserError(Exception):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
71
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
72 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
73 Exception.__init__(self, message, stdout, stderr)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
74 self.message = message
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
75 self.stdout = stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
76 self.stderr = stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
77 self.error_code = error_code
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
78
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 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
81 # 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
82 # 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
83 # catch the exception
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
84 if isinstance(sys.stderr, StringIO) or isinstance(sys.stdout, StringIO):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
85 return parse_args(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
86
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
87 # 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
88 # use it as the ArgumentParserError message
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
89 old_stdout = sys.stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
90 old_stderr = sys.stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
91 sys.stdout = StringIO()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
92 sys.stderr = StringIO()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
93 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
94 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
95 result = parse_args(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
96 for key in list(vars(result)):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
97 if getattr(result, key) is sys.stdout:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
98 setattr(result, key, old_stdout)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
99 if getattr(result, key) is sys.stderr:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
100 setattr(result, key, old_stderr)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
101 return result
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
102 except SystemExit:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
103 code = sys.exc_info()[1].code
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
104 stdout = sys.stdout.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
105 stderr = sys.stderr.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
106 raise ArgumentParserError("SystemExit", stdout, stderr, code)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
107 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
108 sys.stdout = old_stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
109 sys.stderr = old_stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
110
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
111
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
112 class ErrorRaisingArgumentParser(argparse.ArgumentParser):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
113
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
114 def parse_args(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
115 parse_args = super(ErrorRaisingArgumentParser, self).parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
116 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
117
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
118 def exit(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
119 exit = super(ErrorRaisingArgumentParser, self).exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
120 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
121
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
122 def error(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
123 error = super(ErrorRaisingArgumentParser, self).error
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
124 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
125
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
126
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
127 class ParserTesterMetaclass(type):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
128 """Adds parser tests using the class attributes.
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
129
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
130 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
131
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
132 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
133 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
134 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
135 to fail
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
136 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
137 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
138 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
139 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
140 remaining unparsed arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
141 """
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 def __init__(cls, name, bases, bodydict):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
144 if name == 'ParserTestCase':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
145 return
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
146
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
147 # default parser signature is empty
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
148 if not hasattr(cls, 'parser_signature'):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
149 cls.parser_signature = Sig()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
150 if not hasattr(cls, 'parser_class'):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
151 cls.parser_class = ErrorRaisingArgumentParser
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 # functions for adding optional arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
155 # ---------------------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
156 def no_groups(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
157 """Add all arguments directly to the parser"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
158 for sig in argument_signatures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
159 parser.add_argument(*sig.args, **sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
160
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
161 def one_group(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
162 """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
163 group = parser.add_argument_group('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
164 for sig in argument_signatures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
165 group.add_argument(*sig.args, **sig.kwargs)
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 many_groups(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
168 """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
169 for i, sig in enumerate(argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
170 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
171 group.add_argument(*sig.args, **sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
172
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
173 # --------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
174 # functions for parsing args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
175 # --------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
176 def listargs(parser, args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
177 """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
178 return parser.parse_args(args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
179
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
180 def sysargs(parser, args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
181 """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
182 old_sys_argv = sys.argv
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
183 sys.argv = [old_sys_argv[0]] + args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
184 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
185 return parser.parse_args()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
186 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
187 sys.argv = old_sys_argv
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
188
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
189 # 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
190 # addition method and one arg parsing method
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
191 class AddTests(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
192
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
193 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
194 self._add_arguments = add_arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
195 self._parse_args = parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
196
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
197 add_arguments_name = self._add_arguments.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
198 parse_args_name = self._parse_args.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
199 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
200 func_name = test_func.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
201 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
202 test_name = '_'.join(names)
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 wrapper(self, test_func=test_func):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
205 test_func(self)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
206 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
207 wrapper.__name__ = test_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
208 except TypeError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
209 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
210 setattr(tester_cls, test_name, wrapper)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
211
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
212 def _get_parser(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
213 args = tester.parser_signature.args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
214 kwargs = tester.parser_signature.kwargs
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
215 parser = tester.parser_class(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
216 self._add_arguments(parser, tester.argument_signatures)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
217 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
218
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
219 def test_failures(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
220 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
221 for args_str in tester.failures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
222 args = args_str.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
223 raises = tester.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
224 raises(ArgumentParserError, parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
225
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
226 def test_successes(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
227 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
228 for args, expected_ns in tester.successes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
229 if isinstance(args, str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
230 args = args.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
231 result_ns = self._parse_args(parser, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
232 tester.assertEqual(expected_ns, result_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
233
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
234 # 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
235 # and an arg parsing method
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
236 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
237 for parse_args in [listargs, sysargs]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
238 AddTests(cls, add_arguments, parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
239
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
240 bases = TestCase,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
241 ParserTestCase = ParserTesterMetaclass('ParserTestCase', bases, {})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
242
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
243 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
244 # Optionals tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
245 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
246
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
247 class TestOptionalsSingleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
248 """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
249
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
250 argument_signatures = [Sig('-x')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
251 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
252 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
253 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
254 ('-x a', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
255 ('-xa', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
256 ('-x -1', NS(x='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
257 ('-x-1', NS(x='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
258 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
259
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 class TestOptionalsSingleDashCombined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
262 """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
263
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
264 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
265 Sig('-x', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
266 Sig('-yyy', action='store_const', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
267 Sig('-z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
268 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
269 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
270 '-yx', '-yz a', '-yyyx', '-yyyza', '-xyza']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
271 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
272 ('', NS(x=False, yyy=None, z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
273 ('-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
274 ('-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
275 ('-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
276 ('-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
277 ('-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
278 ('-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
279 ('-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
280 ('-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
281 ('-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
282 ('-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
283 ('-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
284 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
285
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
286
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
287 class TestOptionalsSingleDashLong(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
288 """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
289
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
290 argument_signatures = [Sig('-foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
291 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
292 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
293 ('', NS(foo=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
294 ('-foo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
295 ('-foo -1', NS(foo='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
296 ('-fo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
297 ('-f a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
298 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
299
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 class TestOptionalsSingleDashSubsetAmbiguous(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
302 """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
303
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
304 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
305 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
306 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
307 ('', NS(f=None, foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
308 ('-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
309 ('-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
310 ('-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
311 ('-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
312 ('-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
313 ('-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
314 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
315
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
316
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
317 class TestOptionalsSingleDashAmbiguous(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
318 """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
319
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
320 argument_signatures = [Sig('-foobar'), Sig('-foorab')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
321 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
322 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
323 ('', NS(foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
324 ('-foob a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
325 ('-foor a', NS(foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
326 ('-fooba a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
327 ('-foora a', NS(foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
328 ('-foobar a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
329 ('-foorab a', NS(foobar=None, foorab='a')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
332
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
333 class TestOptionalsNumeric(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
334 """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
335
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
336 argument_signatures = [Sig('-1', dest='one')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
337 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
338 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
339 ('', NS(one=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
340 ('-1 a', NS(one='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
341 ('-1a', NS(one='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
342 ('-1-2', NS(one='-2')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
345
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
346 class TestOptionalsDoubleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
347 """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
348
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
349 argument_signatures = [Sig('--foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
350 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
351 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
352 ('', NS(foo=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
353 ('--foo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
354 ('--foo=a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
355 ('--foo -2.5', NS(foo='-2.5')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
356 ('--foo=-2.5', NS(foo='-2.5')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
357 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
358
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 class TestOptionalsDoubleDashPartialMatch(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
361 """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
362
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
363 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
364 Sig('--badger', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
365 Sig('--bat'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
366 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
367 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
368 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
369 ('', NS(badger=False, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
370 ('--bat X', NS(badger=False, bat='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
371 ('--bad', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
372 ('--badg', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
373 ('--badge', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
374 ('--badger', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
375 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
376
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 class TestOptionalsDoubleDashPrefixMatch(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
379 """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
380
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
381 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
382 Sig('--badger', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
383 Sig('--ba'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
384 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
385 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
386 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
387 ('', NS(badger=False, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
388 ('--ba X', NS(badger=False, ba='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
389 ('--ba=X', NS(badger=False, ba='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
390 ('--bad', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
391 ('--badg', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
392 ('--badge', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
393 ('--badger', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
394 ]
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
397 class TestOptionalsSingleDoubleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
398 """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
399
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
400 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
401 Sig('-f', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
402 Sig('--bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
403 Sig('-baz', action='store_const', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
404 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
405 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
406 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
407 ('', NS(f=False, bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
408 ('-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
409 ('--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
410 ('-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
411 ('-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
412 ('-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
413 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
414
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 class TestOptionalsAlternatePrefixChars(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
417 """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
418
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
419 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
420 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
421 Sig('+f', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
422 Sig('::bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
423 Sig('/baz', action='store_const', const=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 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
426 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
427 ('', NS(f=False, bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
428 ('+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
429 ('::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
430 ('+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
431 ('+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
432 ('/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
433 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
434
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
435
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
436 class TestOptionalsShortLong(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
437 """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
438
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
439 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
440 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
441 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
442 failures = ['--x --verbose', '-N', 'a', '-v x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
443 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
444 ('', NS(verbose=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
445 ('-v', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
446 ('--verbose', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
447 ('-n', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
448 ('--noisy', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
449 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
450
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
451
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
452 class TestOptionalsDest(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
453 """Tests various means of setting destination"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
454
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
455 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
456 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
457 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
458 ('--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
459 ('--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
460 ('--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
461 ('--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
462 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
463
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
464
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
465 class TestOptionalsDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
466 """Tests specifying a default for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
467
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
468 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
469 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
470 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
471 ('', NS(x=None, y=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
472 ('-xx', NS(x='x', y=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
473 ('-yy', NS(x=None, y='y')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
474 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
475
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
476
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
477 class TestOptionalsNargsDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
478 """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
479
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
480 argument_signatures = [Sig('-x')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
481 failures = ['a', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
482 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
483 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
484 ('-x a', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
485 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
486
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
487
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
488 class TestOptionalsNargs1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
489 """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
490
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
491 argument_signatures = [Sig('-x', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
492 failures = ['a', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
493 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
494 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
495 ('-x a', NS(x=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
496 ]
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
499 class TestOptionalsNargs3(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
500 """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
501
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
502 argument_signatures = [Sig('-x', nargs=3)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
503 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
504 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
505 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
506 ('-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
507 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
508
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
509
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
510 class TestOptionalsNargsOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
511 """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
512
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
513 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
514 Sig('-w', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
515 Sig('-x', nargs='?', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
516 Sig('-y', nargs='?', default='spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
517 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
518 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
519 failures = ['2']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
520 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
521 ('', 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
522 ('-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
523 ('-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
524 ('-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
525 ('-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
526 ('-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
527 ('-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
528 ('-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
529 ('-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
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 TestOptionalsNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
534 """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
535
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
536 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
537 Sig('-x', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
538 Sig('-y', nargs='*', default='spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
539 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
540 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
541 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
542 ('', NS(x=None, y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
543 ('-x', NS(x=[], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
544 ('-x a', NS(x=['a'], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
545 ('-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
546 ('-y', NS(x=None, y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
547 ('-y a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
548 ('-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
549 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
550
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
551
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
552 class TestOptionalsNargsOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
553 """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
554
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
555 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
556 Sig('-x', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
557 Sig('-y', nargs='+', default='spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
558 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
559 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
560 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
561 ('', NS(x=None, y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
562 ('-x a', NS(x=['a'], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
563 ('-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
564 ('-y a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
565 ('-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
566 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
567
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 class TestOptionalsChoices(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
570 """Tests specifying the choices for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
571
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
572 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
573 Sig('-f', choices='abc'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
574 Sig('-g', type=int, choices=range(5))]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
575 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
576 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
577 ('', NS(f=None, g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
578 ('-f a', NS(f='a', g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
579 ('-f c', NS(f='c', g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
580 ('-g 0', NS(f=None, g=0)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
581 ('-g 03', NS(f=None, g=3)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
582 ('-fb -g4', NS(f='b', g=4)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
583 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
584
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
585
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
586 class TestOptionalsRequired(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
587 """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
588
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
589 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
590 Sig('-x', type=int, required=True),
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 failures = ['a', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
593 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
594 ('-x 1', NS(x=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
595 ('-x42', NS(x=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
596 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
597
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
598
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
599 class TestOptionalsActionStore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
600 """Tests the store action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
601
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
602 argument_signatures = [Sig('-x', action='store')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
603 failures = ['a', 'a -x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
604 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
605 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
606 ('-xfoo', NS(x='foo')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
609
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
610 class TestOptionalsActionStoreConst(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
611 """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
612
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
613 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
614 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
615 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
616 ('', NS(y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
617 ('-y', NS(y=object)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
618 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
619
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
620
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
621 class TestOptionalsActionStoreFalse(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
622 """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
623
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
624 argument_signatures = [Sig('-z', action='store_false')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
625 failures = ['a', '-za', '-z a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
626 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
627 ('', NS(z=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
628 ('-z', NS(z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
629 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
630
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
631
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
632 class TestOptionalsActionStoreTrue(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
633 """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
634
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
635 argument_signatures = [Sig('--apple', action='store_true')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
636 failures = ['a', '--apple=b', '--apple b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
637 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
638 ('', NS(apple=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
639 ('--apple', NS(apple=True)),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
643 class TestOptionalsActionAppend(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
644 """Tests the append action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
645
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
646 argument_signatures = [Sig('--baz', action='append')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
647 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
648 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
649 ('', NS(baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
650 ('--baz a', NS(baz=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
651 ('--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
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 TestOptionalsActionAppendWithDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
656 """Tests the append 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('--baz', action='append', default=['X'])]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
659 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
660 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
661 ('', NS(baz=['X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
662 ('--baz a', NS(baz=['X', 'a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
663 ('--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
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
667 class TestOptionalsActionAppendConst(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
668 """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
669
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
670 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
671 Sig('-b', action='append_const', const=Exception),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
672 Sig('-c', action='append', dest='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
673 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
674 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
675 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
676 ('', NS(b=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
677 ('-b', NS(b=[Exception])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
678 ('-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
679 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
680
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
681
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
682 class TestOptionalsActionAppendConstWithDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
683 """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
684
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
685 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
686 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
687 Sig('-c', action='append', dest='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
688 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
689 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
690 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
691 ('', NS(b=['X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
692 ('-b', NS(b=['X', Exception])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
693 ('-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
694 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
695
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 class TestOptionalsActionCount(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
698 """Tests the count action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
699
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
700 argument_signatures = [Sig('-x', action='count')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
701 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
702 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
703 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
704 ('-x', NS(x=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
705 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
706
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
707
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 # Positional tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
712 class TestPositionalsNargsNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
713 """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
714
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
715 argument_signatures = [Sig('foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
716 failures = ['', '-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
717 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
718 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
719 ]
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 class TestPositionalsNargs1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
723 """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
724
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
725 argument_signatures = [Sig('foo', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
726 failures = ['', '-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
727 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
728 ('a', NS(foo=['a'])),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
731
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
732 class TestPositionalsNargs2(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
733 """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
734
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
735 argument_signatures = [Sig('foo', nargs=2)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
736 failures = ['', 'a', '-x', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
737 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
738 ('a b', NS(foo=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
739 ]
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
742 class TestPositionalsNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
743 """Test a Positional that specifies unlimited nargs"""
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 argument_signatures = [Sig('foo', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
746 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
747 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
748 ('', NS(foo=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
749 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
750 ('a b', NS(foo=['a', 'b'])),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
754 class TestPositionalsNargsZeroOrMoreDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
755 """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
756
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
757 argument_signatures = [Sig('foo', nargs='*', default='bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
758 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
759 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
760 ('', NS(foo='bar')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
761 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
762 ('a b', NS(foo=['a', 'b'])),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
766 class TestPositionalsNargsOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
767 """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
768
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
769 argument_signatures = [Sig('foo', nargs='+')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
770 failures = ['', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
771 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
772 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
773 ('a b', NS(foo=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
774 ]
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 class TestPositionalsNargsOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
778 """Tests an Optional Positional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
779
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
780 argument_signatures = [Sig('foo', nargs='?')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
781 failures = ['-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
782 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
783 ('', NS(foo=None)),
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 TestPositionalsNargsOptionalDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
789 """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
790
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
791 argument_signatures = [Sig('foo', nargs='?', default=42)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
792 failures = ['-x', 'a b']
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 ('', NS(foo=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
795 ('a', NS(foo='a')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
799 class TestPositionalsNargsOptionalConvertedDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
800 """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
801 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
802 """
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
803
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
804 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
805 Sig('foo', nargs='?', type=int, default='42'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
806 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
807 failures = ['-x', 'a b', '1 2']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
808 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
809 ('', NS(foo=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
810 ('1', NS(foo=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
811 ]
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
814 class TestPositionalsNargsNoneNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
815 """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
816
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
817 argument_signatures = [Sig('foo'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
818 failures = ['', '-x', 'a', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
819 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
820 ('a b', NS(foo='a', bar='b')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
823
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
824 class TestPositionalsNargsNone1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
825 """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
826
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
827 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
828 failures = ['', '--foo', 'a', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
829 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
830 ('a b', NS(foo='a', bar=['b'])),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
834 class TestPositionalsNargs2None(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
835 """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
836
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
837 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
838 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
839 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
840 ('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
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 TestPositionalsNargsNoneZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
845 """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
846
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
847 argument_signatures = [Sig('foo'), Sig('bar', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
848 failures = ['', '--foo']
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 ('a', NS(foo='a', bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
851 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
852 ('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
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
856 class TestPositionalsNargsNoneOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
857 """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
858
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
859 argument_signatures = [Sig('foo'), Sig('bar', nargs='+')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
860 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
861 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
862 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
863 ('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
864 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
865
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
866
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
867 class TestPositionalsNargsNoneOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
868 """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
869
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
870 argument_signatures = [Sig('foo'), Sig('bar', nargs='?')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
871 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
872 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
873 ('a', NS(foo='a', bar=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
874 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
875 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
876
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 class TestPositionalsNargsZeroOrMoreNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
879 """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
880
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
881 argument_signatures = [Sig('foo', nargs='*'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
882 failures = ['', '--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
883 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
884 ('a', NS(foo=[], bar='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
885 ('a b', NS(foo=['a'], bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
886 ('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
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 TestPositionalsNargsOneOrMoreNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
891 """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
892
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
893 argument_signatures = [Sig('foo', nargs='+'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
894 failures = ['', '--foo', 'a']
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', NS(foo=['a'], bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
897 ('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
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
901 class TestPositionalsNargsOptionalNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
902 """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
903
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
904 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
905 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
906 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
907 ('a', NS(foo=42, bar='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
908 ('a b', NS(foo='a', bar='b')),
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 TestPositionalsNargs2ZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
913 """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
914
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
915 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
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', 'b'], bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
919 ('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
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 TestPositionalsNargs2OneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
924 """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
925
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
926 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
927 failures = ['', '--foo', 'a', 'a b']
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 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
930 ]
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 class TestPositionalsNargs2Optional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
934 """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
935
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
936 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
937 failures = ['', '--foo', 'a', 'a b c d']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
938 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
939 ('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
940 ('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
941 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
942
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 class TestPositionalsNargsZeroOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
945 """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
946
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
947 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
948 failures = ['', '--foo', ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
949 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
950 ('a', NS(foo=[], bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
951 ('a b', NS(foo=['a'], bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
952 ('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
953 ]
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 class TestPositionalsNargsOneOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
957 """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
958
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
959 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
960 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
961 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
962 ('a b', NS(foo=['a'], bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
963 ('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
964 ]
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 class TestPositionalsNargsOptional1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
968 """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
969
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
970 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
971 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
972 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
973 ('a', NS(foo=None, bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
974 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
975 ]
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 class TestPositionalsNargsNoneZeroOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
979 """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
980
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
981 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
982 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
983 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
984 Sig('baz', nargs=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
985 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
986 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
987 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
988 ('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
989 ('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
990 ]
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
993 class TestPositionalsNargsNoneOneOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
994 """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
995
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
996 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
997 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
998 Sig('bar', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
999 Sig('baz', nargs=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1000 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1001 failures = ['', '--foo', 'a', 'b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1002 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1003 ('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
1004 ('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
1005 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1006
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1007
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1008 class TestPositionalsNargsNoneOptional1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1009 """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
1010
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1011 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1012 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1013 Sig('bar', nargs='?', default=0.625),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1014 Sig('baz', nargs=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1015 ]
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=0.625, baz=['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', bar='b', baz=['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 TestPositionalsNargsOptionalOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1024 """Test two optional nargs"""
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 = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1027 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1028 Sig('bar', nargs='?', default=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1029 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1030 failures = ['--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1031 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1032 ('', NS(foo=None, bar=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1033 ('a', NS(foo='a', bar=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1034 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1035 ]
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1038 class TestPositionalsNargsOptionalZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1039 """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
1040
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1041 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
1042 failures = ['--foo']
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 ('', NS(foo=None, bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1045 ('a', NS(foo='a', bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1046 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1047 ('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
1048 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1049
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1050
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1051 class TestPositionalsNargsOptionalOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1052 """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
1053
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1054 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
1055 failures = ['', '--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1056 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1057 ('a', NS(foo=None, bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1058 ('a b', NS(foo='a', bar=['b'])),
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', 'c'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1060 ]
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 class TestPositionalsChoicesString(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1064 """Test a set of single-character choices"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1065
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1066 argument_signatures = [Sig('spam', choices=set('abcdefg'))]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1067 failures = ['', '--foo', 'h', '42', 'ef']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1068 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1069 ('a', NS(spam='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1070 ('g', NS(spam='g')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1073
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1074 class TestPositionalsChoicesInt(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1075 """Test a set of integer choices"""
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 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
1078 failures = ['', '--foo', 'h', '42', 'ef']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1079 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1080 ('4', NS(spam=4)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1081 ('15', NS(spam=15)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1082 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1083
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1084
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1085 class TestPositionalsActionAppend(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1086 """Test the 'append' action"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1087
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1088 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1089 Sig('spam', action='append'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1090 Sig('spam', action='append', nargs=2),
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 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
1093 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1094 ('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
1095 ]
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 # ========================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1098 # Combined optionals and positionals tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1099 # ========================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1100
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1101 class TestOptionalsNumericAndPositionals(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1102 """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
1103
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1104 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1105 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1106 Sig('-4', dest='y', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1107 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1108 failures = ['-2', '-315']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1109 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1110 ('', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1111 ('a', NS(x='a', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1112 ('-4', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1113 ('-4 a', NS(x='a', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1114 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1115
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 class TestOptionalsAlmostNumericAndPositionals(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1118 """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
1119
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1120 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1121 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1122 Sig('-k4', dest='y', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1123 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1124 failures = ['-k3']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1125 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1126 ('', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1127 ('-2', NS(x='-2', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1128 ('a', NS(x='a', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1129 ('-k4', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1130 ('-k4 a', NS(x='a', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1131 ]
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1134 class TestEmptyAndSpaceContainingArguments(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1135
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1136 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1137 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1138 Sig('-y', '--yyy', dest='y'),
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 failures = ['-y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1141 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1142 ([''], NS(x='', y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1143 (['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
1144 (['-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
1145 (['-y', ''], NS(x=None, y='')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1146 (['-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
1147 (['-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
1148 (['--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
1149 (['--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
1150 ]
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 class TestPrefixCharacterOnlyArguments(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1154
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1155 parser_signature = Sig(prefix_chars='-+')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1156 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1157 Sig('-', dest='x', nargs='?', const='badger'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1158 Sig('+', dest='y', type=int, default=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1159 Sig('-+-', dest='z', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1160 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1161 failures = ['-y', '+ -']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1162 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1163 ('', NS(x=None, y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1164 ('-', NS(x='badger', y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1165 ('- 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
1166 ('+ -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
1167 ('-+-', NS(x=None, y=42, z=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1168 ('- ===', NS(x='===', y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1169 ]
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 class TestNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1173 """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
1174
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1175 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
1176 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1177 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1178 ('', NS(x=None, y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1179 ('-x', NS(x=[], y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1180 ('-x a', NS(x=['a'], y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1181 ('-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
1182 ('a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1183 ('a -x', NS(x=[], y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1184 ('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
1185 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1186
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 class TestNargsRemainder(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1189 """Tests specifying a positional with nargs=REMAINDER"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1190
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1191 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
1192 failures = ['', '-z', '-z Z']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1193 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1194 ('X', NS(x='X', y=[], z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1195 ('-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
1196 ('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
1197 ('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
1198 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1199
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1200
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1201 class TestOptionLike(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1202 """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
1203
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1204 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1205 Sig('-x', type=float),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1206 Sig('-3', type=float, dest='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1207 Sig('z', nargs='*'),
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 failures = ['-x', '-y2.5', '-xa', '-x -a',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1210 '-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
1211 '-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
1212 '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
1213 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1214 ('', NS(x=None, y=None, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1215 ('-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
1216 ('-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
1217 ('-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
1218 ('-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
1219 ('-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
1220 ('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
1221 ('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
1222 ('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
1223 ('-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
1224 ('-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
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 TestDefaultSuppress(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1229 """Test actions with suppressed defaults"""
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 = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1232 Sig('foo', nargs='?', default=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1233 Sig('bar', nargs='*', default=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1234 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
1235 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1236 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1237 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1238 ('', NS()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1239 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1240 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1241 ('--baz', NS(baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1242 ('a --baz', NS(foo='a', baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1243 ('--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
1244 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1245
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 class TestParserDefaultSuppress(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1248 """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
1249
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1250 parser_signature = Sig(argument_default=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1251 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1252 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1253 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1254 Sig('--baz', action='store_true'),
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 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1257 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1258 ('', NS()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1259 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1260 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1261 ('--baz', NS(baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1262 ('a --baz', NS(foo='a', baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1263 ('--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
1264 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1265
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1266
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1267 class TestParserDefault42(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1268 """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
1269
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1270 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
1271 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1272 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1273 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1274 Sig('--baz', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1275 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1276 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1277 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1278 ('', NS(foo=42, bar=42, baz=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1279 ('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
1280 ('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
1281 ('--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
1282 ('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
1283 ('--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
1284 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1285
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 class TestArgumentsFromFile(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1288 """Test reading arguments from a file"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1289
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1290 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1291 super(TestArgumentsFromFile, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1292 file_texts = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1293 ('hello', 'hello world!\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1294 ('recursive', '-a\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1295 'A\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1296 '@hello'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1297 ('invalid', '@no-such-path\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1298 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1299 for path, text in file_texts:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1300 file = open(path, 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1301 file.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1302 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1303
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1304 parser_signature = Sig(fromfile_prefix_chars='@')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1305 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1306 Sig('-a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1307 Sig('x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1308 Sig('y', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1309 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1310 failures = ['', '-b', 'X', '@invalid', '@missing']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1311 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1312 ('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
1313 ('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
1314 ('@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
1315 ('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
1316 ('-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
1317 ('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
1318 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1319
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 class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1322 """Test reading arguments from a file"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1323
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1324 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1325 super(TestArgumentsFromFileConverter, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1326 file_texts = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1327 ('hello', 'hello world!\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1328 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1329 for path, text in file_texts:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1330 file = open(path, 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1331 file.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1332 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1333
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1334 class FromFileConverterArgumentParser(ErrorRaisingArgumentParser):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1335
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1336 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
1337 for arg in arg_line.split():
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1338 if not arg.strip():
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1339 continue
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1340 yield arg
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1341 parser_class = FromFileConverterArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1342 parser_signature = Sig(fromfile_prefix_chars='@')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1343 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1344 Sig('y', nargs='+'),
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 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1347 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1348 ('@hello X', NS(y=['hello', 'world!', 'X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1349 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1350
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1351
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1352 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1353 # Type conversion tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1356 class TestFileTypeRepr(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1357
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1358 def test_r(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1359 type = argparse.FileType('r')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1360 self.assertEqual("FileType('r')", repr(type))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1361
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1362 def test_wb_1(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1363 type = argparse.FileType('wb', 1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1364 self.assertEqual("FileType('wb', 1)", repr(type))
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1367 class RFile(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1368 seen = {}
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1369
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1370 def __init__(self, name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1371 self.name = name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1372
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1373 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1374 if other in self.seen:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1375 text = self.seen[other]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1376 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1377 text = self.seen[other] = other.read()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1378 other.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1379 if not isinstance(text, str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1380 text = text.decode('ascii')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1381 return self.name == other.name == text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1382
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1383
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1384 class TestFileTypeR(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1385 """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
1386
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1387 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1388 super(TestFileTypeR, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1389 for file_name in ['foo', 'bar']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1390 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
1391 file.write(file_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1392 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1393
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1394 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1395 Sig('-x', type=argparse.FileType()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1396 Sig('spam', type=argparse.FileType('r')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1397 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1398 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1399 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1400 ('foo', NS(x=None, spam=RFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1401 ('-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
1402 ('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
1403 ('-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
1404 ]
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 class TestFileTypeRB(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1408 """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
1409
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1410 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1411 super(TestFileTypeRB, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1412 for file_name in ['foo', 'bar']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1413 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
1414 file.write(file_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1415 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1416
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1417 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1418 Sig('-x', type=argparse.FileType('rb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1419 Sig('spam', type=argparse.FileType('rb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1420 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1421 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1422 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1423 ('foo', NS(x=None, spam=RFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1424 ('-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
1425 ('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
1426 ('-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
1427 ]
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1430 class WFile(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1431 seen = set()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1432
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1433 def __init__(self, name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1434 self.name = name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1435
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1436 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1437 if other not in self.seen:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1438 text = 'Check that file is writable.'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1439 if 'b' in other.mode:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1440 text = text.encode('ascii')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1441 other.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1442 other.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1443 self.seen.add(other)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1444 return self.name == other.name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1445
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1446
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1447 class TestFileTypeW(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1448 """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
1449
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1450 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1451 Sig('-x', type=argparse.FileType('w')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1452 Sig('spam', type=argparse.FileType('w')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1453 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1454 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1455 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1456 ('foo', NS(x=None, spam=WFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1457 ('-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
1458 ('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
1459 ('-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
1460 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1461
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 class TestFileTypeWB(TempDirMixin, ParserTestCase):
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 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1466 Sig('-x', type=argparse.FileType('wb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1467 Sig('spam', type=argparse.FileType('wb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1468 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1469 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1470 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1471 ('foo', NS(x=None, spam=WFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1472 ('-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
1473 ('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
1474 ('-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
1475 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1476
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1477
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1478 class TestTypeCallable(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1479 """Test some callables as option/argument types"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1480
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1481 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1482 Sig('--eggs', type=complex),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1483 Sig('spam', type=float),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1484 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1485 failures = ['a', '42j', '--eggs a', '--eggs 2i']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1486 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1487 ('--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
1488 ('--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
1489 ('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
1490 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1491
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1492
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1493 class TestTypeUserDefined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1494 """Test a user-defined option/argument type"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1495
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1496 class MyType(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1497
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1498 def __init__(self, value):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1499 self.value = value
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1500
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1501 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1502 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
1503
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1504 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1505 Sig('-x', type=MyType),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1506 Sig('spam', type=MyType),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1507 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1508 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1509 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1510 ('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
1511 ('-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
1512 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1513
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1514
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1515 class TestTypeClassicClass(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1516 """Test a classic class type"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1517
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1518 class C:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1519
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1520 def __init__(self, value):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1521 self.value = value
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 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1524 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
1525
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1526 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1527 Sig('-x', type=C),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1528 Sig('spam', type=C),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1529 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1530 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1531 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1532 ('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
1533 ('-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
1534 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1535
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1536
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1537 class TestTypeRegistration(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1538 """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
1539
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1540 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1541
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1542 def get_my_type(string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1543 return 'my_type{%s}' % string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1544
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1545 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1546 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
1547 parser.add_argument('-x', type='my_type')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1548 parser.add_argument('y', type='my_type')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1549
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1550 self.assertEqual(parser.parse_args('1'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1551 NS(x=None, y='my_type{1}'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1552 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
1553 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
1554
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1555
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1556 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1557 # Action tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1558 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1559
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1560 class TestActionUserDefined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1561 """Test a user-defined option/argument action"""
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 class OptionalAction(argparse.Action):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1564
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1565 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
1566 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1567 # check destination and option string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1568 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
1569 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
1570 # 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
1571 # 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
1572 expected_ns = NS(spam=0.25)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1573 if value in [0.125, 0.625]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1574 expected_ns.badger = 2
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1575 elif value in [2.0]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1576 expected_ns.badger = 84
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1577 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1578 raise AssertionError('value: %s' % value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1579 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
1580 (expected_ns, namespace))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1581 except AssertionError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1582 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1583 raise ArgumentParserError('opt_action failed: %s' % e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1584 setattr(namespace, 'spam', value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1585
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1586 class PositionalAction(argparse.Action):
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 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
1589 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1590 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
1591 option_string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1592 # check destination
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1593 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
1594 # 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
1595 # 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
1596 expected_ns = NS(badger=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1597 if value in [42, 84]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1598 expected_ns.spam = 0.25
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1599 elif value in [1]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1600 expected_ns.spam = 0.625
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1601 elif value in [2]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1602 expected_ns.spam = 0.125
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1603 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1604 raise AssertionError('value: %s' % value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1605 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
1606 (expected_ns, namespace))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1607 except AssertionError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1608 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1609 raise ArgumentParserError('arg_action failed: %s' % e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1610 setattr(namespace, 'badger', value)
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 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1613 Sig('-s', dest='spam', action=OptionalAction,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1614 type=float, default=0.25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1615 Sig('badger', action=PositionalAction,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1616 type=int, nargs='?', default=2),
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 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1619 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1620 ('-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
1621 ('42', NS(spam=0.25, badger=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1622 ('-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
1623 ('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
1624 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1625
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 class TestActionRegistration(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1628 """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
1629
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1630 class MyAction(argparse.Action):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1631
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1632 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
1633 setattr(namespace, self.dest, 'foo[%s]' % values)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1634
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1635 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1636
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1637 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1638 parser.register('action', 'my_action', self.MyAction)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1639 parser.add_argument('badger', action='my_action')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1640
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1641 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
1642 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
1643
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1644
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1645 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1646 # Subparsers tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1649 class TestAddSubparsers(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1650 """Test the add_subparsers method"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1651
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1652 def assertArgumentParserError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1653 self.assertRaises(ArgumentParserError, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1654
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1655 def _get_parser(self, subparser_help=False):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1656 # create a parser with a subparsers argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1657 parser = ErrorRaisingArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1658 prog='PROG', description='main description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1659 parser.add_argument(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1660 '--foo', action='store_true', help='foo help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1661 parser.add_argument(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1662 'bar', type=float, help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1663
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1664 # check that only one subparsers argument can be added
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1665 subparsers = parser.add_subparsers(help='command help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1666 self.assertArgumentParserError(parser.add_subparsers)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1667
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1668 # add first sub-parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1669 parser1_kwargs = dict(description='1 description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1670 if subparser_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1671 parser1_kwargs['help'] = '1 help'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1672 parser1 = subparsers.add_parser('1', **parser1_kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1673 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
1674 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
1675
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1676 # add second sub-parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1677 parser2_kwargs = dict(description='2 description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1678 if subparser_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1679 parser2_kwargs['help'] = '2 help'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1680 parser2 = subparsers.add_parser('2', **parser2_kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1681 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
1682 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
1683
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1684 # return the main parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1685 return parser
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 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1688 self.parser = self._get_parser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1689 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
1690
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1691 def test_parse_args_failures(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1692 # check some failure cases:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1693 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
1694 '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
1695 args = args_str.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1696 self.assertArgumentParserError(self.parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1697
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1698 def test_parse_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1699 # check some non-failure cases:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1700 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1701 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
1702 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
1703 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1704 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1705 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
1706 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
1707 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1708 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1709 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
1710 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
1711 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1712
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1713 def test_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1714 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1715 parser.add_argument('--foo', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1716 subparsers = parser.add_subparsers(dest='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1717 parser1 = subparsers.add_parser('1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1718 parser1.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1719 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
1720 parser.parse_args('1 2'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1721
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1722 def test_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1723 self.assertEqual(self.parser.format_usage(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1724 '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
1725 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
1726 usage: PROG [-h] [--foo] bar {1,2} ...
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1727
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1728 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1729
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1730 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1731 bar bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1732 {1,2} command help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1733
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1734 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1735 -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
1736 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1737 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1738
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1739 def test_parser_command_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1740 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
1741 '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
1742 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
1743 textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1744 usage: PROG [-h] [--foo] bar {1,2} ...
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1745
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1746 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1747
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1748 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1749 bar bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1750 {1,2} command help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1751 1 1 help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1752 2 2 help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1753
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1754 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1755 -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
1756 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1757 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1758
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1759 def test_subparser_title_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1760 parser = ErrorRaisingArgumentParser(prog='PROG',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1761 description='main description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1762 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
1763 parser.add_argument('bar', help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1764 subparsers = parser.add_subparsers(title='subcommands',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1765 description='command help',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1766 help='additional text')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1767 parser1 = subparsers.add_parser('1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1768 parser2 = subparsers.add_parser('2')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1769 self.assertEqual(parser.format_usage(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1770 '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
1771 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1772 usage: PROG [-h] [--foo] bar {1,2} ...
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1773
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1774 main description
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1777 bar bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1778
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1779 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1780 -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
1781 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1782
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1783 subcommands:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1784 command help
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 {1,2} additional text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1787 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1788
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1789 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
1790 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1791 self.parser.parse_args(args_str.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1792 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1793 err = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1794 if err.stdout != expected_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1795 print(repr(expected_help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1796 print(repr(err.stdout))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1797 self.assertEqual(err.stdout, expected_help)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1798
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1799 def test_subparser1_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1800 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
1801 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
1802
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1803 1 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1804
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1805 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1806 {a,b,c} x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1807
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1808 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1809 -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
1810 -w W w help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1811 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1812
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1813 def test_subparser2_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1814 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
1815 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
1816
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1817 2 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1818
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1819 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1820 z z help
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1823 -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
1824 -y {1,2,3} y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1825 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1826
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 # Groups tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1831 class TestPositionalsGroups(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1832 """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
1833
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1834 def test_nongroup_first(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1835 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1836 parser.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1837 group = parser.add_argument_group('g')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1838 group.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1839 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1840 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
1841 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
1842 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1843
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1844 def test_group_first(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1845 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1846 group = parser.add_argument_group('xxx')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1847 group.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1848 parser.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1849 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1850 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
1851 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
1852 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1853
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1854 def test_interleaved_groups(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1855 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1856 group = parser.add_argument_group('xxx')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1857 parser.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1858 group.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1859 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1860 group = parser.add_argument_group('yyy')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1861 group.add_argument('frell')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1862 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
1863 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
1864 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1865
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1866 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1867 # Parent parser tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1868 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1869
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1870 class TestParentParsers(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1871 """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
1872
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1873 def assertArgumentParserError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1874 self.assertRaises(ArgumentParserError, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1875
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1876 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1877 self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1878 self.wxyz_parent.add_argument('--w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1879 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
1880 x_group.add_argument('-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1881 self.wxyz_parent.add_argument('z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1882
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1883 self.abcd_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1884 self.abcd_parent.add_argument('a')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1885 self.abcd_parent.add_argument('-b')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1886 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
1887 c_group.add_argument('--d')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1888
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1889 self.w_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1890 self.w_parent.add_argument('--w')
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 self.z_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1893 self.z_parent.add_argument('z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1894
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1895 # parents with mutually exclusive groups
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1896 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
1897 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
1898 group.add_argument('-a', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1899 group.add_argument('-b', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1900
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1901 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
1902
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1903 def test_single_parent(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1904 parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1905 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
1906 NS(w='3', y='1', z='2'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1907
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1908 def test_single_parent_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1909 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
1910 parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1911 self._test_mutex_ab(parser.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1912
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1913 def test_single_granparent_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1914 parents = [self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1915 parser = ErrorRaisingArgumentParser(add_help=False, parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1916 parser = ErrorRaisingArgumentParser(parents=[parser])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1917 self._test_mutex_ab(parser.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1918
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1919 def _test_mutex_ab(self, parse_args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1920 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
1921 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
1922 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
1923 self.assertArgumentParserError(parse_args, ['-a', '-b'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1924 self.assertArgumentParserError(parse_args, ['-b', '-a'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1925 self.assertArgumentParserError(parse_args, ['-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1926 self.assertArgumentParserError(parse_args, ['-a', '-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1927 self.assertArgumentParserError(parse_args, ['-b', '-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1928
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1929 def test_multiple_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1930 parents = [self.abcd_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1931 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1932 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
1933 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
1934
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1935 def test_multiple_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1936 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
1937 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1938 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
1939 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
1940 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1941 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
1942 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1943 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
1944
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1945 def test_conflicting_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1946 self.assertRaises(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1947 argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1948 argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1949 parents=[self.w_parent, self.wxyz_parent])
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_conflicting_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1952 self.assertRaises(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1953 argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1954 argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1955 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
1956
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1957 def test_same_argument_name_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1958 parents = [self.wxyz_parent, self.z_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1959 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1960 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
1961 NS(w=None, y=None, z='2'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1962
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1963 def test_subparser_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1964 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1965 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1966 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
1967 abcde_parser.add_argument('e')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1968 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
1969 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
1970
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1971 def test_subparser_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1972 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1973 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1974 parents = [self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1975 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
1976 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
1977 c_group.add_argument('c')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1978 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
1979 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
1980 wxyzabe_parser.add_argument('e')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1981 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
1982 NS(a=True, b=False, c='4'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1983 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
1984 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
1985 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1986 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
1987 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1988 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
1989
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1990 def test_parent_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1991 parents = [self.abcd_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1992 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1993 parser_help = parser.format_help()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1994 self.assertEqual(parser_help, textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1995 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
1996
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1997 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1998 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1999 z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2000
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2001 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2002 -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
2003 -b B
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2004 --w W
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 c:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2007 --d D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2008
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2009 x:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2010 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2011 '''.format(self.main_program)))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2012
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2013 def test_groups_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2014 parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2015 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
2016 g.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2017 g.add_argument('-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2018 m = parent.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2019 m.add_argument('-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2020 m.add_argument('-z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2021 parser = ErrorRaisingArgumentParser(parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2022
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2023 self.assertRaises(ArgumentParserError, parser.parse_args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2024 ['-y', 'Y', '-z', 'Z'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2025
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2026 parser_help = parser.format_help()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2027 self.assertEqual(parser_help, textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2028 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
2029
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2030 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2031 -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
2032 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2033 -z Z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2034
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2035 g:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2036 gd
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2037
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2038 -w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2039 -x X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2040 '''.format(self.main_program)))
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 # Mutually exclusive group 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 TestMutuallyExclusiveGroupErrors(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2047
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2048 def test_invalid_add_argument_group(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2049 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2050 raises = self.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2051 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
2052
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2053 def test_invalid_add_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2054 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2055 group = parser.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2056 add_argument = group.add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2057 raises = self.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2058 raises(ValueError, add_argument, '--foo', required=True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2059 raises(ValueError, add_argument, 'bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2060 raises(ValueError, add_argument, 'bar', nargs='+')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2061 raises(ValueError, add_argument, 'bar', nargs=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2062 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
2063
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2064
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2065 class MEMixin(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2066
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2067 def test_failures_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2068 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
2069 error = ArgumentParserError
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2070 for args_string in self.failures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2071 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
2072
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2073 def test_failures_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2074 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
2075 error = ArgumentParserError
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2076 for args_string in self.failures + ['']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2077 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
2078
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2079 def test_successes_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2080 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
2081 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
2082 for args_string, expected_ns in successes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2083 actual_ns = parse_args(args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2084 self.assertEqual(actual_ns, expected_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2085
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2086 def test_successes_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2087 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
2088 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
2089 actual_ns = parse_args(args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2090 self.assertEqual(actual_ns, expected_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2091
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2092 def test_usage_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2093 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
2094 expected_usage = self.usage_when_not_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2095 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
2096
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2097 def test_usage_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2098 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
2099 expected_usage = self.usage_when_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2100 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
2101
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2102 def test_help_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2103 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
2104 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
2105 self.assertEqual(format_help(), textwrap.dedent(help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2106
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2107 def test_help_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2108 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
2109 help = self.usage_when_required + self.help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2110 self.assertEqual(format_help(), textwrap.dedent(help))
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2113 class TestMutuallyExclusiveSimple(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2114
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2115 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2116 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2117 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
2118 group.add_argument('--bar', help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2119 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
2120 return parser
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 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
2123 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2124 ('--bar X', NS(bar='X', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2125 ('--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
2126 ('--baz Y', NS(bar=None, baz='Y')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2127 ('--baz', NS(bar=None, baz='Z')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2128 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2129 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2130 ('', NS(bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2131 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2132
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2133 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2134 usage: PROG [-h] [--bar BAR | --baz [BAZ]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2135 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2136 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2137 usage: PROG [-h] (--bar BAR | --baz [BAZ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2138 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2139 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2140
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2141 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2142 -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
2143 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2144 --baz [BAZ] baz help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2145 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2146
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 class TestMutuallyExclusiveLong(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2149
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2150 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2151 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2152 parser.add_argument('--abcde', help='abcde help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2153 parser.add_argument('--fghij', help='fghij help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2154 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
2155 group.add_argument('--klmno', help='klmno help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2156 group.add_argument('--pqrst', help='pqrst help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2157 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2158
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2159 failures = ['--klmno X --pqrst Y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2160 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2161 ('--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
2162 ('--abcde Y --klmno X',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2163 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
2164 ('--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
2165 ('--pqrst X --fghij Y',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2166 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
2167 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2168 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2169 ('', 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
2170 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2171
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2172 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2173 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2174 [--klmno KLMNO | --pqrst PQRST]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2175 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2176 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2177 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2178 (--klmno KLMNO | --pqrst PQRST)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2179 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2180 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2181
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2182 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2183 -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
2184 --abcde ABCDE abcde help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2185 --fghij FGHIJ fghij help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2186 --klmno KLMNO klmno help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2187 --pqrst PQRST pqrst help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2188 '''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2191 class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2192
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2193 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2194 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2195 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
2196 group.add_argument('-x', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2197 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
2198 return parser
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 failures = ['-x X -y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2201 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2202 ('-x X', NS(x='X', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2203 ('-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
2204 ('-y', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2205 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2206 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2207 ('', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2208 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2209
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2210 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2211 usage: PROG [-h] [-y]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2212 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2213 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2214 usage: PROG [-h] -y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2215 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2216 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2217
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2218 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2219 -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
2220 -y y help
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2224 class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2225
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2226 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2227 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2228 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
2229 add = group.add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2230 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
2231 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
2232 add('--bladder', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2233 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2234
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2235 failures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2236 '--spam --badger',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2237 '--badger --bladder B',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2238 '--bladder B --spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2239 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2240 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2241 ('--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
2242 ('--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
2243 ('--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
2244 ('--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
2245 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2246 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2247 ('', NS(spam=False, badger=True, bladder=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2248 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2249
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2250 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2251 usage: PROG [-h]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2252 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2253 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2254
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2255 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2256 -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
2257 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2258
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2259
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2260 class TestMutuallyExclusiveOptionalAndPositional(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2261
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2262 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2263 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2264 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
2265 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
2266 group.add_argument('--spam', help='SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2267 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
2268 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2269
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2270 failures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2271 '--foo --spam S',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2272 '--spam S X',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2273 'X --foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2274 'X Y Z --spam S',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2275 '--foo X Y',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2276 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2277 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2278 ('--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
2279 ('--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
2280 ('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
2281 ('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
2282 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2283 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2284 ('', NS(foo=False, spam=None, badger='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2285 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2286
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2287 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2288 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
2289 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2290 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2291 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
2292 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2293 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2294
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2295 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2296 badger BADGER
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2299 -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
2300 --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2301 --spam SPAM SPAM
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2304
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2305 class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2306
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2307 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2308 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2309 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
2310 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
2311 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
2312 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
2313 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
2314 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
2315 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2316
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2317 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
2318 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2319 ('-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
2320 ('-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
2321 ('-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
2322 ('-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
2323 ('-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
2324 ('-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
2325 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2326 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2327 ('', 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
2328 ('-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
2329 ('-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
2330 ]
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 = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2333 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
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 -x x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2340 -a a help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2341 -b b help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2342 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2343 -c c help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2344 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2345
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2346
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2347 class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2348
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2349 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2350 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2351 parser.add_argument('x', help='x help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2352 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
2353 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
2354 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
2355 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
2356 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
2357 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2358
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2359 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
2360 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2361 ('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
2362 ('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
2363 ('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
2364 ('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
2365 ('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
2366 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2367 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2368 ('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
2369 ('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
2370 ]
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 = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2373 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
2374 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2375 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2376
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2377 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2378 x x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2379 a a help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2380
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2381 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2382 -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
2383 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2384 -b b help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2385 -c c help
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
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 # Mutually exclusive group in parent parser tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2390 # =================================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2391
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2392 class MEPBase(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2393
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2394 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2395 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
2396 parser = ErrorRaisingArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2397 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
2398 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2399
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2400
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2401 class TestMutuallyExclusiveGroupErrorsParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2402 MEPBase, TestMutuallyExclusiveGroupErrors):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2403 pass
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 class TestMutuallyExclusiveSimpleParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2407 MEPBase, TestMutuallyExclusiveSimple):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2408 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2409
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2410
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2411 class TestMutuallyExclusiveLongParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2412 MEPBase, TestMutuallyExclusiveLong):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2413 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2414
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2415
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2416 class TestMutuallyExclusiveFirstSuppressedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2417 MEPBase, TestMutuallyExclusiveFirstSuppressed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2418 pass
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2421 class TestMutuallyExclusiveManySuppressedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2422 MEPBase, TestMutuallyExclusiveManySuppressed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2423 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2424
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2425
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2426 class TestMutuallyExclusiveOptionalAndPositionalParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2427 MEPBase, TestMutuallyExclusiveOptionalAndPositional):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2428 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2429
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 class TestMutuallyExclusiveOptionalsMixedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2432 MEPBase, TestMutuallyExclusiveOptionalsMixed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2433 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2434
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 class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2437 MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2438 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2439
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2440 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2441 # Set default tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2442 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2443
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2444 class TestSetDefaults(TestCase):
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 def test_set_defaults_no_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2447 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2448 parser.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2449 parser.set_defaults(y='bar', z=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2450 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
2451 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2452 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
2453 parser.parse_args([], NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2454 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
2455 parser.parse_args([], NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2456 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
2457 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
2458
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2459 def test_set_defaults_with_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2460 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2461 parser.set_defaults(x='foo', y='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2462 parser.add_argument('-x', default='xfoox')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2463 self.assertEqual(NS(x='xfoox', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2464 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2465 self.assertEqual(NS(x='xfoox', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2466 parser.parse_args([], NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2467 self.assertEqual(NS(x='baz', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2468 parser.parse_args([], NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2469 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2470 parser.parse_args('-x 1'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2471 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2472 parser.parse_args('-x 1'.split(), NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2473 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2474 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
2475
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2476 def test_set_defaults_subparsers(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2477 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2478 parser.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2479 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2480 parser_a = subparsers.add_parser('a')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2481 parser_a.set_defaults(y='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2482 self.assertEqual(NS(x='foo', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2483 parser.parse_args('a'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2484
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2485 def test_set_defaults_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2486 parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2487 parent.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2488 parser = ErrorRaisingArgumentParser(parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2489 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
2490
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2491 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
2492 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2493 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
2494 parser.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2495 parser.add_argument('-x', default='XX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2496 parser.add_argument('y', nargs='?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2497 parser.add_argument('z', nargs='?', default='ZZ')
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 # defaults set previously
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2500 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
2501 parser.parse_args([]))
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 # reset defaults
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2504 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
2505 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
2506 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2507
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2508 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
2509 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2510 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
2511 group = parser.add_argument_group('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2512 group.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2513 group.add_argument('-x', default='XX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2514 group.add_argument('y', nargs='?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2515 group.add_argument('z', nargs='?', default='ZZ')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2516
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2517
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2518 # defaults set previously
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2519 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
2520 parser.parse_args([]))
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 # reset defaults
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2523 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
2524 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
2525 parser.parse_args([]))
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 # Get default tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2529 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2530
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2531 class TestGetDefault(TestCase):
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 def test_get_default(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2534 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2535 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2536 self.assertEqual(None, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2537
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2538 parser.add_argument("--foo")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2539 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2540 self.assertEqual(None, parser.get_default("bar"))
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 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
2543 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2544 self.assertEqual(42, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2545
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2546 parser.set_defaults(foo="badger")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2547 self.assertEqual("badger", parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2548 self.assertEqual(42, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2549
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2550 # ==========================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2551 # Namespace 'contains' tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2552 # ==========================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2553
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2554 class TestNamespaceContainsSimple(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2555
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2556 def test_empty(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2557 ns = argparse.Namespace()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2558 self.assertEquals('' in ns, False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2559 self.assertEquals('' not in ns, True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2560 self.assertEquals('x' in ns, False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2561
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2562 def test_non_empty(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2563 ns = argparse.Namespace(x=1, y=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2564 self.assertEquals('x' in ns, True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2565 self.assertEquals('x' not in ns, False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2566 self.assertEquals('y' in ns, True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2567 self.assertEquals('' in ns, False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2568 self.assertEquals('xx' in ns, False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2569 self.assertEquals('z' in ns, False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2570
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2571 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2572 # Help formatting tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2573 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2574
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2575 class TestHelpFormattingMetaclass(type):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2576
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2577 def __init__(cls, name, bases, bodydict):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2578 if name == 'HelpTestCase':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2579 return
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2580
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2581 class AddTests(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2582
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2583 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
2584 self.func_suffix = func_suffix
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2585 self.std_name = std_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2586
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2587 for test_func in [self.test_format,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2588 self.test_print,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2589 self.test_print_file]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2590 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
2591
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2592 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
2593 test_func(self)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2594 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2595 test_wrapper.__name__ = test_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2596 except TypeError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2597 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2598 setattr(test_class, test_name, test_wrapper)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2599
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2600 def _get_parser(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2601 parser = argparse.ArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2602 *tester.parser_signature.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2603 **tester.parser_signature.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2604 for argument_sig in tester.argument_signatures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2605 parser.add_argument(*argument_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2606 **argument_sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2607 group_signatures = tester.argument_group_signatures
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2608 for group_sig, argument_sigs in group_signatures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2609 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
2610 **group_sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2611 for argument_sig in argument_sigs:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2612 group.add_argument(*argument_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2613 **argument_sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2614 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2615
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2616 def _test(self, tester, parser_text):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2617 expected_text = getattr(tester, self.func_suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2618 expected_text = textwrap.dedent(expected_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2619 if expected_text != parser_text:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2620 print(repr(expected_text))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2621 print(repr(parser_text))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2622 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
2623 if char1 != char2:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2624 print('first diff: %r %r' % (char1, char2))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2625 break
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2626 tester.assertEqual(expected_text, parser_text)
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 def test_format(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2629 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2630 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
2631 self._test(tester, format())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2632
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2633 def test_print(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2634 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2635 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
2636 old_stream = getattr(sys, self.std_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2637 setattr(sys, self.std_name, StringIO())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2638 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2639 print_()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2640 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
2641 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2642 setattr(sys, self.std_name, old_stream)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2643 self._test(tester, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2644
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2645 def test_print_file(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2646 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2647 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
2648 sfile = StringIO()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2649 print_(sfile)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2650 parser_text = sfile.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2651 self._test(tester, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2652
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2653 # 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
2654 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
2655 ('help', 'stdout'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2656 ('version', 'stderr')]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2657 AddTests(cls, func_suffix, std_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2658
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2659 bases = TestCase,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2660 HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {})
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2663 class TestHelpBiggerOptionals(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2664 """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
2665
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2666 parser_signature = Sig(prog='PROG', description='DESCRIPTION',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2667 epilog='EPILOG', version='0.1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2668 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2669 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
2670 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2671 Sig('foo', help='FOO HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2672 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2673 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2674 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2675 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2676 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
2677 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2678 help = usage + '''\
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 DESCRIPTION
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2683 foo FOO HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2684 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2685
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2686 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2687 -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
2688 -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
2689 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2690 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2691
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2692 EPILOG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2693 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2694 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2695 0.1
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2696 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2697
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2698
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2699 class TestHelpBiggerOptionalGroups(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2700 """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
2701
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2702 parser_signature = Sig(prog='PROG', description='DESCRIPTION',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2703 epilog='EPILOG', version='0.1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2704 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2705 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
2706 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2707 Sig('foo', help='FOO HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2708 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2709 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2710 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2711 (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2712 Sig('baz', help='BAZ HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2713 Sig('-z', nargs='+', help='Z HELP')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2714 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2715 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2716 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
2717 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2718 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2719
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2720 DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2721
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2722 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2723 foo FOO HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2724 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2725
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2726 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2727 -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
2728 -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
2729 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2730 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2731
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2732 GROUP TITLE:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2733 GROUP DESCRIPTION
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 baz BAZ HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2736 -z Z [Z ...] Z HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2737
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2738 EPILOG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2739 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2740 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2741 0.1
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2742 '''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2745 class TestHelpBiggerPositionals(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2746 """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
2747
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2748 parser_signature = Sig(usage='USAGE', description='DESCRIPTION')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2749 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2750 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
2751 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2752 Sig('ekiekiekifekang', help='EKI HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2753 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2754 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2755 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2756 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2757 usage: USAGE
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2758 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2759 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2760
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2761 DESCRIPTION
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2764 ekiekiekifekang EKI HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2765 bar BAR HELP
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2768 -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
2769 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2770 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2771 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2772
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2773 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2774
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2775
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2776 class TestHelpReformatting(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2777 """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
2778
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2779 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2780 prog='PROG',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2781 description=' oddly formatted\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2782 'description\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2783 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2784 '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
2785 'lines when wrapped')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2786 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2787 Sig('-x', metavar='XX', help='oddly\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2788 ' formatted -x help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2789 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
2790 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2791 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2792 (Sig('title', description='\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2793 ' oddly formatted group\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2794 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2795 'description'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2796 [Sig('-a', action='store_true',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2797 help=' oddly \n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2798 'formatted -a help \n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2799 ' 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
2800 'multiple lines')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2801 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2802 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2803 usage: PROG [-h] [-x XX] [-a] yyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2804 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2805 help = usage + '''\
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 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
2808 multiple
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2809 lines when wrapped
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2812 yyy normal y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2813
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2814 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2815 -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
2816 -x XX oddly formatted -x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2817
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2818 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2819 oddly formatted group description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2820
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2821 -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
2822 be wrapped
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2823 over multiple lines
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2824 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2825 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2826
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 class TestHelpWrappingShortNames(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2829 """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
2830
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2831 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
2832 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2833 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
2834 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
2835 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2836 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2837 (Sig('ALPHAS'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2838 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
2839 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2840 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2841 usage: PROG [-h] [-x XX] [-a] yyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2842 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2843 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2844
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2845 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
2846 DD DD DD
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2847 DD DD DD DD D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2848
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2849 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2850 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
2851 YHYH YHYH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2852 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
2853
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2854 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2855 -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
2856 -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
2857 HXXHH HXXHH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2858 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
2859
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2860 ALPHAS:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2861 -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
2862 HHAAHHH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2863 HHAAHHH HHAAHHH HHA
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2864 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2865 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2866
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2867
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2868 class TestHelpWrappingLongNames(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2869 """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
2870
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2871 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
2872 version='V V'*30)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2873 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2874 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
2875 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
2876 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2877 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2878 (Sig('ALPHAS'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2879 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
2880 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
2881 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2882 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2883 usage: USAGE
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2884 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2885 help = usage + '''\
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 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
2888 DD DD DD
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2889 DD DD DD DD D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2890
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2891 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2892 yyyyyyyyyyyyyyyyyyyyyyyyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2893 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
2894 YHYH YHYH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2895 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
2896
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2897 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2898 -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
2899 -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
2900 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2901 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
2902 XHXH XHXH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2903 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
2904
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2905 ALPHAS:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2906 -a AAAAAAAAAAAAAAAAAAAAAAAAA
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2907 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
2908 AHAH AHAH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2909 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
2910 zzzzzzzzzzzzzzzzzzzzzzzzz
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2911 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
2912 ZHZH ZHZH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2913 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
2914 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2915 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2916 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
2917 VV VV VV
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2918 VV VV VV VV V
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
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 class TestHelpUsage(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2923 """Test basic usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2924
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2925 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2926 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2927 Sig('-w', nargs='+', help='w'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2928 Sig('-x', nargs='*', help='x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2929 Sig('a', help='a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2930 Sig('b', help='b', nargs=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2931 Sig('c', help='c', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2932 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2933 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2934 (Sig('group'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2935 Sig('-y', nargs='?', help='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2936 Sig('-z', nargs=3, help='z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2937 Sig('d', help='d', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2938 Sig('e', help='e', nargs='+'),
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 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2942 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
2943 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
2944 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2945 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2946
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2947 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2948 a a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2949 b b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2950 c c
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2953 -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
2954 -w W [W ...] w
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2955 -x [X [X ...]] x
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 group:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2958 -y [Y] y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2959 -z Z Z Z z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2960 d d
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2961 e e
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2962 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2963 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2964
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2965
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2966 class TestHelpOnlyUserGroups(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2967 """Test basic usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2968
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2969 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
2970 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2971 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2972 (Sig('xxxx'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2973 Sig('-x', help='x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2974 Sig('a', help='a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2975 ]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2976 (Sig('yyyy'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2977 Sig('b', help='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2978 Sig('-y', help='y'),
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 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2981 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2982 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
2983 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2984 help = usage + '''\
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 xxxx:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2987 -x X x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2988 a a
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 yyyy:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2991 b b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2992 -y Y y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2993 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2994 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2995
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 class TestHelpUsageLongProg(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2998 """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
2999
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3000 parser_signature = Sig(prog='P' * 60)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3001 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3002 Sig('-w', metavar='W'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3003 Sig('-x', metavar='X'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3004 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3005 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3006 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3007 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3008 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3009 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3010 [-h] [-w W] [-x X] a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3011 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3012 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3015 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3016 b
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3019 -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
3020 -w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3021 -x X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3022 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3023 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3024
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3025
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3026 class TestHelpUsageLongProgOptionsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3027 """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
3028
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3029 parser_signature = Sig(prog='P' * 60)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3030 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3031 Sig('-w', metavar='W' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3032 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3033 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3034 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3035 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3036 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3037 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3038 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3039 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3040 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3041 [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3042 [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3043 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3044 a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3045 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3046 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3047
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3048 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3049 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3050 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3051
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3052 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3053 -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
3054 -w WWWWWWWWWWWWWWWWWWWWWWWWW
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3055 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3056 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3057 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3058 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3059 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3060
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3061
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3062 class TestHelpUsageLongProgPositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3063 """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
3064
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3065 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
3066 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3067 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3068 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3069 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3070 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3071 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3072 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3073 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3074 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3075 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3076 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3077 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3078
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3079 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3080 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3081 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3082 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3083 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3084 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3085
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3086
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3087 class TestHelpUsageOptionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3088 """Test usage messages where the optionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3089
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3090 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3091 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3092 Sig('-w', metavar='W' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3093 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3094 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3095 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3096 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3097 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3098 Sig('c'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3099 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3100 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3101 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3102 usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3103 [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3104 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3105 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3106 a b c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3107 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3108 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3111 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3112 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3113 c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3114
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3115 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3116 -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
3117 -w WWWWWWWWWWWWWWWWWWWWWWWWW
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3118 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3119 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3120 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3121 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3122 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3125 class TestHelpUsagePositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3126 """Test usage messages where the positionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3127
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3128 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3129 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3130 Sig('-x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3131 Sig('-y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3132 Sig('-z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3133 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3134 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3135 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3136 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3137 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3138 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3139 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
3140 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3141 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3142 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3143 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3144
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3145 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3146 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3147 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3148 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3149
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3150 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3151 -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
3152 -x X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3153 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3154 -z Z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3155 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3156 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3157
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3158
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3159 class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3160 """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
3161
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3162 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3163 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3164 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3165 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3166 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3167 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3168 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3169 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3170 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3171 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3172 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3173 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3174 [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3175 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3176 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3177 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3178 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3179 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3180
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3181 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3182 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3183 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3184 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3185
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3186 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3187 -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
3188 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3189 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3190 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3191 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3192 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3195 class TestHelpUsageOptionalsOnlyWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3196 """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
3197
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3198 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3199 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3200 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3201 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3202 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3203 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3204 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3205 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3206 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3207 [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3208 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3209 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3210 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3211
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3212 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3213 -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
3214 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3215 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3216 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3219
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3220
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3221 class TestHelpUsagePositionalsOnlyWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3222 """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
3223
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3224 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
3225 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3226 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3227 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3228 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3229 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3230 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3231 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3232 usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3233 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3234 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3235 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3236
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3237 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3238 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3239 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3240 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3241 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3242 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3243
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3244
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3245 class TestHelpVariableExpansion(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3246 """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
3247
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3248 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3249 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3250 Sig('-x', type=int,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3251 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
3252 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
3253 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
3254 Sig('--foo', choices='abc',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3255 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
3256 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
3257 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
3258 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
3259 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
3260 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3261 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3262 (Sig('group'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3263 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
3264 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
3265 ])
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 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3268 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
3269 spam badger
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3272
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3273 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3274 spam spam PROG None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3275 badger badger PROG 0.5
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3276
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3277 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3278 -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
3279 -x X x PROG None int %
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3280 -y y PROG 42 XXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3281 --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
3282 --bar BBB bar PROG baz bar
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3283
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3284 group:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3285 -a A a PROG None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3286 -b B b PROG -1
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 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3291 class TestHelpVariableExpansionUsageSupplied(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3292 """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
3293
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3294 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
3295 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3296 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3297 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3298 usage: PROG FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3299 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3300 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3301
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3302 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3303 -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
3304 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3305 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3308 class TestHelpVariableExpansionNoArguments(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3309 """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
3310
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3311 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
3312 argument_signatures = []
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: PROG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3316 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3317 help = usage
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3318 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3319
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 class TestHelpSuppressUsage(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3322 """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
3323
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3324 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
3325 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3326 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3327 Sig('spam', help='spam help'),
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 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3330 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3331 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3332 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3333
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3334 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3335 -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
3336 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3337 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3338 usage = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3339 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3340
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3341
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3342 class TestHelpSuppressOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3343 """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
3344
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3345 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
3346 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3347 Sig('--foo', help=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3348 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3349 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3350 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3351 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3352 usage: PROG spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3353 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3354 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3355
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3356 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3357 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3358 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3359 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3360
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3361
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3362 class TestHelpSuppressOptionalGroup(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3363 """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
3364
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3365 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3366 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3367 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3368 Sig('spam', help='spam help'),
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 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3371 (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3372 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3373 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3374 usage: PROG [-h] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3375 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3376 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3377
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3378 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3379 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3380
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3381 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3382 -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
3383 --foo FOO foo help
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 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3388 class TestHelpSuppressPositional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3389 """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
3390
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3391 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3392 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3393 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3394 Sig('spam', help=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3395 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3396 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3397 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3398 usage: PROG [-h] [--foo FOO]
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3401
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3402 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3403 -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
3404 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3405 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3406 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3407
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3408
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3409 class TestHelpRequiredOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3410 """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
3411
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3412 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3413 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3414 Sig('--foo', required=True, help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3415 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3416 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3417 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3418 usage: PROG [-h] --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3419 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3420 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3421
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3422 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3423 -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
3424 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3425 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3426 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3429 class TestHelpAlternatePrefixChars(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3430 """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
3431
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3432 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
3433 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3434 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
3435 Sig(';b', ';;bar', help='bar help'),
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 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3438 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3439 usage: PROG [^^foo] [;b BAR]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3440 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3441 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3442
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3443 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3444 ^^foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3445 ;b BAR, ;;bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3446 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3447 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3448
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3449
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3450 class TestHelpNoHelpOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3451 """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
3452
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3453 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
3454 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3455 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3456 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3457 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3458 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3459 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3460 usage: PROG [--foo FOO] spam
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3463
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3464 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3465 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3466
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3467 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3468 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3469 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3470 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3473 class TestHelpVersionOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3474 """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
3475
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3476 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
3477 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3478 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3479 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3480 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3481 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3482 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3483 usage: PROG [-h] [-v] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3484 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3485 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3488 spam spam help
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3491 -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
3492 -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
3493 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3494 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3495 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3496 1.0
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3497 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3498
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3499
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3500 class TestHelpNone(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3501 """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
3502
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3503 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3504 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3505 Sig('--foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3506 Sig('spam'),
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 argument_group_signatures = []
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] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3511 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3512 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3513
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3514 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3515 spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3516
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3517 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3518 -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
3519 --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3520 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3521 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3522
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3523
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3524 class TestHelpTupleMetavar(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3525 """Test specifying metavar as a tuple"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3526
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3527 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3528 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3529 Sig('-w', help='w', nargs='+', metavar=('W1', 'W2')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3530 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
3531 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
3532 Sig('-z', help='z', nargs='?', metavar=('Z1', )),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3533 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3534 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3535 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3536 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
3537 [-z [Z1]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3538 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3539 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3540
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3541 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3542 -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
3543 -w W1 [W2 ...] w
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3544 -x [X1 [X2 ...]] x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3545 -y Y1 Y2 Y3 y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3546 -z [Z1] z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3547 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3548 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3551 class TestHelpRawText(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3552 """Test the RawTextHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3553
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3554 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3555 prog='PROG', formatter_class=argparse.RawTextHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3556 description='Keep the formatting\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3557 ' exactly as it is written\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3558 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3559 'here\n')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3560
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3561 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3562 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
3563 'appear as given here'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3564 Sig('spam', help='spam help'),
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 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3567 (Sig('title', description=' This text\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3568 ' should be indented\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3569 ' exactly like it is here\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3570 [Sig('--bar', help='bar help')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3571 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3572 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3573 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
3574 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3575 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3576
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3577 Keep the formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3578 exactly as it is written
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 here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3581
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3582 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3583 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3584
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3585 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3586 -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
3587 --foo FOO foo help should also
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3588 appear as given here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3589
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3590 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3591 This text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3592 should be indented
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3593 exactly like it is here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3594
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3595 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3596 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3597 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3598
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3599
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3600 class TestHelpRawDescription(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3601 """Test the RawTextHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3602
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3603 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3604 prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3605 description='Keep the formatting\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3606 ' exactly as it is written\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3607 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3608 'here\n')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3609
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3610 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3611 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
3612 ' retain this odd formatting'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3613 Sig('spam', help='spam help'),
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 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3616 (Sig('title', description=' This text\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3617 ' should be indented\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3618 ' exactly like it is here\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3619 [Sig('--bar', help='bar help')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3620 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3621 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3622 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
3623 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3624 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3625
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3626 Keep the formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3627 exactly as it is written
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 here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3630
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3631 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3632 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3633
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3634 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3635 -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
3636 --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
3637
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3638 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3639 This text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3640 should be indented
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3641 exactly like it is here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3642
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3643 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3644 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3645 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3646
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 class TestHelpArgumentDefaults(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3649 """Test the ArgumentDefaultsHelpFormatter"""
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 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3652 prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3653 description='description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3654
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3655 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3656 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
3657 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
3658 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3659 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
3660 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3661 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3662 (Sig('title', description='description'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3663 [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
3664 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3665 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3666 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
3667 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3668 help = usage + '''\
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 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3671
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3672 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3673 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3674 badger badger help (default: wooden)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3675
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3676 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3677 -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
3678 --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
3679 --bar bar help (default: False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3680
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3681 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3682 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3683
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3684 --baz BAZ baz help (default: 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3685 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3686 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3687
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3688 # =====================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3689 # Optional/Positional constructor tests
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 TestInvalidArgumentConstructors(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3693 """Test a bunch of invalid Argument constructors"""
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 def assertTypeError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3696 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3697 self.assertRaises(TypeError, parser.add_argument,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3698 *args, **kwargs)
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 def assertValueError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3701 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3702 self.assertRaises(ValueError, parser.add_argument,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3703 *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3704
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3705 def test_invalid_keyword_arguments(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3706 self.assertTypeError('-x', bar=None)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3707 self.assertTypeError('-y', callback='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3708 self.assertTypeError('-y', callback_args=())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3709 self.assertTypeError('-y', callback_kwargs={})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3710
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3711 def test_missing_destination(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3712 self.assertTypeError()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3713 for action in ['append', 'store']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3714 self.assertTypeError(action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3715
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3716 def test_invalid_option_strings(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3717 self.assertValueError('--')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3718 self.assertValueError('---')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3719
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3720 def test_invalid_type(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3721 self.assertValueError('--foo', type='int')
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 def test_invalid_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3724 self.assertValueError('-x', action='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3725 self.assertValueError('foo', action='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3726 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3727 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3728 parser.add_argument("--foo", action="store-true")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3729 except ValueError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3730 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3731 expected = 'unknown action'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3732 msg = 'expected %r, found %r' % (expected, e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3733 self.assertTrue(expected in str(e), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3734
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3735 def test_multiple_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3736 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3737 parser.add_argument(dest='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3738 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3739 parser.add_argument('bar', dest='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3740 except ValueError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3741 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3742 expected = 'dest supplied twice for positional argument'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3743 msg = 'expected %r, found %r' % (expected, e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3744 self.assertTrue(expected in str(e), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3745
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3746 def test_no_argument_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3747 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
3748 'append_const', 'count']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3749 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
3750 dict(choices='ab')]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3751 self.assertTypeError('-x', action=action, **attrs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3752
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3753 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
3754 # options with zero arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3755 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
3756
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3757 # const is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3758 self.assertTypeError('-x', const='foo', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3759
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3760 # nargs is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3761 self.assertTypeError('-x', nargs='*', action=action)
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 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
3764 for action in ['store', 'append']:
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 # nargs=0 is disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3767 self.assertValueError('-x', nargs=0, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3768 self.assertValueError('spam', nargs=0, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3769
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3770 # const is disallowed with non-optional arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3771 for nargs in [1, '*', '+']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3772 self.assertValueError('-x', const='foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3773 nargs=nargs, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3774 self.assertValueError('spam', const='foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3775 nargs=nargs, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3776
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3777 def test_required_const_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3778 for action in ['store_const', 'append_const']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3779
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3780 # nargs is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3781 self.assertTypeError('-x', nargs='+', action=action)
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 def test_parsers_action_missing_params(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3784 self.assertTypeError('command', action='parsers')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3785 self.assertTypeError('command', action='parsers', prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3786 self.assertTypeError('command', action='parsers',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3787 parser_class=argparse.ArgumentParser)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3788
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3789 def test_required_positional(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3790 self.assertTypeError('foo', required=True)
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 def test_user_defined_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3793
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3794 class Success(Exception):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3795 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3796
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3797 class Action(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3798
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3799 def __init__(self,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3800 option_strings,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3801 dest,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3802 const,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3803 default,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3804 required=False):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3805 if dest == 'spam':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3806 if const is Success:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3807 if default is Success:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3808 raise Success()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3809
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3810 def __call__(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3811 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3812
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3813 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3814 self.assertRaises(Success, parser.add_argument, '--spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3815 action=Action, default=Success, const=Success)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3816 self.assertRaises(Success, parser.add_argument, 'spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3817 action=Action, default=Success, const=Success)
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 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3820 # Actions returned by add_argument
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3823 class TestActionsReturned(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3824
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3825 def test_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3826 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3827 action = parser.add_argument('--foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3828 self.assertEqual(action.dest, 'foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3829 action = parser.add_argument('-b', '--bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3830 self.assertEqual(action.dest, 'bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3831 action = parser.add_argument('-x', '-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3832 self.assertEqual(action.dest, 'x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3833
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3834 def test_misc(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3835 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3836 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
3837 default=84, type=int, choices=[1, 2],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3838 help='FOO', metavar='BAR', dest='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3839 self.assertEqual(action.nargs, '?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3840 self.assertEqual(action.const, 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3841 self.assertEqual(action.default, 84)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3842 self.assertEqual(action.type, int)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3843 self.assertEqual(action.choices, [1, 2])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3844 self.assertEqual(action.help, 'FOO')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3845 self.assertEqual(action.metavar, 'BAR')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3846 self.assertEqual(action.dest, 'baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3847
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3848
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3849 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3850 # Argument conflict handling tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3853 class TestConflictHandling(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3854
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3855 def test_bad_type(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3856 self.assertRaises(ValueError, argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3857 conflict_handler='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3858
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3859 def test_conflict_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3860 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3861 parser.add_argument('-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3862 self.assertRaises(argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3863 parser.add_argument, '-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3864 parser.add_argument('--spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3865 self.assertRaises(argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3866 parser.add_argument, '--spam')
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 def test_resolve_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3869 get_parser = argparse.ArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3870 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
3871
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3872 parser.add_argument('-x', help='OLD X')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3873 parser.add_argument('-x', help='NEW X')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3874 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3875 usage: PROG [-h] [-x X]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3876
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3877 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3878 -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
3879 -x X NEW X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3880 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3881
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3882 parser.add_argument('--spam', metavar='OLD_SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3883 parser.add_argument('--spam', metavar='NEW_SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3884 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3885 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
3886
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3887 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3888 -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
3889 -x X NEW X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3890 --spam NEW_SPAM
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3891 '''))
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3894 # =============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3895 # Help and Version option tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3898 class TestOptionalsHelpVersionActions(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3899 """Test the help and version actions"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3900
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3901 def _get_error(self, func, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3902 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3903 func(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3904 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3905 return sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3906 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3907 self.assertRaises(ArgumentParserError, func, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3908
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3909 def assertPrintHelpExit(self, parser, args_str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3910 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3911 parser.format_help(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3912 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
3913
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3914 def assertPrintVersionExit(self, parser, args_str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3915 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3916 parser.format_version(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3917 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
3918
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3919 def assertArgumentParserError(self, parser, *args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3920 self.assertRaises(ArgumentParserError, parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3921
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3922 def test_version(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3923 parser = ErrorRaisingArgumentParser(version='1.0')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3924 self.assertPrintHelpExit(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3925 self.assertPrintHelpExit(parser, '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3926 self.assertPrintVersionExit(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3927 self.assertPrintVersionExit(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3928
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3929 def test_version_format(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3930 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
3931 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
3932 self.assertEqual('PPP 3.5\n', msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3933
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3934 def test_version_no_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3935 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
3936 self.assertArgumentParserError(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3937 self.assertArgumentParserError(parser, '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3938 self.assertPrintVersionExit(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3939 self.assertPrintVersionExit(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3940
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3941 def test_version_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3942 parser = ErrorRaisingArgumentParser(prog='XXX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3943 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
3944 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
3945 self.assertEqual('XXX 3.7\n', msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3946
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3947 def test_no_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3948 parser = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3949 self.assertArgumentParserError(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3950 self.assertArgumentParserError(parser, '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3951 self.assertArgumentParserError(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3952 self.assertArgumentParserError(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3953
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3954 def test_alternate_help_version(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3955 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3956 parser.add_argument('-x', action='help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3957 parser.add_argument('-y', action='version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3958 self.assertPrintHelpExit(parser, '-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3959 self.assertPrintVersionExit(parser, '-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3960 self.assertArgumentParserError(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3961 self.assertArgumentParserError(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3962
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3963 def test_help_version_extra_arguments(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3964 parser = ErrorRaisingArgumentParser(version='1.0')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3965 parser.add_argument('-x', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3966 parser.add_argument('y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3967
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3968 # 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
3969 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
3970 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
3971 for prefix in valid_prefixes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3972 for suffix in valid_suffixes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3973 format = '%s %%s %s' % (prefix, suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3974 self.assertPrintHelpExit(parser, format % '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3975 self.assertPrintHelpExit(parser, format % '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3976 self.assertPrintVersionExit(parser, format % '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3977 self.assertPrintVersionExit(parser, format % '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3978
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3979
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3980 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3981 # str() and repr() tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3982 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3983
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3984 class TestStrings(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3985 """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
3986
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3987 def assertStringEqual(self, obj, result_string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3988 for func in [str, repr]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3989 self.assertEqual(func(obj), result_string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3990
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3991 def test_optional(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3992 option = argparse.Action(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3993 option_strings=['--foo', '-a', '-b'],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3994 dest='b',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3995 type='int',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3996 nargs='+',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3997 default=42,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3998 choices=[1, 2, 3],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3999 help='HELP',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4000 metavar='METAVAR')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4001 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4002 "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
4003 "nargs='+', const=None, default=42, type='int', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4004 "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
4005 self.assertStringEqual(option, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4006
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4007 def test_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4008 argument = argparse.Action(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4009 option_strings=[],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4010 dest='x',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4011 type=float,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4012 nargs='?',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4013 default=2.5,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4014 choices=[0.5, 1.5, 2.5],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4015 help='H HH H',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4016 metavar='MV MV MV')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4017 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4018 "Action(option_strings=[], dest='x', nargs='?', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4019 "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
4020 "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
4021 self.assertStringEqual(argument, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4022
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4023 def test_namespace(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4024 ns = argparse.Namespace(foo=42, bar='spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4025 string = "Namespace(bar='spam', foo=42)"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4026 self.assertStringEqual(ns, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4027
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4028 def test_parser(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4029 parser = argparse.ArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4030 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4031 "ArgumentParser(prog='PROG', usage=None, description=None, "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4032 "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
4033 "add_help=True)" % argparse.HelpFormatter)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4034 self.assertStringEqual(parser, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4035
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4036 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4037 # Namespace tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4038 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4039
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4040 class TestNamespace(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4041
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4042 def test_constructor(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4043 ns = argparse.Namespace()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4044 self.assertRaises(AttributeError, getattr, ns, 'x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4045
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4046 ns = argparse.Namespace(a=42, b='spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4047 self.assertEqual(ns.a, 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4048 self.assertEqual(ns.b, 'spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4049
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4050 def test_equality(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4051 ns1 = argparse.Namespace(a=1, b=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4052 ns2 = argparse.Namespace(b=2, a=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4053 ns3 = argparse.Namespace(a=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4054 ns4 = argparse.Namespace(b=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4055
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4056 self.assertEqual(ns1, ns2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4057 self.assertNotEqual(ns1, ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4058 self.assertNotEqual(ns1, ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4059 self.assertNotEqual(ns2, ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4060 self.assertNotEqual(ns2, ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4061 self.assertTrue(ns1 != ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4062 self.assertTrue(ns1 != ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4063 self.assertTrue(ns2 != ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4064 self.assertTrue(ns2 != ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4065
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4066
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 # File encoding tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4069 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4070
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4071 class TestEncoding(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4072
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4073 def _test_module_encoding(self, path):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4074 path, _ = os.path.splitext(path)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4075 path += ".py"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4076 codecs.open(path, 'r', 'utf8').read()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4077
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4078 def test_argparse_module_encoding(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4079 self._test_module_encoding(argparse.__file__)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4080
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4081 def test_test_argparse_module_encoding(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4082 self._test_module_encoding(__file__)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4083
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4084 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4085 # ArgumentError tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4088 class TestArgumentError(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4089
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4090 def test_argument_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4091 msg = "my error here"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4092 error = argparse.ArgumentError(None, msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4093 self.assertEqual(str(error), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4094
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4095 # =======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4096 # ArgumentTypeError tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4097 # =======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4098
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4099 class TestArgumentError(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4100
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4101 def test_argument_type_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4102
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4103 def spam(string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4104 raise argparse.ArgumentTypeError('spam!')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4105
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4106 parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4107 parser.add_argument('x', type=spam)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4108 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4109 parser.parse_args(['XXX'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4110 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4111 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
4112 msg = sys.exc_info()[1].stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4113 self.assertEqual(expected, msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4114 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4115 self.fail()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4116
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4117 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4118 # parse_known_args tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4119 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4120
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4121 class TestParseKnownArgs(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4122
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4123 def test_optionals(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4124 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4125 parser.add_argument('--foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4126 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
4127 self.assertEqual(NS(foo='F'), args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4128 self.assertEqual(['--bar', '--baz'], extras)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4129
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4130 def test_mixed(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4131 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4132 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
4133 parser.add_argument('--spam', action='store_false')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4134 parser.add_argument('badger')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4135
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4136 argv = ["B", "C", "--foo", "-v", "3", "4"]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4137 args, extras = parser.parse_known_args(argv)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4138 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
4139 self.assertEqual(["C", "--foo", "4"], extras)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4140
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 # from argparse import * tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4143 # ============================
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 class TestImportStar(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4146
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4147 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4148 for name in argparse.__all__:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4149 self.assertTrue(hasattr(argparse, name))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4150
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4151 def test_main():
60174
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4152 # silence warnings about version argument - these are expected
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4153 with support.check_warnings(
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4154 ('The "version" argument to ArgumentParser is deprecated.',
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4155 DeprecationWarning),
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4156 ('The (format|print)_version method is deprecated',
255a401c19b0 (partially)
Florent Xicluna <florent.xicluna@gmail.com>
parents: 59990
diff changeset
4157 DeprecationWarning)):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4158 support.run_unittest(__name__)
59285
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4159 # 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
4160 RFile.seen = {}
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4161 WFile.seen = set()
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4162
59275
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4165 if __name__ == '__main__':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4166 test_main()