annotate Lib/test/test_argparse.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents ec9a4b77f37b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59990
7251e737a5d8 Merged revisions 79388 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 59285
diff changeset
1 # Author: Steven J. Bethard <steven.bethard@gmail.com>.
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3 import codecs
65863
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4 import inspect
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
5 import os
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
6 import shutil
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
7 import stat
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
8 import sys
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
9 import textwrap
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
10 import tempfile
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
11 import unittest
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
12 import argparse
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
13
59282
b30f8ce82167 Merged revisions 78600-78601 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59275
diff changeset
14 from io import StringIO
b30f8ce82167 Merged revisions 78600-78601 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59275
diff changeset
15
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
16 from test import support
80864
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
17 from unittest import mock
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
18 class StdIOBuffer(StringIO):
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
19 pass
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
20
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
21 class TestCase(unittest.TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
22
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
23 def assertEqual(self, obj1, obj2):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
24 if obj1 != obj2:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
25 print('')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
26 print(repr(obj1))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
27 print(repr(obj2))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
28 print(obj1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
29 print(obj2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
30 super(TestCase, self).assertEqual(obj1, obj2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
31
65857
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
32 def setUp(self):
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
33 # The tests assume that line wrapping occurs at 80 columns, but this
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
34 # behaviour can be overridden by setting the COLUMNS environment
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
35 # variable. To ensure that this assumption is true, unset COLUMNS.
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
36 env = support.EnvironmentVarGuard()
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
37 env.unset("COLUMNS")
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
38 self.addCleanup(env.__exit__)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
39
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
40
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
41 class TempDirMixin(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
42
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
43 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
44 self.temp_dir = tempfile.mkdtemp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
45 self.old_dir = os.getcwd()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
46 os.chdir(self.temp_dir)
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 tearDown(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
49 os.chdir(self.old_dir)
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
50 shutil.rmtree(self.temp_dir, True)
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
51
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
52 def create_readonly_file(self, filename):
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
53 file_path = os.path.join(self.temp_dir, filename)
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
54 with open(file_path, 'w') as file:
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
55 file.write(filename)
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
56 os.chmod(file_path, stat.S_IREAD)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
57
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
58 class Sig(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
59
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
60 def __init__(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
61 self.args = args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
62 self.kwargs = kwargs
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
63
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
64
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
65 class NS(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
66
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
67 def __init__(self, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
68 self.__dict__.update(kwargs)
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 def __repr__(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
71 sorted_items = sorted(self.__dict__.items())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
72 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
73 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
74
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
75 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
76 return vars(self) == vars(other)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
77
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
78 def __ne__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
79 return not (self == other)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
80
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
81
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
82 class ArgumentParserError(Exception):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
83
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
84 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
85 Exception.__init__(self, message, stdout, stderr)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
86 self.message = message
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
87 self.stdout = stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
88 self.stderr = stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
89 self.error_code = error_code
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
90
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
91
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
92 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
93 # 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
94 # 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
95 # catch the exception
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
96 if isinstance(sys.stderr, StdIOBuffer) or isinstance(sys.stdout, StdIOBuffer):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
97 return parse_args(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
98
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
99 # 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
100 # use it as the ArgumentParserError message
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
101 old_stdout = sys.stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
102 old_stderr = sys.stderr
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
103 sys.stdout = StdIOBuffer()
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
104 sys.stderr = StdIOBuffer()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
105 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
106 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
107 result = parse_args(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
108 for key in list(vars(result)):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
109 if getattr(result, key) is sys.stdout:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
110 setattr(result, key, old_stdout)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
111 if getattr(result, key) is sys.stderr:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
112 setattr(result, key, old_stderr)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
113 return result
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
114 except SystemExit:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
115 code = sys.exc_info()[1].code
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
116 stdout = sys.stdout.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
117 stderr = sys.stderr.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
118 raise ArgumentParserError("SystemExit", stdout, stderr, code)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
119 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
120 sys.stdout = old_stdout
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
121 sys.stderr = old_stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
122
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
123
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
124 class ErrorRaisingArgumentParser(argparse.ArgumentParser):
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 def parse_args(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
127 parse_args = super(ErrorRaisingArgumentParser, self).parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
128 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
129
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
130 def exit(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
131 exit = super(ErrorRaisingArgumentParser, self).exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
132 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
133
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
134 def error(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
135 error = super(ErrorRaisingArgumentParser, self).error
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
136 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
137
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
138
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
139 class ParserTesterMetaclass(type):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
140 """Adds parser tests using the class attributes.
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 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
143
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
144 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
145 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
146 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
147 to fail
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
148 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
149 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
150 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
151 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
152 remaining unparsed arguments
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
155 def __init__(cls, name, bases, bodydict):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
156 if name == 'ParserTestCase':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
157 return
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
158
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
159 # default parser signature is empty
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
160 if not hasattr(cls, 'parser_signature'):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
161 cls.parser_signature = Sig()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
162 if not hasattr(cls, 'parser_class'):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
163 cls.parser_class = ErrorRaisingArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
164
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
165 # ---------------------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
166 # functions for adding optional arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
167 # ---------------------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
168 def no_groups(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
169 """Add all arguments directly to the parser"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
170 for sig in argument_signatures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
171 parser.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 def one_group(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
174 """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
175 group = parser.add_argument_group('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
176 for sig in argument_signatures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
177 group.add_argument(*sig.args, **sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
178
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
179 def many_groups(parser, argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
180 """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
181 for i, sig in enumerate(argument_signatures):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
182 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
183 group.add_argument(*sig.args, **sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
184
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
185 # --------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
186 # functions for parsing args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
187 # --------------------------
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
188 def listargs(parser, args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
189 """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
190 return parser.parse_args(args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
191
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
192 def sysargs(parser, args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
193 """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
194 old_sys_argv = sys.argv
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
195 sys.argv = [old_sys_argv[0]] + args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
196 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
197 return parser.parse_args()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
198 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
199 sys.argv = old_sys_argv
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
200
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
201 # 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
202 # addition method and one arg parsing method
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
203 class AddTests(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
204
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
205 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
206 self._add_arguments = add_arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
207 self._parse_args = parse_args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
208
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
209 add_arguments_name = self._add_arguments.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
210 parse_args_name = self._parse_args.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
211 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
212 func_name = test_func.__name__
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
213 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
214 test_name = '_'.join(names)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
215
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
216 def wrapper(self, test_func=test_func):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
217 test_func(self)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
218 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
219 wrapper.__name__ = test_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
220 except TypeError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
221 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
222 setattr(tester_cls, test_name, wrapper)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
223
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
224 def _get_parser(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
225 args = tester.parser_signature.args
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
226 kwargs = tester.parser_signature.kwargs
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
227 parser = tester.parser_class(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
228 self._add_arguments(parser, tester.argument_signatures)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
229 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
230
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
231 def test_failures(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
232 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
233 for args_str in tester.failures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
234 args = args_str.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
235 raises = tester.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
236 raises(ArgumentParserError, parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
237
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
238 def test_successes(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
239 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
240 for args, expected_ns in tester.successes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
241 if isinstance(args, str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
242 args = args.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
243 result_ns = self._parse_args(parser, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
244 tester.assertEqual(expected_ns, result_ns)
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 # 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
247 # and an arg parsing method
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
248 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
249 for parse_args in [listargs, sysargs]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
250 AddTests(cls, add_arguments, parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
251
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
252 bases = TestCase,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
253 ParserTestCase = ParserTesterMetaclass('ParserTestCase', bases, {})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
254
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
255 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
256 # Optionals tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
257 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
258
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
259 class TestOptionalsSingleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
260 """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
261
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
262 argument_signatures = [Sig('-x')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
263 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
264 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
265 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
266 ('-x a', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
267 ('-xa', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
268 ('-x -1', NS(x='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
269 ('-x-1', NS(x='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
270 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
271
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
272
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
273 class TestOptionalsSingleDashCombined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
274 """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
275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
276 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
277 Sig('-x', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
278 Sig('-yyy', action='store_const', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
279 Sig('-z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
280 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
281 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
282 '-yx', '-yz a', '-yyyx', '-yyyza', '-xyza']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
283 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
284 ('', NS(x=False, yyy=None, z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
285 ('-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
286 ('-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
287 ('-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
288 ('-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
289 ('-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
290 ('-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
291 ('-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
292 ('-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
293 ('-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
294 ('-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
295 ('-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
296 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
297
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
298
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
299 class TestOptionalsSingleDashLong(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
300 """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
301
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
302 argument_signatures = [Sig('-foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
303 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
304 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
305 ('', NS(foo=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
306 ('-foo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
307 ('-foo -1', NS(foo='-1')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
308 ('-fo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
309 ('-f a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
310 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
311
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
312
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
313 class TestOptionalsSingleDashSubsetAmbiguous(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
314 """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
315
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
316 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
317 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
318 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
319 ('', NS(f=None, foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
320 ('-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
321 ('-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
322 ('-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
323 ('-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
324 ('-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
325 ('-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
326 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
327
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
328
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
329 class TestOptionalsSingleDashAmbiguous(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
330 """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
331
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
332 argument_signatures = [Sig('-foobar'), Sig('-foorab')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
333 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
334 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
335 ('', NS(foobar=None, foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
336 ('-foob a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
337 ('-foor a', NS(foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
338 ('-fooba a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
339 ('-foora a', NS(foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
340 ('-foobar a', NS(foobar='a', foorab=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
341 ('-foorab a', NS(foobar=None, foorab='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
342 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
343
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
344
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
345 class TestOptionalsNumeric(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
346 """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
347
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
348 argument_signatures = [Sig('-1', dest='one')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
349 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
350 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
351 ('', NS(one=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
352 ('-1 a', NS(one='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
353 ('-1a', NS(one='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
354 ('-1-2', NS(one='-2')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
355 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
356
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
357
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
358 class TestOptionalsDoubleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
359 """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
360
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
361 argument_signatures = [Sig('--foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
362 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
363 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
364 ('', NS(foo=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
365 ('--foo a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
366 ('--foo=a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
367 ('--foo -2.5', NS(foo='-2.5')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
368 ('--foo=-2.5', NS(foo='-2.5')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
369 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
370
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
371
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
372 class TestOptionalsDoubleDashPartialMatch(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
373 """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
374
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
375 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
376 Sig('--badger', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
377 Sig('--bat'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
378 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
379 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
380 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
381 ('', NS(badger=False, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
382 ('--bat X', NS(badger=False, bat='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
383 ('--bad', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
384 ('--badg', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
385 ('--badge', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
386 ('--badger', NS(badger=True, bat=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
387 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
388
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
389
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
390 class TestOptionalsDoubleDashPrefixMatch(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
391 """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
392
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
393 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
394 Sig('--badger', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
395 Sig('--ba'),
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 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
398 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
399 ('', NS(badger=False, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
400 ('--ba X', NS(badger=False, ba='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
401 ('--ba=X', NS(badger=False, ba='X')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
402 ('--bad', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
403 ('--badg', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
404 ('--badge', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
405 ('--badger', NS(badger=True, ba=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
406 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
407
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
408
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
409 class TestOptionalsSingleDoubleDash(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
410 """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
411
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
412 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
413 Sig('-f', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
414 Sig('--bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
415 Sig('-baz', action='store_const', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
416 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
417 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
418 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
419 ('', NS(f=False, bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
420 ('-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
421 ('--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
422 ('-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
423 ('-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
424 ('-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
425 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
426
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
427
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
428 class TestOptionalsAlternatePrefixChars(ParserTestCase):
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
429 """Test an Optional with option strings with custom prefixes"""
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
430
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
431 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
432 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
433 Sig('+f', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
434 Sig('::bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
435 Sig('/baz', action='store_const', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
436 ]
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
437 failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz', '-h', '--help', '+h', '::help', '/help']
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
438 successes = [
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
439 ('', NS(f=False, bar=None, baz=None)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
440 ('+f', NS(f=True, bar=None, baz=None)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
441 ('::ba B', NS(f=False, bar='B', baz=None)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
442 ('+f ::bar B', NS(f=True, bar='B', baz=None)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
443 ('+f /b', NS(f=True, bar=None, baz=42)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
444 ('/ba +f', NS(f=True, bar=None, baz=42)),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
445 ]
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
446
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
447
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
448 class TestOptionalsAlternatePrefixCharsAddedHelp(ParserTestCase):
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
449 """When ``-`` not in prefix_chars, default operators created for help
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
450 should use the prefix_chars in use rather than - or --
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
451 http://bugs.python.org/issue9444"""
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
452
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
453 parser_signature = Sig(prefix_chars='+:/', add_help=True)
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
454 argument_signatures = [
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
455 Sig('+f', action='store_true'),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
456 Sig('::bar'),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
457 Sig('/baz', action='store_const', const=42),
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
458 ]
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
459 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
460 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
461 ('', NS(f=False, bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
462 ('+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
463 ('::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
464 ('+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
465 ('+f /b', NS(f=True, bar=None, baz=42)),
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
466 ('/ba +f', NS(f=True, bar=None, baz=42))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
467 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
468
65867
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
469
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
470 class TestOptionalsAlternatePrefixCharsMultipleShortArgs(ParserTestCase):
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
471 """Verify that Optionals must be called with their defined prefixes"""
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
472
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
473 parser_signature = Sig(prefix_chars='+-', add_help=False)
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
474 argument_signatures = [
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
475 Sig('-x', action='store_true'),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
476 Sig('+y', action='store_true'),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
477 Sig('+z', action='store_true'),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
478 ]
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
479 failures = ['-w',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
480 '-xyz',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
481 '+x',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
482 '-y',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
483 '+xyz',
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
484 ]
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
485 successes = [
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
486 ('', NS(x=False, y=False, z=False)),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
487 ('-x', NS(x=True, y=False, z=False)),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
488 ('+y -x', NS(x=True, y=True, z=False)),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
489 ('+yz -x', NS(x=True, y=True, z=True)),
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
490 ]
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
491
cb9e10034e4a Fix bug 9352 where characters were being lost in parsing some short options
Steven Bethard <steven.bethard@gmail.com>
parents: 65863
diff changeset
492
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
493 class TestOptionalsShortLong(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
494 """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
495
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
496 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
497 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
498 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
499 failures = ['--x --verbose', '-N', 'a', '-v x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
500 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
501 ('', NS(verbose=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
502 ('-v', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
503 ('--verbose', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
504 ('-n', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
505 ('--noisy', NS(verbose=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
506 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
507
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
508
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
509 class TestOptionalsDest(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
510 """Tests various means of setting destination"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
511
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
512 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
513 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
514 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
515 ('--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
516 ('--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
517 ('--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
518 ('--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
519 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
520
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
521
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
522 class TestOptionalsDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
523 """Tests specifying a default for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
524
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
525 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
526 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
527 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
528 ('', NS(x=None, y=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
529 ('-xx', NS(x='x', y=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
530 ('-yy', NS(x=None, y='y')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
534 class TestOptionalsNargsDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
535 """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
536
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
537 argument_signatures = [Sig('-x')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
538 failures = ['a', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
539 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
540 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
541 ('-x a', NS(x='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
542 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
543
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
544
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
545 class TestOptionalsNargs1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
546 """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
547
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
548 argument_signatures = [Sig('-x', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
549 failures = ['a', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
550 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
551 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
552 ('-x a', NS(x=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
553 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
554
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
555
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
556 class TestOptionalsNargs3(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
557 """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
558
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
559 argument_signatures = [Sig('-x', nargs=3)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
560 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
561 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
562 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
563 ('-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
564 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
565
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
566
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
567 class TestOptionalsNargsOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
568 """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
569
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
570 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
571 Sig('-w', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
572 Sig('-x', nargs='?', const=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
573 Sig('-y', nargs='?', default='spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
574 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
575 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
576 failures = ['2']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
577 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
578 ('', NS(w=None, x=None, y='spam', z=84)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
579 ('-w', 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
580 ('-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
581 ('-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
582 ('-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
583 ('-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
584 ('-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
585 ('-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
586 ('-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
587 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
588
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
589
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
590 class TestOptionalsNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
591 """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
592
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
593 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
594 Sig('-x', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
595 Sig('-y', nargs='*', default='spam'),
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 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
598 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
599 ('', NS(x=None, y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
600 ('-x', NS(x=[], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
601 ('-x a', NS(x=['a'], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
602 ('-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
603 ('-y', NS(x=None, y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
604 ('-y a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
605 ('-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
606 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
607
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
608
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
609 class TestOptionalsNargsOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
610 """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
611
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
612 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
613 Sig('-x', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
614 Sig('-y', nargs='+', default='spam'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
615 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
616 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
617 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
618 ('', NS(x=None, y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
619 ('-x a', NS(x=['a'], y='spam')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
620 ('-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
621 ('-y a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
622 ('-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
623 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
624
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
625
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
626 class TestOptionalsChoices(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
627 """Tests specifying the choices for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
628
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
629 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
630 Sig('-f', choices='abc'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
631 Sig('-g', type=int, choices=range(5))]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
632 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
633 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
634 ('', NS(f=None, g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
635 ('-f a', NS(f='a', g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
636 ('-f c', NS(f='c', g=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
637 ('-g 0', NS(f=None, g=0)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
638 ('-g 03', NS(f=None, g=3)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
639 ('-fb -g4', NS(f='b', g=4)),
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 TestOptionalsRequired(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
644 """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
645
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
646 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
647 Sig('-x', type=int, required=True),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
648 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
649 failures = ['a', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
650 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
651 ('-x 1', NS(x=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
652 ('-x42', NS(x=42)),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
656 class TestOptionalsActionStore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
657 """Tests the store action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
658
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
659 argument_signatures = [Sig('-x', action='store')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
660 failures = ['a', 'a -x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
661 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
662 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
663 ('-xfoo', NS(x='foo')),
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 TestOptionalsActionStoreConst(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
668 """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
669
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
670 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
671 failures = ['a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
672 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
673 ('', NS(y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
674 ('-y', NS(y=object)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
675 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
676
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
677
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
678 class TestOptionalsActionStoreFalse(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
679 """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
680
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
681 argument_signatures = [Sig('-z', action='store_false')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
682 failures = ['a', '-za', '-z a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
683 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
684 ('', NS(z=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
685 ('-z', NS(z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
686 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
687
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
688
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
689 class TestOptionalsActionStoreTrue(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
690 """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
691
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
692 argument_signatures = [Sig('--apple', action='store_true')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
693 failures = ['a', '--apple=b', '--apple b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
694 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
695 ('', NS(apple=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
696 ('--apple', NS(apple=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
697 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
698
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
699
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
700 class TestOptionalsActionAppend(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
701 """Tests the append action for an Optional"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
702
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
703 argument_signatures = [Sig('--baz', action='append')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
704 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
705 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
706 ('', NS(baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
707 ('--baz a', NS(baz=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
708 ('--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
709 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
710
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
711
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
712 class TestOptionalsActionAppendWithDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
713 """Tests the append action for an Optional"""
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('--baz', action='append', default=['X'])]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
716 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
717 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
718 ('', NS(baz=['X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
719 ('--baz a', NS(baz=['X', 'a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
720 ('--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
721 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
722
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
723
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
724 class TestOptionalsActionAppendConst(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
725 """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
726
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
727 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
728 Sig('-b', action='append_const', const=Exception),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
729 Sig('-c', action='append', dest='b'),
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 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
732 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
733 ('', NS(b=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
734 ('-b', NS(b=[Exception])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
735 ('-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
736 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
737
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
738
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
739 class TestOptionalsActionAppendConstWithDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
740 """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
741
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
742 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
743 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
744 Sig('-c', action='append', dest='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
745 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
746 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
747 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
748 ('', NS(b=['X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
749 ('-b', NS(b=['X', Exception])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
750 ('-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
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 TestOptionalsActionCount(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
755 """Tests the count action for an Optional"""
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('-x', action='count')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
758 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
759 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
760 ('', NS(x=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
761 ('-x', NS(x=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
762 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
763
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
764
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
765 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
766 # Positional tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
767 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
768
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
769 class TestPositionalsNargsNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
770 """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
771
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
772 argument_signatures = [Sig('foo')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
773 failures = ['', '-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
774 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
775 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
776 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
777
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
778
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
779 class TestPositionalsNargs1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
780 """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
781
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
782 argument_signatures = [Sig('foo', nargs=1)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
783 failures = ['', '-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
784 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
785 ('a', NS(foo=['a'])),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
789 class TestPositionalsNargs2(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
790 """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
791
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
792 argument_signatures = [Sig('foo', nargs=2)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
793 failures = ['', 'a', '-x', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
794 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
795 ('a b', NS(foo=['a', 'b'])),
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 TestPositionalsNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
800 """Test a Positional that specifies unlimited nargs"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
801
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
802 argument_signatures = [Sig('foo', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
803 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
804 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
805 ('', NS(foo=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
806 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
807 ('a b', NS(foo=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
808 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
809
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
810
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
811 class TestPositionalsNargsZeroOrMoreDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
812 """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
813
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
814 argument_signatures = [Sig('foo', nargs='*', default='bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
815 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
816 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
817 ('', NS(foo='bar')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
818 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
819 ('a b', NS(foo=['a', 'b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
820 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
821
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
822
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
823 class TestPositionalsNargsOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
824 """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
825
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
826 argument_signatures = [Sig('foo', nargs='+')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
827 failures = ['', '-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
828 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
829 ('a', NS(foo=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
830 ('a b', NS(foo=['a', '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 TestPositionalsNargsOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
835 """Tests an Optional Positional"""
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='?')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
838 failures = ['-x', 'a b']
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 ('', NS(foo=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
841 ('a', NS(foo='a')),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
845 class TestPositionalsNargsOptionalDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
846 """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
847
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
848 argument_signatures = [Sig('foo', nargs='?', default=42)]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
849 failures = ['-x', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
850 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
851 ('', NS(foo=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
852 ('a', NS(foo='a')),
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 TestPositionalsNargsOptionalConvertedDefault(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
857 """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
858 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
859 """
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
860
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
861 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
862 Sig('foo', nargs='?', type=int, default='42'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
863 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
864 failures = ['-x', 'a b', '1 2']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
865 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
866 ('', NS(foo=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
867 ('1', NS(foo=1)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
868 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
869
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
870
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
871 class TestPositionalsNargsNoneNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
872 """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
873
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
874 argument_signatures = [Sig('foo'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
875 failures = ['', '-x', 'a', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
876 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
877 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
878 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
879
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
880
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
881 class TestPositionalsNargsNone1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
882 """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
883
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
884 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
885 failures = ['', '--foo', 'a', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
886 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
887 ('a b', NS(foo='a', bar=['b'])),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
891 class TestPositionalsNargs2None(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
892 """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
893
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
894 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
895 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
896 successes = [
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 TestPositionalsNargsNoneZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
902 """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
903
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
904 argument_signatures = [Sig('foo'), Sig('bar', nargs='*')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
905 failures = ['', '--foo']
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='a', bar=[])),
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 ('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
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
913 class TestPositionalsNargsNoneOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
914 """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
915
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
916 argument_signatures = [Sig('foo'), Sig('bar', nargs='+')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
917 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
918 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
919 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
920 ('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
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
924 class TestPositionalsNargsNoneOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
925 """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
926
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
927 argument_signatures = [Sig('foo'), Sig('bar', nargs='?')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
928 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
929 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
930 ('a', NS(foo='a', bar=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
931 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
932 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
933
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
934
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
935 class TestPositionalsNargsZeroOrMoreNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
936 """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
937
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
938 argument_signatures = [Sig('foo', nargs='*'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
939 failures = ['', '--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
940 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
941 ('a', NS(foo=[], bar='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
942 ('a b', NS(foo=['a'], bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
943 ('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
944 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
945
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
946
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
947 class TestPositionalsNargsOneOrMoreNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
948 """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
949
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
950 argument_signatures = [Sig('foo', nargs='+'), Sig('bar')]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
951 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
952 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
953 ('a b', NS(foo=['a'], bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
954 ('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
955 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
956
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
957
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
958 class TestPositionalsNargsOptionalNone(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
959 """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
960
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
961 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
962 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
963 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
964 ('a', NS(foo=42, bar='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
965 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
966 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
967
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
968
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
969 class TestPositionalsNargs2ZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
970 """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
971
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
972 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
973 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
974 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
975 ('a b', NS(foo=['a', 'b'], bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
976 ('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
977 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
978
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
979
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
980 class TestPositionalsNargs2OneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
981 """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
982
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
983 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
984 failures = ['', '--foo', 'a', 'a b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
985 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
986 ('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
987 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
988
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
989
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
990 class TestPositionalsNargs2Optional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
991 """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
992
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
993 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
994 failures = ['', '--foo', 'a', 'a b c d']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
995 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
996 ('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
997 ('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
998 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
999
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1000
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1001 class TestPositionalsNargsZeroOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1002 """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
1003
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1004 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
1005 failures = ['', '--foo', ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1006 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1007 ('a', NS(foo=[], bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1008 ('a b', NS(foo=['a'], bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1009 ('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
1010 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1011
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1012
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1013 class TestPositionalsNargsOneOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1014 """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
1015
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1016 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
1017 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1018 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1019 ('a b', NS(foo=['a'], bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1020 ('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
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1024 class TestPositionalsNargsOptional1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1025 """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
1026
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1027 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
1028 failures = ['', '--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1029 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1030 ('a', NS(foo=None, bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1031 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1032 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1033
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1034
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1035 class TestPositionalsNargsNoneZeroOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1036 """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
1037
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1038 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1039 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1040 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1041 Sig('baz', nargs=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1042 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1043 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1044 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1045 ('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
1046 ('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
1047 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1048
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1049
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1050 class TestPositionalsNargsNoneOneOrMore1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1051 """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
1052
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1053 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1054 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1055 Sig('bar', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1056 Sig('baz', nargs=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1057 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1058 failures = ['', '--foo', 'a', 'b']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1059 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1060 ('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
1061 ('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
1062 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1063
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1064
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1065 class TestPositionalsNargsNoneOptional1(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1066 """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
1067
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1068 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1069 Sig('foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1070 Sig('bar', nargs='?', default=0.625),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1071 Sig('baz', nargs=1),
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 failures = ['', '--foo', 'a']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1074 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1075 ('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
1076 ('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
1077 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1078
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1079
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1080 class TestPositionalsNargsOptionalOptional(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1081 """Test two optional nargs"""
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 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1084 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1085 Sig('bar', nargs='?', default=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1086 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1087 failures = ['--foo', 'a b c']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1088 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1089 ('', NS(foo=None, bar=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1090 ('a', NS(foo='a', bar=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1091 ('a b', NS(foo='a', bar='b')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1092 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1093
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1094
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1095 class TestPositionalsNargsOptionalZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1096 """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
1097
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1098 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
1099 failures = ['--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1100 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1101 ('', NS(foo=None, bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1102 ('a', NS(foo='a', bar=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1103 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1104 ('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
1105 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1106
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1107
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1108 class TestPositionalsNargsOptionalOneOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1109 """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
1110
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1111 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
1112 failures = ['', '--foo']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1113 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1114 ('a', NS(foo=None, bar=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1115 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1116 ('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
1117 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1118
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1119
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1120 class TestPositionalsChoicesString(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1121 """Test a set of single-character choices"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1122
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1123 argument_signatures = [Sig('spam', choices=set('abcdefg'))]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1124 failures = ['', '--foo', 'h', '42', 'ef']
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 ('a', NS(spam='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1127 ('g', NS(spam='g')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1128 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1129
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1130
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1131 class TestPositionalsChoicesInt(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1132 """Test a set of integer choices"""
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 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
1135 failures = ['', '--foo', 'h', '42', 'ef']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1136 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1137 ('4', NS(spam=4)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1138 ('15', NS(spam=15)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1139 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1140
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1141
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1142 class TestPositionalsActionAppend(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1143 """Test the 'append' action"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1144
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1145 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1146 Sig('spam', action='append'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1147 Sig('spam', action='append', nargs=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1148 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1149 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
1150 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1151 ('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
1152 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1153
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1154 # ========================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1155 # Combined optionals and positionals tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1156 # ========================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1157
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1158 class TestOptionalsNumericAndPositionals(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1159 """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
1160
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1161 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1162 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1163 Sig('-4', dest='y', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1164 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1165 failures = ['-2', '-315']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1166 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1167 ('', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1168 ('a', NS(x='a', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1169 ('-4', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1170 ('-4 a', NS(x='a', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1171 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1172
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1173
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1174 class TestOptionalsAlmostNumericAndPositionals(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1175 """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
1176
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1177 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1178 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1179 Sig('-k4', dest='y', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1180 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1181 failures = ['-k3']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1182 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1183 ('', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1184 ('-2', NS(x='-2', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1185 ('a', NS(x='a', y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1186 ('-k4', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1187 ('-k4 a', NS(x='a', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1188 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1189
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1190
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1191 class TestEmptyAndSpaceContainingArguments(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1192
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1193 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1194 Sig('x', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1195 Sig('-y', '--yyy', dest='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1196 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1197 failures = ['-y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1198 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1199 ([''], NS(x='', y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1200 (['a badger'], NS(x='a badger', y=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1201 (['-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
1202 (['-y', ''], NS(x=None, y='')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1203 (['-y', 'a badger'], NS(x=None, y='a badger')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1204 (['-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
1205 (['--yyy=a badger'], NS(x=None, y='a badger')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1206 (['--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
1207 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1208
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1209
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1210 class TestPrefixCharacterOnlyArguments(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1211
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1212 parser_signature = Sig(prefix_chars='-+')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1213 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1214 Sig('-', dest='x', nargs='?', const='badger'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1215 Sig('+', dest='y', type=int, default=42),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1216 Sig('-+-', dest='z', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1217 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1218 failures = ['-y', '+ -']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1219 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1220 ('', NS(x=None, y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1221 ('-', NS(x='badger', y=42, z=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1222 ('- 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
1223 ('+ -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
1224 ('-+-', NS(x=None, y=42, z=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1225 ('- ===', NS(x='===', y=42, z=False)),
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1229 class TestNargsZeroOrMore(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1230 """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
1231
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1232 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
1233 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1234 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1235 ('', NS(x=None, y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1236 ('-x', NS(x=[], y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1237 ('-x a', NS(x=['a'], y=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1238 ('-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
1239 ('a', NS(x=None, y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1240 ('a -x', NS(x=[], y=['a'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1241 ('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
1242 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1243
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1244
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1245 class TestNargsRemainder(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1246 """Tests specifying a positional with nargs=REMAINDER"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1247
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1248 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
1249 failures = ['', '-z', '-z Z']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1250 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1251 ('X', NS(x='X', y=[], z=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1252 ('-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
1253 ('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
1254 ('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
1255 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1256
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1257
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1258 class TestOptionLike(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1259 """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
1260
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1261 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1262 Sig('-x', type=float),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1263 Sig('-3', type=float, dest='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1264 Sig('z', nargs='*'),
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 failures = ['-x', '-y2.5', '-xa', '-x -a',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1267 '-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
1268 '-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
1269 '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
1270 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1271 ('', NS(x=None, y=None, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1272 ('-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
1273 ('-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
1274 ('-3.5', NS(x=None, y=0.5, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1275 ('-3-.5', NS(x=None, y=-0.5, z=[])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1276 ('-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
1277 ('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
1278 ('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
1279 ('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
1280 ('-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
1281 ('-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
1282 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1283
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1284
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1285 class TestDefaultSuppress(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1286 """Test actions with suppressed defaults"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1287
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1288 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1289 Sig('foo', nargs='?', default=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1290 Sig('bar', nargs='*', default=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1291 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
1292 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1293 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1294 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1295 ('', NS()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1296 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1297 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1298 ('--baz', NS(baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1299 ('a --baz', NS(foo='a', baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1300 ('--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
1301 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1302
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1303
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1304 class TestParserDefaultSuppress(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1305 """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
1306
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1307 parser_signature = Sig(argument_default=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1308 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1309 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1310 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1311 Sig('--baz', action='store_true'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1312 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1313 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1314 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1315 ('', NS()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1316 ('a', NS(foo='a')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1317 ('a b', NS(foo='a', bar=['b'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1318 ('--baz', NS(baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1319 ('a --baz', NS(foo='a', baz=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1320 ('--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
1321 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1322
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1323
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1324 class TestParserDefault42(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1325 """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
1326
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1327 parser_signature = Sig(argument_default=42)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1328 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1329 Sig('--version', action='version', version='1.0'),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1330 Sig('foo', nargs='?'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1331 Sig('bar', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1332 Sig('--baz', action='store_true'),
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 failures = ['-x']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1335 successes = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1336 ('', NS(foo=42, bar=42, baz=42, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1337 ('a', NS(foo='a', bar=42, baz=42, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1338 ('a b', NS(foo='a', bar=['b'], baz=42, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1339 ('--baz', NS(foo=42, bar=42, baz=True, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1340 ('a --baz', NS(foo='a', bar=42, baz=True, version=42)),
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
1341 ('--baz a b', NS(foo='a', bar=['b'], baz=True, version=42)),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1342 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1343
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1344
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1345 class TestArgumentsFromFile(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1346 """Test reading arguments from a file"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1347
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1348 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1349 super(TestArgumentsFromFile, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1350 file_texts = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1351 ('hello', 'hello world!\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1352 ('recursive', '-a\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1353 'A\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1354 '@hello'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1355 ('invalid', '@no-such-path\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1356 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1357 for path, text in file_texts:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1358 file = open(path, 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1359 file.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1360 file.close()
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 parser_signature = Sig(fromfile_prefix_chars='@')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1363 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1364 Sig('-a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1365 Sig('x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1366 Sig('y', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1367 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1368 failures = ['', '-b', 'X', '@invalid', '@missing']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1369 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1370 ('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
1371 ('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
1372 ('@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
1373 ('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
1374 ('-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
1375 ('X @recursive Z -a B', NS(a='B', x='X', y=['hello world!', 'Z'])),
78229
ac53876d1cc8 #12353: argparse now correctly handles null argument values.
R David Murray <rdmurray@bitdance.com>
parents: 74316
diff changeset
1376 (["-a", "", "X", "Y"], NS(a='', x='X', y=['Y'])),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1377 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1378
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1379
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1380 class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1381 """Test reading arguments from a file"""
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 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1384 super(TestArgumentsFromFileConverter, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1385 file_texts = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1386 ('hello', 'hello world!\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1387 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1388 for path, text in file_texts:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1389 file = open(path, 'w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1390 file.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1391 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1392
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1393 class FromFileConverterArgumentParser(ErrorRaisingArgumentParser):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1394
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1395 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
1396 for arg in arg_line.split():
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1397 if not arg.strip():
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1398 continue
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1399 yield arg
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1400 parser_class = FromFileConverterArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1401 parser_signature = Sig(fromfile_prefix_chars='@')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1402 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1403 Sig('y', nargs='+'),
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 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1406 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1407 ('@hello X', NS(y=['hello', 'world!', 'X'])),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1408 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1409
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1410
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1411 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1412 # Type conversion tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1413 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1414
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1415 class TestFileTypeRepr(TestCase):
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 def test_r(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1418 type = argparse.FileType('r')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1419 self.assertEqual("FileType('r')", repr(type))
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 def test_wb_1(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1422 type = argparse.FileType('wb', 1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1423 self.assertEqual("FileType('wb', 1)", repr(type))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1424
80864
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1425 def test_r_latin(self):
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1426 type = argparse.FileType('r', encoding='latin_1')
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1427 self.assertEqual("FileType('r', encoding='latin_1')", repr(type))
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1428
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1429 def test_w_big5_ignore(self):
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1430 type = argparse.FileType('w', encoding='big5', errors='ignore')
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1431 self.assertEqual("FileType('w', encoding='big5', errors='ignore')",
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1432 repr(type))
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1433
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1434 def test_r_1_replace(self):
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1435 type = argparse.FileType('r', 1, errors='replace')
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1436 self.assertEqual("FileType('r', 1, errors='replace')", repr(type))
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1437
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1438
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1439 class RFile(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1440 seen = {}
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1441
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1442 def __init__(self, name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1443 self.name = name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1444
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1445 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1446 if other in self.seen:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1447 text = self.seen[other]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1448 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1449 text = self.seen[other] = other.read()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1450 other.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1451 if not isinstance(text, str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1452 text = text.decode('ascii')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1453 return self.name == other.name == text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1454
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1455
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1456 class TestFileTypeR(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1457 """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
1458
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1459 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1460 super(TestFileTypeR, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1461 for file_name in ['foo', 'bar']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1462 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
1463 file.write(file_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1464 file.close()
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1465 self.create_readonly_file('readonly')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1466
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1467 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1468 Sig('-x', type=argparse.FileType()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1469 Sig('spam', type=argparse.FileType('r')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1470 ]
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1471 failures = ['-x', '', 'non-existent-file.txt']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1472 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1473 ('foo', NS(x=None, spam=RFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1474 ('-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
1475 ('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
1476 ('-x - -', NS(x=sys.stdin, spam=sys.stdin)),
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1477 ('readonly', NS(x=None, spam=RFile('readonly'))),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1478 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1479
78821
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1480 class TestFileTypeDefaults(TempDirMixin, ParserTestCase):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1481 """Test that a file is not created unless the default is needed"""
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1482 def setUp(self):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1483 super(TestFileTypeDefaults, self).setUp()
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1484 file = open(os.path.join(self.temp_dir, 'good'), 'w')
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1485 file.write('good')
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1486 file.close()
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1487
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1488 argument_signatures = [
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1489 Sig('-c', type=argparse.FileType('r'), default='no-file.txt'),
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1490 ]
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1491 # should provoke no such file error
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1492 failures = ['']
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1493 # should not provoke error because default file is created
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1494 successes = [('-c good', NS(c=RFile('good')))]
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
1495
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1496
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1497 class TestFileTypeRB(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1498 """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
1499
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1500 def setUp(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1501 super(TestFileTypeRB, self).setUp()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1502 for file_name in ['foo', 'bar']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1503 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
1504 file.write(file_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1505 file.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1506
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1507 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1508 Sig('-x', type=argparse.FileType('rb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1509 Sig('spam', type=argparse.FileType('rb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1510 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1511 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1512 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1513 ('foo', NS(x=None, spam=RFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1514 ('-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
1515 ('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
1516 ('-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
1517 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1518
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 class WFile(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1521 seen = set()
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 __init__(self, name):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1524 self.name = name
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 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1527 if other not in self.seen:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1528 text = 'Check that file is writable.'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1529 if 'b' in other.mode:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1530 text = text.encode('ascii')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1531 other.write(text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1532 other.close()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1533 self.seen.add(other)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1534 return self.name == other.name
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
73645
ba3da86d1c5d Close #13401: Skip TestFileTypeW of test_argparse if the current user is root
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69126
diff changeset
1537 @unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0,
ba3da86d1c5d Close #13401: Skip TestFileTypeW of test_argparse if the current user is root
Victor Stinner <victor.stinner@haypocalc.com>
parents: 69126
diff changeset
1538 "non-root user required")
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1539 class TestFileTypeW(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1540 """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
1541
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1542 def setUp(self):
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1543 super(TestFileTypeW, self).setUp()
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1544 self.create_readonly_file('readonly')
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1545
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1546 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1547 Sig('-x', type=argparse.FileType('w')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1548 Sig('spam', type=argparse.FileType('w')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1549 ]
67746
8a30a2cb4b9e Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 67009
diff changeset
1550 failures = ['-x', '', 'readonly']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1551 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1552 ('foo', NS(x=None, spam=WFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1553 ('-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
1554 ('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
1555 ('-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
1556 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1557
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1558
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1559 class TestFileTypeWB(TempDirMixin, ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1560
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1561 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1562 Sig('-x', type=argparse.FileType('wb')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1563 Sig('spam', type=argparse.FileType('wb')),
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 failures = ['-x', '']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1566 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1567 ('foo', NS(x=None, spam=WFile('foo'))),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1568 ('-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
1569 ('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
1570 ('-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
1571 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1572
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1573
80864
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1574 class TestFileTypeOpenArgs(TestCase):
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1575 """Test that open (the builtin) is correctly called"""
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1576
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1577 def test_open_args(self):
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1578 FT = argparse.FileType
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1579 cases = [
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1580 (FT('rb'), ('rb', -1, None, None)),
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1581 (FT('w', 1), ('w', 1, None, None)),
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1582 (FT('w', errors='replace'), ('w', -1, None, 'replace')),
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1583 (FT('wb', encoding='big5'), ('wb', -1, 'big5', None)),
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1584 (FT('w', 0, 'l1', 'strict'), ('w', 0, 'l1', 'strict')),
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1585 ]
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1586 with mock.patch('builtins.open') as m:
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1587 for type, args in cases:
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1588 type('foo')
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1589 m.assert_called_with('foo', *args)
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1590
d5a0698a8354 #11175: argparse.FileType now accepts encoding and errors arguments.
Petri Lehtinen <petri@digip.org>
parents: 79017
diff changeset
1591
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1592 class TestTypeCallable(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1593 """Test some callables as option/argument types"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1594
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1595 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1596 Sig('--eggs', type=complex),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1597 Sig('spam', type=float),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1598 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1599 failures = ['a', '42j', '--eggs a', '--eggs 2i']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1600 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1601 ('--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
1602 ('--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
1603 ('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
1604 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1605
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1606
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1607 class TestTypeUserDefined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1608 """Test a user-defined option/argument type"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1609
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1610 class MyType(TestCase):
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 def __init__(self, value):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1613 self.value = value
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1614
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1615 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1616 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
1617
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1618 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1619 Sig('-x', type=MyType),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1620 Sig('spam', type=MyType),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1621 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1622 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1623 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1624 ('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
1625 ('-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
1626 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1627
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1628
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1629 class TestTypeClassicClass(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1630 """Test a classic class type"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1631
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1632 class C:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1633
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1634 def __init__(self, value):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1635 self.value = value
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 def __eq__(self, other):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1638 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
1639
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1640 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1641 Sig('-x', type=C),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1642 Sig('spam', type=C),
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 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1645 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1646 ('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
1647 ('-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
1648 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1649
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1650
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1651 class TestTypeRegistration(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1652 """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
1653
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1654 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1655
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1656 def get_my_type(string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1657 return 'my_type{%s}' % string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1658
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1659 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1660 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
1661 parser.add_argument('-x', type='my_type')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1662 parser.add_argument('y', type='my_type')
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 self.assertEqual(parser.parse_args('1'.split()),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1665 NS(x=None, y='my_type{1}'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1666 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
1667 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
1668
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1669
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1670 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1671 # Action tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1672 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1673
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1674 class TestActionUserDefined(ParserTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1675 """Test a user-defined option/argument action"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1676
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1677 class OptionalAction(argparse.Action):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1678
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1679 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
1680 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1681 # check destination and option string
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1682 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
1683 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
1684 # 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
1685 # 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
1686 expected_ns = NS(spam=0.25)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1687 if value in [0.125, 0.625]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1688 expected_ns.badger = 2
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1689 elif value in [2.0]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1690 expected_ns.badger = 84
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1691 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1692 raise AssertionError('value: %s' % value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1693 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
1694 (expected_ns, namespace))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1695 except AssertionError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1696 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1697 raise ArgumentParserError('opt_action failed: %s' % e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1698 setattr(namespace, 'spam', value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1699
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1700 class PositionalAction(argparse.Action):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1701
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1702 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
1703 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1704 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
1705 option_string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1706 # check destination
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1707 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
1708 # 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
1709 # 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
1710 expected_ns = NS(badger=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1711 if value in [42, 84]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1712 expected_ns.spam = 0.25
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1713 elif value in [1]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1714 expected_ns.spam = 0.625
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1715 elif value in [2]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1716 expected_ns.spam = 0.125
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1717 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1718 raise AssertionError('value: %s' % value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1719 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
1720 (expected_ns, namespace))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1721 except AssertionError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1722 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1723 raise ArgumentParserError('arg_action failed: %s' % e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1724 setattr(namespace, 'badger', value)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1725
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1726 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1727 Sig('-s', dest='spam', action=OptionalAction,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1728 type=float, default=0.25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1729 Sig('badger', action=PositionalAction,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1730 type=int, nargs='?', default=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1731 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1732 failures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1733 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1734 ('-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
1735 ('42', NS(spam=0.25, badger=42)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1736 ('-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
1737 ('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
1738 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1739
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1740
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1741 class TestActionRegistration(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1742 """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
1743
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1744 class MyAction(argparse.Action):
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 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
1747 setattr(namespace, self.dest, 'foo[%s]' % values)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1748
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1749 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1750
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1751 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1752 parser.register('action', 'my_action', self.MyAction)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1753 parser.add_argument('badger', action='my_action')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1754
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1755 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
1756 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
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 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1760 # Subparsers tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1761 # ================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1762
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1763 class TestAddSubparsers(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1764 """Test the add_subparsers method"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1765
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1766 def assertArgumentParserError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1767 self.assertRaises(ArgumentParserError, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1768
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1769 def _get_parser(self, subparser_help=False, prefix_chars=None,
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1770 aliases=False):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1771 # create a parser with a subparsers argument
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1772 if prefix_chars:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1773 parser = ErrorRaisingArgumentParser(
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1774 prog='PROG', description='main description', prefix_chars=prefix_chars)
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1775 parser.add_argument(
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1776 prefix_chars[0] * 2 + 'foo', action='store_true', help='foo help')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1777 else:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1778 parser = ErrorRaisingArgumentParser(
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1779 prog='PROG', description='main description')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1780 parser.add_argument(
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1781 '--foo', action='store_true', help='foo help')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1782 parser.add_argument(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1783 'bar', type=float, help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1784
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1785 # check that only one subparsers argument can be added
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1786 subparsers_kwargs = {}
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1787 if aliases:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1788 subparsers_kwargs['metavar'] = 'COMMAND'
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1789 subparsers_kwargs['title'] = 'commands'
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1790 else:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1791 subparsers_kwargs['help'] = 'command help'
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1792 subparsers = parser.add_subparsers(**subparsers_kwargs)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1793 self.assertArgumentParserError(parser.add_subparsers)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1794
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1795 # add first sub-parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1796 parser1_kwargs = dict(description='1 description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1797 if subparser_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1798 parser1_kwargs['help'] = '1 help'
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1799 if aliases:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
1800 parser1_kwargs['aliases'] = ['1alias1', '1alias2']
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1801 parser1 = subparsers.add_parser('1', **parser1_kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1802 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
1803 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
1804
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1805 # add second sub-parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1806 parser2_kwargs = dict(description='2 description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1807 if subparser_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1808 parser2_kwargs['help'] = '2 help'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1809 parser2 = subparsers.add_parser('2', **parser2_kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1810 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
1811 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
1812
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1813 # add third sub-parser
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1814 parser3_kwargs = dict(description='3 description')
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1815 if subparser_help:
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1816 parser3_kwargs['help'] = '3 help'
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1817 parser3 = subparsers.add_parser('3', **parser3_kwargs)
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1818 parser3.add_argument('t', type=int, help='t help')
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1819 parser3.add_argument('u', nargs='...', help='u help')
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1820
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1821 # return the main parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1822 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1823
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1824 def setUp(self):
65857
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
1825 super().setUp()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1826 self.parser = self._get_parser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1827 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
1828
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1829 def test_parse_args_failures(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1830 # check some failure cases:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1831 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
1832 '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
1833 args = args_str.split()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1834 self.assertArgumentParserError(self.parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1835
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1836 def test_parse_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1837 # check some non-failure cases:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1838 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1839 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
1840 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
1841 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1842 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1843 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
1844 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
1845 )
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1846 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1847 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
1848 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
1849 )
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1850 self.assertEqual(
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1851 self.parser.parse_args('-1.5 3 11 -- a --foo 7 -- b'.split()),
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1852 NS(foo=False, bar=-1.5, t=11, u=['a', '--foo', '7', '--', 'b']),
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1853 )
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1854
65887
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1855 def test_parse_known_args(self):
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1856 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1857 self.parser.parse_known_args('0.5 1 b -w 7'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1858 (NS(foo=False, bar=0.5, w=7, x='b'), []),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1859 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1860 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1861 self.parser.parse_known_args('0.5 -p 1 b -w 7'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1862 (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1863 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1864 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1865 self.parser.parse_known_args('0.5 1 b -w 7 -p'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1866 (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1867 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1868 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1869 self.parser.parse_known_args('0.5 1 b -q -rs -w 7'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1870 (NS(foo=False, bar=0.5, w=7, x='b'), ['-q', '-rs']),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1871 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1872 self.assertEqual(
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1873 self.parser.parse_known_args('0.5 -W 1 b -X Y -w 7 Z'.split()),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1874 (NS(foo=False, bar=0.5, w=7, x='b'), ['-W', '-X', 'Y', 'Z']),
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1875 )
ff6f39b3c38e Fix bug 9340 - argparse parse_known_args didn't work with subparsers
Steven Bethard <steven.bethard@gmail.com>
parents: 65869
diff changeset
1876
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1877 def test_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1878 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1879 parser.add_argument('--foo', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1880 subparsers = parser.add_subparsers(dest='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1881 parser1 = subparsers.add_parser('1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1882 parser1.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1883 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
1884 parser.parse_args('1 2'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1885
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1886 def test_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1887 self.assertEqual(self.parser.format_usage(),
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1888 'usage: PROG [-h] [--foo] bar {1,2,3} ...\n')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1889 self.assertEqual(self.parser.format_help(), textwrap.dedent('''\
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1890 usage: PROG [-h] [--foo] bar {1,2,3} ...
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1891
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1892 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1893
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1894 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1895 bar bar help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1896 {1,2,3} command help
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1897
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1898 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1899 -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
1900 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1901 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1902
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1903 def test_help_extra_prefix_chars(self):
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1904 # Make sure - is still used for help if it is a non-first prefix char
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1905 parser = self._get_parser(prefix_chars='+:-')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1906 self.assertEqual(parser.format_usage(),
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1907 'usage: PROG [-h] [++foo] bar {1,2,3} ...\n')
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1908 self.assertEqual(parser.format_help(), textwrap.dedent('''\
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1909 usage: PROG [-h] [++foo] bar {1,2,3} ...
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1910
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1911 main description
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1912
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1913 positional arguments:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1914 bar bar help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1915 {1,2,3} command help
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1916
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1917 optional arguments:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1918 -h, --help show this help message and exit
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1919 ++foo foo help
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1920 '''))
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1921
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1922
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1923 def test_help_alternate_prefix_chars(self):
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1924 parser = self._get_parser(prefix_chars='+:/')
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1925 self.assertEqual(parser.format_usage(),
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1926 'usage: PROG [+h] [++foo] bar {1,2,3} ...\n')
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1927 self.assertEqual(parser.format_help(), textwrap.dedent('''\
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1928 usage: PROG [+h] [++foo] bar {1,2,3} ...
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1929
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1930 main description
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1931
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1932 positional arguments:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1933 bar bar help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1934 {1,2,3} command help
63690
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1935
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1936 optional arguments:
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1937 +h, ++help show this help message and exit
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1938 ++foo foo help
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1939 '''))
2850bd919277 #9444: use first of prefix_chars for help opt instead of raising error
R. David Murray <rdmurray@bitdance.com>
parents: 61880
diff changeset
1940
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1941 def test_parser_command_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1942 self.assertEqual(self.command_help_parser.format_usage(),
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1943 'usage: PROG [-h] [--foo] bar {1,2,3} ...\n')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1944 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
1945 textwrap.dedent('''\
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1946 usage: PROG [-h] [--foo] bar {1,2,3} ...
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1947
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1948 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1949
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1950 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1951 bar bar help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1952 {1,2,3} command help
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1953 1 1 help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1954 2 2 help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
1955 3 3 help
59275
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1958 -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
1959 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1960 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1961
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1962 def test_subparser_title_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1963 parser = ErrorRaisingArgumentParser(prog='PROG',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1964 description='main description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1965 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
1966 parser.add_argument('bar', help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1967 subparsers = parser.add_subparsers(title='subcommands',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1968 description='command help',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1969 help='additional text')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1970 parser1 = subparsers.add_parser('1')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1971 parser2 = subparsers.add_parser('2')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1972 self.assertEqual(parser.format_usage(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1973 '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
1974 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1975 usage: PROG [-h] [--foo] bar {1,2} ...
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1976
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1977 main description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1978
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1979 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1980 bar bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1981
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1982 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1983 -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
1984 --foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1985
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1986 subcommands:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1987 command help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1988
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1989 {1,2} additional text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1990 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1991
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1992 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
1993 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1994 self.parser.parse_args(args_str.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1995 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1996 err = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1997 if err.stdout != expected_help:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1998 print(repr(expected_help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
1999 print(repr(err.stdout))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2000 self.assertEqual(err.stdout, expected_help)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2001
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2002 def test_subparser1_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2003 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
2004 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
2005
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2006 1 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2007
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2008 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2009 {a,b,c} x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2010
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2011 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2012 -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
2013 -w W w help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2014 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2015
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2016 def test_subparser2_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2017 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
2018 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
2019
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2020 2 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2021
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2022 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2023 z z help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2024
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2025 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2026 -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
2027 -y {1,2,3} y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2028 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2029
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2030 def test_alias_invocation(self):
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2031 parser = self._get_parser(aliases=True)
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2032 self.assertEqual(
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2033 parser.parse_known_args('0.5 1alias1 b'.split()),
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2034 (NS(foo=False, bar=0.5, w=None, x='b'), []),
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2035 )
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2036 self.assertEqual(
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2037 parser.parse_known_args('0.5 1alias2 b'.split()),
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2038 (NS(foo=False, bar=0.5, w=None, x='b'), []),
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2039 )
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2040
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2041 def test_error_alias_invocation(self):
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2042 parser = self._get_parser(aliases=True)
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2043 self.assertArgumentParserError(parser.parse_args,
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2044 '0.5 1alias3 b'.split())
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2045
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2046 def test_alias_help(self):
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2047 parser = self._get_parser(aliases=True, subparser_help=True)
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2048 self.maxDiff = None
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2049 self.assertEqual(parser.format_help(), textwrap.dedent("""\
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2050 usage: PROG [-h] [--foo] bar COMMAND ...
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2051
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2052 main description
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2053
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2054 positional arguments:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2055 bar bar help
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2056
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2057 optional arguments:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2058 -h, --help show this help message and exit
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2059 --foo foo help
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2060
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2061 commands:
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2062 COMMAND
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2063 1 (1alias1, 1alias2)
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2064 1 help
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2065 2 2 help
78232
18b114be013e #13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents: 78229
diff changeset
2066 3 3 help
67009
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2067 """))
4c0426261148 Add subparser aliases for argparse. Resolves issue 9324. Approved by Georg for beta2 on the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents: 66721
diff changeset
2068
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2069 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2070 # Groups tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2071 # ============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2072
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2073 class TestPositionalsGroups(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2074 """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
2075
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2076 def test_nongroup_first(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2077 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2078 parser.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2079 group = parser.add_argument_group('g')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2080 group.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2081 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2082 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
2083 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
2084 self.assertEqual(expected, result)
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_group_first(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2087 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2088 group = parser.add_argument_group('xxx')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2089 group.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2090 parser.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2091 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2092 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
2093 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
2094 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2095
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2096 def test_interleaved_groups(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2097 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2098 group = parser.add_argument_group('xxx')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2099 parser.add_argument('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2100 group.add_argument('bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2101 parser.add_argument('baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2102 group = parser.add_argument_group('yyy')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2103 group.add_argument('frell')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2104 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
2105 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
2106 self.assertEqual(expected, result)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2107
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2108 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2109 # Parent parser tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2110 # ===================
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 class TestParentParsers(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2113 """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
2114
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2115 def assertArgumentParserError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2116 self.assertRaises(ArgumentParserError, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2117
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2118 def setUp(self):
65857
8e65849f71f5 Unset COLUMNS for test_argparse (and restore afterwards) (issue 9553)
Steven Bethard <steven.bethard@gmail.com>
parents: 65331
diff changeset
2119 super().setUp()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2120 self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2121 self.wxyz_parent.add_argument('--w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2122 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
2123 x_group.add_argument('-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2124 self.wxyz_parent.add_argument('z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2125
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2126 self.abcd_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2127 self.abcd_parent.add_argument('a')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2128 self.abcd_parent.add_argument('-b')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2129 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
2130 c_group.add_argument('--d')
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 self.w_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2133 self.w_parent.add_argument('--w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2134
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2135 self.z_parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2136 self.z_parent.add_argument('z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2137
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2138 # parents with mutually exclusive groups
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2139 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
2140 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
2141 group.add_argument('-a', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2142 group.add_argument('-b', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2143
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2144 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
2145
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2146 def test_single_parent(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2147 parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2148 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
2149 NS(w='3', y='1', z='2'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2150
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2151 def test_single_parent_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2152 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
2153 parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2154 self._test_mutex_ab(parser.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2155
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2156 def test_single_granparent_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2157 parents = [self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2158 parser = ErrorRaisingArgumentParser(add_help=False, parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2159 parser = ErrorRaisingArgumentParser(parents=[parser])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2160 self._test_mutex_ab(parser.parse_args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2161
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2162 def _test_mutex_ab(self, parse_args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2163 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
2164 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
2165 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
2166 self.assertArgumentParserError(parse_args, ['-a', '-b'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2167 self.assertArgumentParserError(parse_args, ['-b', '-a'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2168 self.assertArgumentParserError(parse_args, ['-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2169 self.assertArgumentParserError(parse_args, ['-a', '-c'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2170 self.assertArgumentParserError(parse_args, ['-b', '-c'])
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 def test_multiple_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2173 parents = [self.abcd_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2174 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2175 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
2176 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
2177
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2178 def test_multiple_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2179 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
2180 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2181 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
2182 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
2183 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2184 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
2185 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2186 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
2187
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2188 def test_conflicting_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2189 self.assertRaises(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2190 argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2191 argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2192 parents=[self.w_parent, self.wxyz_parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2193
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2194 def test_conflicting_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2195 self.assertRaises(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2196 argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2197 argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2198 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
2199
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2200 def test_same_argument_name_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2201 parents = [self.wxyz_parent, self.z_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2202 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2203 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
2204 NS(w=None, y=None, z='2'))
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 def test_subparser_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2207 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2208 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2209 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
2210 abcde_parser.add_argument('e')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2211 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
2212 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
2213
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2214 def test_subparser_parents_mutex(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2215 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2216 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2217 parents = [self.ab_mutex_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2218 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
2219 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
2220 c_group.add_argument('c')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2221 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
2222 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
2223 wxyzabe_parser.add_argument('e')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2224 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
2225 NS(a=True, b=False, c='4'))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2226 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
2227 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
2228 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2229 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
2230 self.assertArgumentParserError(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2231 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
2232
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2233 def test_parent_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2234 parents = [self.abcd_parent, self.wxyz_parent]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2235 parser = ErrorRaisingArgumentParser(parents=parents)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2236 parser_help = parser.format_help()
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2237 progname = self.main_program
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2238 self.assertEqual(parser_help, textwrap.dedent('''\
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2239 usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2240
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2241 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2242 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2243 z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2244
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2245 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2246 -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
2247 -b B
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2248 --w W
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 c:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2251 --d D
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 x:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2254 -y Y
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2255 '''.format(progname, ' ' if progname else '' )))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2256
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2257 def test_groups_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2258 parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2259 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
2260 g.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2261 g.add_argument('-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2262 m = parent.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2263 m.add_argument('-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2264 m.add_argument('-z')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2265 parser = ErrorRaisingArgumentParser(parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2266
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2267 self.assertRaises(ArgumentParserError, parser.parse_args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2268 ['-y', 'Y', '-z', 'Z'])
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 parser_help = parser.format_help()
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2271 progname = self.main_program
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2272 self.assertEqual(parser_help, textwrap.dedent('''\
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2273 usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2274
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2275 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2276 -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
2277 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2278 -z Z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2279
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2280 g:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2281 gd
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 -w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2284 -x X
74316
b950267efd59 #11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents: 73645
diff changeset
2285 '''.format(progname, ' ' if progname else '' )))
59275
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 # ==============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2288 # Mutually exclusive group tests
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2291 class TestMutuallyExclusiveGroupErrors(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2292
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2293 def test_invalid_add_argument_group(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2294 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2295 raises = self.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2296 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
2297
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2298 def test_invalid_add_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2299 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2300 group = parser.add_mutually_exclusive_group()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2301 add_argument = group.add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2302 raises = self.assertRaises
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2303 raises(ValueError, add_argument, '--foo', required=True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2304 raises(ValueError, add_argument, 'bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2305 raises(ValueError, add_argument, 'bar', nargs='+')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2306 raises(ValueError, add_argument, 'bar', nargs=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2307 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
2308
65869
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2309 def test_help(self):
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2310 parser = ErrorRaisingArgumentParser(prog='PROG')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2311 group1 = parser.add_mutually_exclusive_group()
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2312 group1.add_argument('--foo', action='store_true')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2313 group1.add_argument('--bar', action='store_false')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2314 group2 = parser.add_mutually_exclusive_group()
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2315 group2.add_argument('--soup', action='store_true')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2316 group2.add_argument('--nuts', action='store_false')
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2317 expected = '''\
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2318 usage: PROG [-h] [--foo | --bar] [--soup | --nuts]
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2319
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2320 optional arguments:
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2321 -h, --help show this help message and exit
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2322 --foo
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2323 --bar
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2324 --soup
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2325 --nuts
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2326 '''
d8ab35ec486e Fix for issue 9355 where with multiple mutually exclusive arguments, some brackets were being lost in the usage messages
Steven Bethard <steven.bethard@gmail.com>
parents: 65867
diff changeset
2327 self.assertEqual(parser.format_help(), textwrap.dedent(expected))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2328
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2329 class MEMixin(object):
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 def test_failures_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2332 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
2333 error = ArgumentParserError
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2334 for args_string in self.failures:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2335 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
2336
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2337 def test_failures_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2338 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
2339 error = ArgumentParserError
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2340 for args_string in self.failures + ['']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2341 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
2342
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2343 def test_successes_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2344 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
2345 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
2346 for args_string, expected_ns in successes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2347 actual_ns = parse_args(args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2348 self.assertEqual(actual_ns, expected_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2349
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2350 def test_successes_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2351 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
2352 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
2353 actual_ns = parse_args(args_string.split())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2354 self.assertEqual(actual_ns, expected_ns)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2355
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2356 def test_usage_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2357 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
2358 expected_usage = self.usage_when_not_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2359 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
2360
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2361 def test_usage_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2362 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
2363 expected_usage = self.usage_when_required
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2364 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
2365
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2366 def test_help_when_not_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2367 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
2368 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
2369 self.assertEqual(format_help(), textwrap.dedent(help))
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 def test_help_when_required(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2372 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
2373 help = self.usage_when_required + self.help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2374 self.assertEqual(format_help(), textwrap.dedent(help))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2375
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2376
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2377 class TestMutuallyExclusiveSimple(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2378
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2379 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2380 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2381 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
2382 group.add_argument('--bar', help='bar help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2383 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
2384 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2385
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2386 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
2387 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2388 ('--bar X', NS(bar='X', baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2389 ('--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
2390 ('--baz Y', NS(bar=None, baz='Y')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2391 ('--baz', NS(bar=None, baz='Z')),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2392 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2393 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2394 ('', NS(bar=None, baz=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2395 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2396
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2397 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2398 usage: PROG [-h] [--bar BAR | --baz [BAZ]]
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 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2401 usage: PROG [-h] (--bar BAR | --baz [BAZ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2402 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2403 help = '''\
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2406 -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
2407 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2408 --baz [BAZ] baz help
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2412 class TestMutuallyExclusiveLong(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2413
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2414 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2415 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2416 parser.add_argument('--abcde', help='abcde help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2417 parser.add_argument('--fghij', help='fghij help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2418 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
2419 group.add_argument('--klmno', help='klmno help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2420 group.add_argument('--pqrst', help='pqrst help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2421 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2422
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2423 failures = ['--klmno X --pqrst Y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2424 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2425 ('--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
2426 ('--abcde Y --klmno X',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2427 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
2428 ('--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
2429 ('--pqrst X --fghij Y',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2430 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
2431 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2432 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2433 ('', 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
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 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2437 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2438 [--klmno KLMNO | --pqrst PQRST]
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 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2441 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2442 (--klmno KLMNO | --pqrst PQRST)
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 help = '''\
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2447 -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
2448 --abcde ABCDE abcde help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2449 --fghij FGHIJ fghij help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2450 --klmno KLMNO klmno help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2451 --pqrst PQRST pqrst help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2452 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2453
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2454
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2455 class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2456
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2457 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2458 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2459 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
2460 group.add_argument('-x', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2461 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
2462 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2463
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2464 failures = ['-x X -y']
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2465 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2466 ('-x X', NS(x='X', y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2467 ('-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
2468 ('-y', NS(x=None, y=False)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2469 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2470 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2471 ('', NS(x=None, y=True)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2472 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2473
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2474 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2475 usage: PROG [-h] [-y]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2476 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2477 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2478 usage: PROG [-h] -y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2479 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2480 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2481
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2482 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2483 -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
2484 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2485 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2486
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2487
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2488 class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2489
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2490 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2491 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2492 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
2493 add = group.add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2494 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
2495 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
2496 add('--bladder', help=argparse.SUPPRESS)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2497 return parser
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 failures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2500 '--spam --badger',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2501 '--badger --bladder B',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2502 '--bladder B --spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2503 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2504 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2505 ('--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
2506 ('--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
2507 ('--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
2508 ('--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
2509 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2510 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2511 ('', NS(spam=False, badger=True, bladder=None)),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2512 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2513
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2514 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2515 usage: PROG [-h]
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 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2518
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2519 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2520 -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
2521 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2522
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2523
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2524 class TestMutuallyExclusiveOptionalAndPositional(MEMixin, TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2525
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2526 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2527 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2528 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
2529 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
2530 group.add_argument('--spam', help='SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2531 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
2532 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2533
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2534 failures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2535 '--foo --spam S',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2536 '--spam S X',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2537 'X --foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2538 'X Y Z --spam S',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2539 '--foo X Y',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2540 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2541 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2542 ('--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
2543 ('--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
2544 ('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
2545 ('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
2546 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2547 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2548 ('', NS(foo=False, spam=None, badger='X')),
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 usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2552 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
2553 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2554 usage_when_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2555 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
2556 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2557 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2558
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2559 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2560 badger BADGER
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2563 -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
2564 --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2565 --spam SPAM SPAM
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2566 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2567
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2568
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2569 class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase):
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 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2572 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2573 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
2574 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
2575 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
2576 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
2577 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
2578 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
2579 return parser
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 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
2582 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2583 ('-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
2584 ('-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
2585 ('-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
2586 ('-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
2587 ('-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
2588 ('-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
2589 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2590 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2591 ('', 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
2592 ('-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
2593 ('-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
2594 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2595
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2596 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2597 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
2598 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2599 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2600
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2601 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2602 -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
2603 -x x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2604 -a a help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2605 -b b help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2606 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2607 -c c help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2608 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2609
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2610
67819
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2611 class TestMutuallyExclusiveInGroup(MEMixin, TestCase):
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2612
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2613 def get_parser(self, required=None):
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2614 parser = ErrorRaisingArgumentParser(prog='PROG')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2615 titled_group = parser.add_argument_group(
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2616 title='Titled group', description='Group description')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2617 mutex_group = \
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2618 titled_group.add_mutually_exclusive_group(required=required)
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2619 mutex_group.add_argument('--bar', help='bar help')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2620 mutex_group.add_argument('--baz', help='baz help')
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2621 return parser
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2622
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2623 failures = ['--bar X --baz Y', '--baz X --bar Y']
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2624 successes = [
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2625 ('--bar X', NS(bar='X', baz=None)),
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2626 ('--baz Y', NS(bar=None, baz='Y')),
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2627 ]
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2628 successes_when_not_required = [
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2629 ('', NS(bar=None, baz=None)),
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2630 ]
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2631
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2632 usage_when_not_required = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2633 usage: PROG [-h] [--bar BAR | --baz BAZ]
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2634 '''
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2635 usage_when_required = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2636 usage: PROG [-h] (--bar BAR | --baz BAZ)
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2637 '''
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2638 help = '''\
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2639
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2640 optional arguments:
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2641 -h, --help show this help message and exit
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2642
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2643 Titled group:
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2644 Group description
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2645
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2646 --bar BAR bar help
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2647 --baz BAZ baz help
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2648 '''
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2649
2bef7ab6256b #10680: fix mutually exclusive arguments in argument groups.
Georg Brandl <georg@python.org>
parents: 67746
diff changeset
2650
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2651 class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase):
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 def get_parser(self, required):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2654 parser = ErrorRaisingArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2655 parser.add_argument('x', help='x help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2656 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
2657 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
2658 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
2659 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
2660 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
2661 return parser
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 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
2664 successes = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2665 ('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
2666 ('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
2667 ('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
2668 ('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
2669 ('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
2670 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2671 successes_when_not_required = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2672 ('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
2673 ('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
2674 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2675
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2676 usage_when_required = usage_when_not_required = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2677 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
2678 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2679 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2680
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2681 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2682 x x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2683 a a help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2684
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2685 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2686 -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
2687 -y y help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2688 -b b help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2689 -c c help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2690 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2691
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2692 # =================================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2693 # Mutually exclusive group in parent parser tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2694 # =================================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2695
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2696 class MEPBase(object):
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 def get_parser(self, required=None):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2699 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
2700 parser = ErrorRaisingArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2701 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
2702 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2703
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2704
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2705 class TestMutuallyExclusiveGroupErrorsParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2706 MEPBase, TestMutuallyExclusiveGroupErrors):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2707 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2708
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 class TestMutuallyExclusiveSimpleParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2711 MEPBase, TestMutuallyExclusiveSimple):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2712 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2713
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 class TestMutuallyExclusiveLongParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2716 MEPBase, TestMutuallyExclusiveLong):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2717 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2718
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 class TestMutuallyExclusiveFirstSuppressedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2721 MEPBase, TestMutuallyExclusiveFirstSuppressed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2722 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2723
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2724
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2725 class TestMutuallyExclusiveManySuppressedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2726 MEPBase, TestMutuallyExclusiveManySuppressed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2727 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2728
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2729
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2730 class TestMutuallyExclusiveOptionalAndPositionalParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2731 MEPBase, TestMutuallyExclusiveOptionalAndPositional):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2732 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2733
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 class TestMutuallyExclusiveOptionalsMixedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2736 MEPBase, TestMutuallyExclusiveOptionalsMixed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2737 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2738
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2739
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2740 class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2741 MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2742 pass
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 # Set default tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2746 # =================
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 class TestSetDefaults(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2749
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2750 def test_set_defaults_no_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2751 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2752 parser.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2753 parser.set_defaults(y='bar', z=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2754 self.assertEqual(NS(x='foo', y='bar', z=1),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2755 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2756 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
2757 parser.parse_args([], NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2758 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
2759 parser.parse_args([], NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2760 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
2761 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
2762
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2763 def test_set_defaults_with_args(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2764 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2765 parser.set_defaults(x='foo', y='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2766 parser.add_argument('-x', default='xfoox')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2767 self.assertEqual(NS(x='xfoox', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2768 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2769 self.assertEqual(NS(x='xfoox', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2770 parser.parse_args([], NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2771 self.assertEqual(NS(x='baz', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2772 parser.parse_args([], NS(x='baz')))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2773 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2774 parser.parse_args('-x 1'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2775 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2776 parser.parse_args('-x 1'.split(), NS()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2777 self.assertEqual(NS(x='1', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2778 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
2779
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2780 def test_set_defaults_subparsers(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2781 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2782 parser.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2783 subparsers = parser.add_subparsers()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2784 parser_a = subparsers.add_parser('a')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2785 parser_a.set_defaults(y='bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2786 self.assertEqual(NS(x='foo', y='bar'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2787 parser.parse_args('a'.split()))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2788
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2789 def test_set_defaults_parents(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2790 parent = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2791 parent.set_defaults(x='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2792 parser = ErrorRaisingArgumentParser(parents=[parent])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2793 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
2794
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2795 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
2796 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2797 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
2798 parser.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2799 parser.add_argument('-x', default='XX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2800 parser.add_argument('y', nargs='?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2801 parser.add_argument('z', nargs='?', default='ZZ')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2802
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2803 # defaults set previously
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2804 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
2805 parser.parse_args([]))
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 # reset defaults
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2808 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
2809 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
2810 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2811
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2812 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
2813 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2814 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
2815 group = parser.add_argument_group('foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2816 group.add_argument('-w')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2817 group.add_argument('-x', default='XX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2818 group.add_argument('y', nargs='?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2819 group.add_argument('z', nargs='?', default='ZZ')
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2822 # defaults set previously
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2823 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
2824 parser.parse_args([]))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2825
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2826 # reset defaults
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2827 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
2828 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
2829 parser.parse_args([]))
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 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2832 # Get default tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2833 # =================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2834
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2835 class TestGetDefault(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2836
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2837 def test_get_default(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2838 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2839 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2840 self.assertEqual(None, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2841
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2842 parser.add_argument("--foo")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2843 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2844 self.assertEqual(None, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2845
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2846 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
2847 self.assertEqual(None, parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2848 self.assertEqual(42, parser.get_default("bar"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2849
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2850 parser.set_defaults(foo="badger")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2851 self.assertEqual("badger", parser.get_default("foo"))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2852 self.assertEqual(42, parser.get_default("bar"))
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 # ==========================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2855 # Namespace 'contains' tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2856 # ==========================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2857
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2858 class TestNamespaceContainsSimple(TestCase):
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 def test_empty(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2861 ns = argparse.Namespace()
66310
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2862 self.assertEqual('' in ns, False)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2863 self.assertEqual('' not in ns, True)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2864 self.assertEqual('x' in ns, False)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2865
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2866 def test_non_empty(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2867 ns = argparse.Namespace(x=1, y=2)
66310
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2868 self.assertEqual('x' in ns, True)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2869 self.assertEqual('x' not in ns, False)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2870 self.assertEqual('y' in ns, True)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2871 self.assertEqual('' in ns, False)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2872 self.assertEqual('xx' in ns, False)
9fe76c26ea9f #9424: Replace deprecated assert* methods in the Python test suite.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 66257
diff changeset
2873 self.assertEqual('z' in ns, False)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2874
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2875 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2876 # Help formatting tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2877 # =====================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2878
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2879 class TestHelpFormattingMetaclass(type):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2880
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2881 def __init__(cls, name, bases, bodydict):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2882 if name == 'HelpTestCase':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2883 return
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 class AddTests(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2886
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2887 def __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
2888 self.func_suffix = func_suffix
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2889 self.std_name = std_name
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 for test_func in [self.test_format,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2892 self.test_print,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2893 self.test_print_file]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2894 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
2895
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2896 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
2897 test_func(self)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2898 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2899 test_wrapper.__name__ = test_name
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2900 except TypeError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2901 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2902 setattr(test_class, test_name, test_wrapper)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2903
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2904 def _get_parser(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2905 parser = argparse.ArgumentParser(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2906 *tester.parser_signature.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2907 **tester.parser_signature.kwargs)
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2908 for argument_sig in getattr(tester, 'argument_signatures', []):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2909 parser.add_argument(*argument_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2910 **argument_sig.kwargs)
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2911 group_sigs = getattr(tester, 'argument_group_signatures', [])
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2912 for group_sig, argument_sigs in group_sigs:
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2913 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
2914 **group_sig.kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2915 for argument_sig in argument_sigs:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2916 group.add_argument(*argument_sig.args,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2917 **argument_sig.kwargs)
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2918 subparsers_sigs = getattr(tester, 'subparsers_signatures', [])
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2919 if subparsers_sigs:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2920 subparsers = parser.add_subparsers()
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2921 for subparser_sig in subparsers_sigs:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2922 subparsers.add_parser(*subparser_sig.args,
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
2923 **subparser_sig.kwargs)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2924 return parser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2925
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2926 def _test(self, tester, parser_text):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2927 expected_text = getattr(tester, self.func_suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2928 expected_text = textwrap.dedent(expected_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2929 if expected_text != parser_text:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2930 print(repr(expected_text))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2931 print(repr(parser_text))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2932 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
2933 if char1 != char2:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2934 print('first diff: %r %r' % (char1, char2))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2935 break
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2936 tester.assertEqual(expected_text, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2937
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2938 def test_format(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2939 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2940 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
2941 self._test(tester, format())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2942
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2943 def test_print(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2944 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2945 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
2946 old_stream = getattr(sys, self.std_name)
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
2947 setattr(sys, self.std_name, StdIOBuffer())
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2948 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2949 print_()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2950 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
2951 finally:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2952 setattr(sys, self.std_name, old_stream)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2953 self._test(tester, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2954
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2955 def test_print_file(self, tester):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2956 parser = self._get_parser(tester)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2957 print_ = getattr(parser, 'print_%s' % self.func_suffix)
60513
c41478473eae Merged revisions 79464,79471,79623,79626,79630,79632,79643,79648-79649,79679,79685,79711,79761,79774,79777,79792-79794,79877,79898-79900 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 60174
diff changeset
2958 sfile = StdIOBuffer()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2959 print_(sfile)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2960 parser_text = sfile.getvalue()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2961 self._test(tester, parser_text)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2962
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2963 # add tests for {format,print}_{usage,help}
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2964 for func_suffix, std_name in [('usage', 'stdout'),
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2965 ('help', 'stdout')]:
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2966 AddTests(cls, func_suffix, std_name)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2967
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2968 bases = TestCase,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2969 HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {})
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2970
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2971
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2972 class TestHelpBiggerOptionals(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2973 """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
2974
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2975 parser_signature = Sig(prog='PROG', description='DESCRIPTION',
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2976 epilog='EPILOG')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2977 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
2978 Sig('-v', '--version', action='version', version='0.1'),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2979 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
2980 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2981 Sig('foo', help='FOO HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2982 Sig('bar', help='BAR HELP'),
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 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2985 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2986 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
2987 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2988 help = usage + '''\
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 DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2991
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2992 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2993 foo FOO HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2994 bar BAR HELP
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
2997 -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
2998 -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
2999 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3000 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3001
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3002 EPILOG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3003 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3004 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3005 0.1
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3008
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3009 class TestHelpBiggerOptionalGroups(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3010 """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
3011
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3012 parser_signature = Sig(prog='PROG', description='DESCRIPTION',
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3013 epilog='EPILOG')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3014 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3015 Sig('-v', '--version', action='version', version='0.1'),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3016 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
3017 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3018 Sig('foo', help='FOO HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3019 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3020 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3021 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3022 (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3023 Sig('baz', help='BAZ HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3024 Sig('-z', nargs='+', help='Z HELP')]),
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 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3027 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
3028 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3029 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3030
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3031 DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3032
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3033 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3034 foo FOO HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3035 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3036
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3037 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3038 -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
3039 -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
3040 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3041 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3042
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3043 GROUP TITLE:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3044 GROUP DESCRIPTION
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 baz BAZ HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3047 -z Z [Z ...] Z HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3048
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3049 EPILOG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3050 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3051 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3052 0.1
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3053 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3054
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3055
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3056 class TestHelpBiggerPositionals(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3057 """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
3058
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3059 parser_signature = Sig(usage='USAGE', description='DESCRIPTION')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3060 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3061 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
3062 Sig('--y', help='Y HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3063 Sig('ekiekiekifekang', help='EKI HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3064 Sig('bar', help='BAR HELP'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3065 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3066 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3067 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3068 usage: USAGE
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3069 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3070 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3071
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3072 DESCRIPTION
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3073
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3074 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3075 ekiekiekifekang EKI HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3076 bar BAR HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3077
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3078 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3079 -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
3080 -x X HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3081 --y Y Y HELP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3082 '''
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 TestHelpReformatting(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3088 """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
3089
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3090 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3091 prog='PROG',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3092 description=' oddly formatted\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3093 'description\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3094 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3095 '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
3096 'lines when wrapped')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3097 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3098 Sig('-x', metavar='XX', help='oddly\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3099 ' formatted -x help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3100 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
3101 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3102 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3103 (Sig('title', description='\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3104 ' oddly formatted group\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3105 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3106 'description'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3107 [Sig('-a', action='store_true',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3108 help=' oddly \n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3109 'formatted -a help \n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3110 ' 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
3111 'multiple lines')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3112 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3113 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3114 usage: PROG [-h] [-x XX] [-a] yyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3115 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3116 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3117
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3118 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
3119 multiple
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3120 lines when wrapped
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3123 yyy normal y help
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3126 -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
3127 -x XX oddly formatted -x help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3128
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3129 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3130 oddly formatted group description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3131
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3132 -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
3133 be wrapped
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3134 over multiple lines
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3135 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3136 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3137
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3138
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3139 class TestHelpWrappingShortNames(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3140 """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
3141
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3142 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
3143 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3144 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
3145 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
3146 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3147 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3148 (Sig('ALPHAS'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3149 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
3150 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3151 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3152 usage: PROG [-h] [-x XX] [-a] yyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3153 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3154 help = usage + '''\
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 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
3157 DD DD DD
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3158 DD DD DD DD D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3159
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3160 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3161 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
3162 YHYH YHYH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3163 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
3164
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3165 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3166 -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
3167 -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
3168 HXXHH HXXHH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3169 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
3170
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3171 ALPHAS:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3172 -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
3173 HHAAHHH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3174 HHAAHHH HHAAHHH HHA
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3175 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3176 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3177
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 class TestHelpWrappingLongNames(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3180 """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
3181
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3182 parser_signature = Sig(usage='USAGE', description= 'D D' * 30)
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3183 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3184 Sig('-v', '--version', action='version', version='V V' * 30),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3185 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
3186 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
3187 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3188 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3189 (Sig('ALPHAS'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3190 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
3191 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
3192 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3193 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3194 usage: USAGE
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3195 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3196 help = usage + '''\
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 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
3199 DD DD DD
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3200 DD DD DD DD D
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3201
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3202 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3203 yyyyyyyyyyyyyyyyyyyyyyyyy
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3204 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
3205 YHYH YHYH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3206 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
3207
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3208 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3209 -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
3210 -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
3211 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3212 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
3213 XHXH XHXH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3214 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
3215
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3216 ALPHAS:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3217 -a AAAAAAAAAAAAAAAAAAAAAAAAA
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3218 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
3219 AHAH AHAH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3220 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
3221 zzzzzzzzzzzzzzzzzzzzzzzzz
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3222 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
3223 ZHZH ZHZH
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3224 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
3225 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3226 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3227 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
3228 VV VV VV
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3229 VV VV VV VV V
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3230 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3231
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3232
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3233 class TestHelpUsage(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3234 """Test basic usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3235
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3236 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3237 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3238 Sig('-w', nargs='+', help='w'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3239 Sig('-x', nargs='*', help='x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3240 Sig('a', help='a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3241 Sig('b', help='b', nargs=2),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3242 Sig('c', help='c', nargs='?'),
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 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3245 (Sig('group'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3246 Sig('-y', nargs='?', help='y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3247 Sig('-z', nargs=3, help='z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3248 Sig('d', help='d', nargs='*'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3249 Sig('e', help='e', nargs='+'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3250 ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3251 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3252 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3253 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
3254 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
3255 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3256 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3257
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3258 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3259 a a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3260 b b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3261 c c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3262
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3263 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3264 -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
3265 -w W [W ...] w
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3266 -x [X [X ...]] x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3267
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3268 group:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3269 -y [Y] y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3270 -z Z Z Z z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3271 d d
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3272 e e
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3273 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3274 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3276
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3277 class TestHelpOnlyUserGroups(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3278 """Test basic usage messages"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3279
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3280 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
3281 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3282 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3283 (Sig('xxxx'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3284 Sig('-x', help='x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3285 Sig('a', help='a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3286 ]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3287 (Sig('yyyy'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3288 Sig('b', help='b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3289 Sig('-y', help='y'),
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 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3292 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3293 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
3294 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3295 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3296
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3297 xxxx:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3298 -x X x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3299 a a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3300
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3301 yyyy:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3302 b b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3303 -y Y y
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 TestHelpUsageLongProg(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3309 """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
3310
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3311 parser_signature = Sig(prog='P' * 60)
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 Sig('-w', metavar='W'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3314 Sig('-x', metavar='X'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3315 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3316 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3317 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3318 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3319 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3320 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3321 [-h] [-w W] [-x X] a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3322 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3323 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3324
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3325 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3326 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3327 b
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3330 -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
3331 -w W
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3332 -x X
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3335
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3336
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3337 class TestHelpUsageLongProgOptionsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3338 """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
3339
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3340 parser_signature = Sig(prog='P' * 60)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3341 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3342 Sig('-w', metavar='W' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3343 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3344 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3345 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3346 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3347 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3348 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3349 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3350 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3351 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3352 [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3353 [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3354 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3355 a b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3356 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3357 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3360 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3361 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3362
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3363 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3364 -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
3365 -w WWWWWWWWWWWWWWWWWWWWWWWWW
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3366 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3367 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3368 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3371
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 class TestHelpUsageLongProgPositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3374 """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
3375
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3376 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
3377 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3378 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3379 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3380 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3381 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3382 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3383 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3384 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3385 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3386 ccccccccccccccccccccccccc
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3389
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3390 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3391 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3392 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3393 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3394 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3395 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3396
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3397
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3398 class TestHelpUsageOptionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3399 """Test usage messages where the optionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3400
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3401 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3402 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3403 Sig('-w', metavar='W' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3404 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3405 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3406 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3407 Sig('a'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3408 Sig('b'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3409 Sig('c'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3410 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3411 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3412 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3413 usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3414 [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3415 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3416 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3417 a b c
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3418 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3419 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3420
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3421 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3422 a
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3423 b
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3424 c
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3427 -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
3428 -w WWWWWWWWWWWWWWWWWWWWWWWWW
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3429 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3430 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3431 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3432 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3433 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3434
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3435
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3436 class TestHelpUsagePositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3437 """Test usage messages where the positionals wrap"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3438
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3439 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3440 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3441 Sig('-x'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3442 Sig('-y'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3443 Sig('-z'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3444 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3445 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3446 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3447 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3448 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3449 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3450 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
3451 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3452 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3453 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3454 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3455
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3456 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3457 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3458 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3459 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3460
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3461 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3462 -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
3463 -x X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3464 -y Y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3465 -z Z
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3468
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 class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3471 """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
3472
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3473 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3474 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3475 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3476 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3477 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3478 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3479 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3480 Sig('c' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3481 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3482 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3483 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3484 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3485 [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3486 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3487 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3488 ccccccccccccccccccccccccc
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3491
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3492 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3493 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3494 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3495 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3496
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3497 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3498 -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
3499 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3500 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3501 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3504
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3505
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3506 class TestHelpUsageOptionalsOnlyWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3507 """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
3508
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3509 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3510 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3511 Sig('-x', metavar='X' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3512 Sig('-y', metavar='Y' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3513 Sig('-z', metavar='Z' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3514 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3515 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3516 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3517 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3518 [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3519 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
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 help = usage + '''\
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3524 -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
3525 -x XXXXXXXXXXXXXXXXXXXXXXXXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3526 -y YYYYYYYYYYYYYYYYYYYYYYYYY
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3527 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3528 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3529 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3530
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3531
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3532 class TestHelpUsagePositionalsOnlyWrap(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3533 """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
3534
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3535 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
3536 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3537 Sig('a' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3538 Sig('b' * 25),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3539 Sig('c' * 25),
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 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3542 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3543 usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3544 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3545 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3546 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3549 aaaaaaaaaaaaaaaaaaaaaaaaa
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3550 bbbbbbbbbbbbbbbbbbbbbbbbb
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3551 ccccccccccccccccccccccccc
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3552 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3553 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3554
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3555
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3556 class TestHelpVariableExpansion(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3557 """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
3558
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3559 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3560 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3561 Sig('-x', type=int,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3562 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
3563 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
3564 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
3565 Sig('--foo', choices='abc',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3566 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
3567 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
3568 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
3569 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
3570 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
3571 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3572 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3573 (Sig('group'), [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3574 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
3575 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
3576 ])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3577 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3578 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3579 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
3580 spam badger
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3583
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3584 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3585 spam spam PROG None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3586 badger badger PROG 0.5
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3587
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3588 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3589 -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
3590 -x X x PROG None int %
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3591 -y y PROG 42 XXX
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3592 --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
3593 --bar BBB bar PROG baz bar
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 group:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3596 -a A a PROG None
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3597 -b B b PROG -1
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3600
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3601
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3602 class TestHelpVariableExpansionUsageSupplied(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3603 """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
3604
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3605 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
3606 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3607 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3608 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3609 usage: PROG FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3610 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3611 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3612
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3613 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3614 -h, --help show this help message and exit
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3615 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3616 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3617
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3618
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3619 class TestHelpVariableExpansionNoArguments(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3620 """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
3621
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3622 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
3623 argument_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3624 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3625 usage = ('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3626 usage: PROG
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3627 ''')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3628 help = usage
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3629 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3632 class TestHelpSuppressUsage(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3633 """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
3634
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3635 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
3636 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3637 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3638 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3639 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3640 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3641 help = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3642 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3643 spam spam 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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3646 -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
3647 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3648 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3649 usage = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3650 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3651
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3652
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3653 class TestHelpSuppressOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3654 """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
3655
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3656 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
3657 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3658 Sig('--foo', help=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3659 Sig('spam', help='spam 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 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3663 usage: PROG spam
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3666
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3667 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3668 spam spam help
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 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3673 class TestHelpSuppressOptionalGroup(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3674 """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
3675
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3676 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3677 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3678 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3679 Sig('spam', help='spam help'),
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 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3682 (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]),
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 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3685 usage: PROG [-h] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3686 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3687 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3690 spam spam help
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3693 -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
3694 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3695 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3696 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3697
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3698
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3699 class TestHelpSuppressPositional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3700 """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
3701
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3702 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3703 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3704 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3705 Sig('spam', help=argparse.SUPPRESS),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3706 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3707 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3708 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3709 usage: PROG [-h] [--foo FOO]
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 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3712
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3713 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3714 -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
3715 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3716 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3717 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3718
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 class TestHelpRequiredOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3721 """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
3722
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3723 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3724 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3725 Sig('--foo', required=True, help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3726 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3727 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3728 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3729 usage: PROG [-h] --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3730 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3731 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3732
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3733 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3734 -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
3735 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3736 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3737 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3738
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3739
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3740 class TestHelpAlternatePrefixChars(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3741 """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
3742
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3743 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
3744 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3745 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
3746 Sig(';b', ';;bar', help='bar help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3747 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3748 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3749 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3750 usage: PROG [^^foo] [;b BAR]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3751 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3752 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3753
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3754 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3755 ^^foo foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3756 ;b BAR, ;;bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3757 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3758 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3761 class TestHelpNoHelpOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3762 """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
3763
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3764 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
3765 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3766 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3767 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3768 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3769 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3770 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3771 usage: PROG [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3772 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3773 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3774
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3775 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3776 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3777
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3778 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3779 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3780 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3781 version = ''
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3784 class TestHelpVersionOptional(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3785 """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
3786
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3787 parser_signature = Sig(prog='PROG')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3788 argument_signatures = [
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
3789 Sig('-v', '--version', action='version', version='1.0'),
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3790 Sig('--foo', help='foo help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3791 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3792 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3793 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3794 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3795 usage: PROG [-h] [-v] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3796 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3797 help = usage + '''\
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3800 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3801
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3802 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3803 -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
3804 -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
3805 --foo FOO foo help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3806 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3807 version = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3808 1.0
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
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3811
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3812 class TestHelpNone(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3813 """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
3814
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3815 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3816 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3817 Sig('--foo'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3818 Sig('spam'),
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 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3821 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3822 usage: PROG [-h] [--foo FOO] spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3823 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3824 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3825
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3826 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3827 spam
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3828
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3829 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3830 -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
3831 --foo FOO
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3832 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3833 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3834
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3835
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3836 class TestHelpTupleMetavar(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3837 """Test specifying metavar as a tuple"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3838
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3839 parser_signature = Sig(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3840 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3841 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
3842 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
3843 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
3844 Sig('-z', help='z', nargs='?', metavar=('Z1', )),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3845 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3846 argument_group_signatures = []
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3847 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3848 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
3849 [-z [Z1]]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3850 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3851 help = usage + '''\
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3854 -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
3855 -w W1 [W2 ...] w
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3856 -x [X1 [X2 ...]] x
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3857 -y Y1 Y2 Y3 y
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3858 -z [Z1] z
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3859 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3860 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3861
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3862
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3863 class TestHelpRawText(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3864 """Test the RawTextHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3865
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3866 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3867 prog='PROG', formatter_class=argparse.RawTextHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3868 description='Keep the formatting\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3869 ' exactly as it is written\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3870 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3871 'here\n')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3872
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3873 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3874 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
3875 'appear as given here'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3876 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3877 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3878 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3879 (Sig('title', description=' This text\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3880 ' should be indented\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3881 ' exactly like it is here\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3882 [Sig('--bar', help='bar help')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3883 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3884 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3885 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
3886 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3887 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3888
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3889 Keep the formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3890 exactly as it is written
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 here
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3895 spam spam help
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 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3898 -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
3899 --foo FOO foo help should also
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3900 appear as given here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3901
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3902 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3903 This text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3904 should be indented
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3905 exactly like it is here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3906
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3907 --bar BAR bar help
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 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3910
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3911
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3912 class TestHelpRawDescription(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3913 """Test the RawTextHelpFormatter"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3914
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3915 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3916 prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3917 description='Keep the formatting\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3918 ' exactly as it is written\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3919 '\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3920 'here\n')
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 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3923 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
3924 ' retain this odd formatting'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3925 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3926 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3927 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3928 (Sig('title', description=' This text\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3929 ' should be indented\n'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3930 ' exactly like it is here\n'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3931 [Sig('--bar', help='bar help')]),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3932 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3933 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3934 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
3935 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3936 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3937
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3938 Keep the formatting
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3939 exactly as it is written
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 here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3942
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3943 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3944 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3945
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3946 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3947 -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
3948 --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
3949
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3950 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3951 This text
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3952 should be indented
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3953 exactly like it is here
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3954
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3955 --bar BAR bar help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3956 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3957 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3958
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3959
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3960 class TestHelpArgumentDefaults(HelpTestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3961 """Test the ArgumentDefaultsHelpFormatter"""
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 parser_signature = Sig(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3964 prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3965 description='description')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3966
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3967 argument_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3968 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
3969 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
3970 Sig('spam', help='spam help'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3971 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
3972 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3973 argument_group_signatures = [
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3974 (Sig('title', description='description'),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3975 [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
3976 ]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3977 usage = '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3978 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
3979 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3980 help = usage + '''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3981
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3982 description
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 positional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3985 spam spam help
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3986 badger badger help (default: wooden)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3987
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3988 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3989 -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
3990 --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
3991 --bar bar help (default: False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3992
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3993 title:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3994 description
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3995
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3996 --baz BAZ baz help (default: 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3997 '''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3998 version = ''
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
3999
61880
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4000 class TestHelpVersionAction(HelpTestCase):
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4001 """Test the default help for the version action"""
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4002
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4003 parser_signature = Sig(prog='PROG', description='description')
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4004 argument_signatures = [Sig('-V', '--version', action='version', version='3.6')]
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4005 argument_group_signatures = []
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4006 usage = '''\
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4007 usage: PROG [-h] [-V]
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4008 '''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4009 help = usage + '''\
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4010
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4011 description
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4012
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4013 optional arguments:
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4014 -h, --help show this help message and exit
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4015 -V, --version show program's version number and exit
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4016 '''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4017 version = ''
036017f2e74c Merged revisions 81492 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents: 60513
diff changeset
4018
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4019 class TestHelpSubparsersOrdering(HelpTestCase):
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4020 """Test ordering of subcommands in help matches the code"""
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4021 parser_signature = Sig(prog='PROG',
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4022 description='display some subcommands')
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4023 argument_signatures = [Sig('-v', '--version', action='version', version='0.1')]
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4024
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4025 subparsers_signatures = [Sig(name=name)
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4026 for name in ('a', 'b', 'c', 'd', 'e')]
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4027
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4028 usage = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4029 usage: PROG [-h] [-v] {a,b,c,d,e} ...
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4030 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4031
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4032 help = usage + '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4033
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4034 display some subcommands
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4035
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4036 positional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4037 {a,b,c,d,e}
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4038
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4039 optional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4040 -h, --help show this help message and exit
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4041 -v, --version show program's version number and exit
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4042 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4043
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4044 version = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4045 0.1
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4046 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4047
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4048 class TestHelpSubparsersWithHelpOrdering(HelpTestCase):
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4049 """Test ordering of subcommands in help matches the code"""
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4050 parser_signature = Sig(prog='PROG',
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4051 description='display some subcommands')
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4052 argument_signatures = [Sig('-v', '--version', action='version', version='0.1')]
69003
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4053
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4054 subcommand_data = (('a', 'a subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4055 ('b', 'b subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4056 ('c', 'c subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4057 ('d', 'd subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4058 ('e', 'e subcommand help'),
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4059 )
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4060
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4061 subparsers_signatures = [Sig(name=name, help=help)
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4062 for name, help in subcommand_data]
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4063
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4064 usage = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4065 usage: PROG [-h] [-v] {a,b,c,d,e} ...
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4066 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4067
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4068 help = usage + '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4069
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4070 display some subcommands
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4071
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4072 positional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4073 {a,b,c,d,e}
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4074 a a subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4075 b b subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4076 c c subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4077 d d subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4078 e e subcommand help
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4079
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4080 optional arguments:
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4081 -h, --help show this help message and exit
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4082 -v, --version show program's version number and exit
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4083 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4084
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4085 version = '''\
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4086 0.1
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4087 '''
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4088
74f9ed48ae5d Issue #9026: Fix order of argparse sub-commands in help messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 68967
diff changeset
4089
68966
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4090
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4091 class TestHelpMetavarTypeFormatter(HelpTestCase):
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4092 """"""
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4093
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4094 def custom_type(string):
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4095 return string
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4096
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4097 parser_signature = Sig(prog='PROG', description='description',
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4098 formatter_class=argparse.MetavarTypeHelpFormatter)
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4099 argument_signatures = [Sig('a', type=int),
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4100 Sig('-b', type=custom_type),
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4101 Sig('-c', type=float, metavar='SOME FLOAT')]
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4102 argument_group_signatures = []
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4103 usage = '''\
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4104 usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4105 '''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4106 help = usage + '''\
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4107
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4108 description
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4109
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4110 positional arguments:
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4111 int
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4112
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4113 optional arguments:
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4114 -h, --help show this help message and exit
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4115 -b custom_type
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4116 -c SOME FLOAT
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4117 '''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4118 version = ''
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4119
a15d65d8f269 Issue #11174: Add argparse.MetavarTypeHelpFormatter, which uses type names
Steven Bethard <steven.bethard@gmail.com>
parents: 68142
diff changeset
4120
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4121 # =====================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4122 # Optional/Positional constructor tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4123 # =====================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4124
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4125 class TestInvalidArgumentConstructors(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4126 """Test a bunch of invalid Argument constructors"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4127
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4128 def assertTypeError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4129 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4130 self.assertRaises(TypeError, parser.add_argument,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4131 *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4132
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4133 def assertValueError(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4134 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4135 self.assertRaises(ValueError, parser.add_argument,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4136 *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4137
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4138 def test_invalid_keyword_arguments(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4139 self.assertTypeError('-x', bar=None)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4140 self.assertTypeError('-y', callback='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4141 self.assertTypeError('-y', callback_args=())
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4142 self.assertTypeError('-y', callback_kwargs={})
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 def test_missing_destination(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4145 self.assertTypeError()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4146 for action in ['append', 'store']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4147 self.assertTypeError(action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4148
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4149 def test_invalid_option_strings(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4150 self.assertValueError('--')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4151 self.assertValueError('---')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4152
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4153 def test_invalid_type(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4154 self.assertValueError('--foo', type='int')
69126
69ab5251f3f0 Issue #9347: Fix formatting for tuples in argparse type= error messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 69003
diff changeset
4155 self.assertValueError('--foo', type=(int, float))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4156
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4157 def test_invalid_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4158 self.assertValueError('-x', action='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4159 self.assertValueError('foo', action='baz')
69126
69ab5251f3f0 Issue #9347: Fix formatting for tuples in argparse type= error messages.
Steven Bethard <steven.bethard@gmail.com>
parents: 69003
diff changeset
4160 self.assertValueError('--foo', action=('store', 'append'))
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4161 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4162 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4163 parser.add_argument("--foo", action="store-true")
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4164 except ValueError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4165 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4166 expected = 'unknown action'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4167 msg = 'expected %r, found %r' % (expected, e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4168 self.assertTrue(expected in str(e), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4169
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4170 def test_multiple_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4171 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4172 parser.add_argument(dest='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4173 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4174 parser.add_argument('bar', dest='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4175 except ValueError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4176 e = sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4177 expected = 'dest supplied twice for positional argument'
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4178 msg = 'expected %r, found %r' % (expected, e)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4179 self.assertTrue(expected in str(e), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4180
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4181 def test_no_argument_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4182 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
4183 'append_const', 'count']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4184 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
4185 dict(choices='ab')]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4186 self.assertTypeError('-x', action=action, **attrs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4187
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4188 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
4189 # options with zero arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4190 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
4191
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4192 # const is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4193 self.assertTypeError('-x', const='foo', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4194
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4195 # nargs is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4196 self.assertTypeError('-x', nargs='*', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4197
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4198 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
4199 for action in ['store', 'append']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4200
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4201 # nargs=0 is disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4202 self.assertValueError('-x', nargs=0, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4203 self.assertValueError('spam', nargs=0, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4204
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4205 # const is disallowed with non-optional arguments
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4206 for nargs in [1, '*', '+']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4207 self.assertValueError('-x', const='foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4208 nargs=nargs, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4209 self.assertValueError('spam', const='foo',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4210 nargs=nargs, action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4211
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4212 def test_required_const_actions(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4213 for action in ['store_const', 'append_const']:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4214
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4215 # nargs is always disallowed
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4216 self.assertTypeError('-x', nargs='+', action=action)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4217
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4218 def test_parsers_action_missing_params(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4219 self.assertTypeError('command', action='parsers')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4220 self.assertTypeError('command', action='parsers', prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4221 self.assertTypeError('command', action='parsers',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4222 parser_class=argparse.ArgumentParser)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4223
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4224 def test_required_positional(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4225 self.assertTypeError('foo', required=True)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4226
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4227 def test_user_defined_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4228
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4229 class Success(Exception):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4230 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4231
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4232 class Action(object):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4233
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4234 def __init__(self,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4235 option_strings,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4236 dest,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4237 const,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4238 default,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4239 required=False):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4240 if dest == 'spam':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4241 if const is Success:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4242 if default is Success:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4243 raise Success()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4244
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4245 def __call__(self, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4246 pass
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4247
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4248 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4249 self.assertRaises(Success, parser.add_argument, '--spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4250 action=Action, default=Success, const=Success)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4251 self.assertRaises(Success, parser.add_argument, 'spam',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4252 action=Action, default=Success, const=Success)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4253
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4254 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4255 # Actions returned by add_argument
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4256 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4257
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4258 class TestActionsReturned(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4259
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4260 def test_dest(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4261 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4262 action = parser.add_argument('--foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4263 self.assertEqual(action.dest, 'foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4264 action = parser.add_argument('-b', '--bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4265 self.assertEqual(action.dest, 'bar')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4266 action = parser.add_argument('-x', '-y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4267 self.assertEqual(action.dest, 'x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4268
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4269 def test_misc(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4270 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4271 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
4272 default=84, type=int, choices=[1, 2],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4273 help='FOO', metavar='BAR', dest='baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4274 self.assertEqual(action.nargs, '?')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4275 self.assertEqual(action.const, 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4276 self.assertEqual(action.default, 84)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4277 self.assertEqual(action.type, int)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4278 self.assertEqual(action.choices, [1, 2])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4279 self.assertEqual(action.help, 'FOO')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4280 self.assertEqual(action.metavar, 'BAR')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4281 self.assertEqual(action.dest, 'baz')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4282
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4283
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4284 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4285 # Argument conflict handling tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4286 # ================================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4287
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4288 class TestConflictHandling(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4289
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4290 def test_bad_type(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4291 self.assertRaises(ValueError, argparse.ArgumentParser,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4292 conflict_handler='foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4293
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4294 def test_conflict_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4295 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4296 parser.add_argument('-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4297 self.assertRaises(argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4298 parser.add_argument, '-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4299 parser.add_argument('--spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4300 self.assertRaises(argparse.ArgumentError,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4301 parser.add_argument, '--spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4302
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4303 def test_resolve_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4304 get_parser = argparse.ArgumentParser
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4305 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
4306
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4307 parser.add_argument('-x', help='OLD X')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4308 parser.add_argument('-x', help='NEW X')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4309 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4310 usage: PROG [-h] [-x X]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4311
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4312 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4313 -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
4314 -x X NEW X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4315 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4316
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4317 parser.add_argument('--spam', metavar='OLD_SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4318 parser.add_argument('--spam', metavar='NEW_SPAM')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4319 self.assertEqual(parser.format_help(), textwrap.dedent('''\
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4320 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
4321
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4322 optional arguments:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4323 -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
4324 -x X NEW X
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4325 --spam NEW_SPAM
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4326 '''))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4327
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4328
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4329 # =============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4330 # Help and Version option tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4331 # =============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4332
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4333 class TestOptionalsHelpVersionActions(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4334 """Test the help and version actions"""
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4335
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4336 def _get_error(self, func, *args, **kwargs):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4337 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4338 func(*args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4339 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4340 return sys.exc_info()[1]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4341 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4342 self.assertRaises(ArgumentParserError, func, *args, **kwargs)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4343
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4344 def assertPrintHelpExit(self, parser, args_str):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4345 self.assertEqual(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4346 parser.format_help(),
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4347 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
4348
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4349 def assertArgumentParserError(self, parser, *args):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4350 self.assertRaises(ArgumentParserError, parser.parse_args, args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4351
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4352 def test_version(self):
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4353 parser = ErrorRaisingArgumentParser()
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4354 parser.add_argument('-v', '--version', action='version', version='1.0')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4355 self.assertPrintHelpExit(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4356 self.assertPrintHelpExit(parser, '--help')
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4357 self.assertRaises(AttributeError, getattr, parser, 'format_version')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4358
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4359 def test_version_format(self):
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4360 parser = ErrorRaisingArgumentParser(prog='PPP')
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4361 parser.add_argument('-v', '--version', action='version', version='%(prog)s 3.5')
85572
ec9a4b77f37b Issue #18920: argparse's default version action (for -v, --version) should
Eli Bendersky <eliben@gmail.com>
parents: 80864
diff changeset
4362 msg = self._get_error(parser.parse_args, ['-v']).stdout
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4363 self.assertEqual('PPP 3.5\n', msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4364
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4365 def test_version_no_help(self):
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4366 parser = ErrorRaisingArgumentParser(add_help=False)
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4367 parser.add_argument('-v', '--version', action='version', version='1.0')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4368 self.assertArgumentParserError(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4369 self.assertArgumentParserError(parser, '--help')
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4370 self.assertRaises(AttributeError, getattr, parser, 'format_version')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4371
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4372 def test_version_action(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4373 parser = ErrorRaisingArgumentParser(prog='XXX')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4374 parser.add_argument('-V', action='version', version='%(prog)s 3.7')
85572
ec9a4b77f37b Issue #18920: argparse's default version action (for -v, --version) should
Eli Bendersky <eliben@gmail.com>
parents: 80864
diff changeset
4375 msg = self._get_error(parser.parse_args, ['-V']).stdout
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4376 self.assertEqual('XXX 3.7\n', msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4377
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4378 def test_no_help(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4379 parser = ErrorRaisingArgumentParser(add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4380 self.assertArgumentParserError(parser, '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4381 self.assertArgumentParserError(parser, '--help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4382 self.assertArgumentParserError(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4383 self.assertArgumentParserError(parser, '--version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4384
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4385 def test_alternate_help_version(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4386 parser = ErrorRaisingArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4387 parser.add_argument('-x', action='help')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4388 parser.add_argument('-y', action='version')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4389 self.assertPrintHelpExit(parser, '-x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4390 self.assertArgumentParserError(parser, '-v')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4391 self.assertArgumentParserError(parser, '--version')
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4392 self.assertRaises(AttributeError, getattr, parser, 'format_version')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4393
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4394 def test_help_version_extra_arguments(self):
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4395 parser = ErrorRaisingArgumentParser()
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4396 parser.add_argument('--version', action='version', version='1.0')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4397 parser.add_argument('-x', action='store_true')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4398 parser.add_argument('y')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4399
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4400 # 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
4401 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
4402 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
4403 for prefix in valid_prefixes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4404 for suffix in valid_suffixes:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4405 format = '%s %%s %s' % (prefix, suffix)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4406 self.assertPrintHelpExit(parser, format % '-h')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4407 self.assertPrintHelpExit(parser, format % '--help')
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4408 self.assertRaises(AttributeError, getattr, parser, 'format_version')
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4409
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4410
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4411 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4412 # str() and repr() tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4413 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4414
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4415 class TestStrings(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4416 """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
4417
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4418 def assertStringEqual(self, obj, result_string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4419 for func in [str, repr]:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4420 self.assertEqual(func(obj), result_string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4421
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4422 def test_optional(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4423 option = argparse.Action(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4424 option_strings=['--foo', '-a', '-b'],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4425 dest='b',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4426 type='int',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4427 nargs='+',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4428 default=42,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4429 choices=[1, 2, 3],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4430 help='HELP',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4431 metavar='METAVAR')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4432 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4433 "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
4434 "nargs='+', const=None, default=42, type='int', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4435 "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
4436 self.assertStringEqual(option, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4437
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4438 def test_argument(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4439 argument = argparse.Action(
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4440 option_strings=[],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4441 dest='x',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4442 type=float,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4443 nargs='?',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4444 default=2.5,
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4445 choices=[0.5, 1.5, 2.5],
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4446 help='H HH H',
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4447 metavar='MV MV MV')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4448 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4449 "Action(option_strings=[], dest='x', nargs='?', "
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4450 "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
4451 "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
4452 self.assertStringEqual(argument, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4453
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4454 def test_namespace(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4455 ns = argparse.Namespace(foo=42, bar='spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4456 string = "Namespace(bar='spam', foo=42)"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4457 self.assertStringEqual(ns, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4458
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4459 def test_parser(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4460 parser = argparse.ArgumentParser(prog='PROG')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4461 string = (
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4462 "ArgumentParser(prog='PROG', usage=None, description=None, "
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4463 "formatter_class=%r, conflict_handler='error', "
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4464 "add_help=True)" % argparse.HelpFormatter)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4465 self.assertStringEqual(parser, string)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4466
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4467 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4468 # Namespace tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4469 # ===============
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4470
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4471 class TestNamespace(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4472
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4473 def test_constructor(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4474 ns = argparse.Namespace()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4475 self.assertRaises(AttributeError, getattr, ns, 'x')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4476
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4477 ns = argparse.Namespace(a=42, b='spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4478 self.assertEqual(ns.a, 42)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4479 self.assertEqual(ns.b, 'spam')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4480
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4481 def test_equality(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4482 ns1 = argparse.Namespace(a=1, b=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4483 ns2 = argparse.Namespace(b=2, a=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4484 ns3 = argparse.Namespace(a=1)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4485 ns4 = argparse.Namespace(b=2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4486
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4487 self.assertEqual(ns1, ns2)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4488 self.assertNotEqual(ns1, ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4489 self.assertNotEqual(ns1, ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4490 self.assertNotEqual(ns2, ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4491 self.assertNotEqual(ns2, ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4492 self.assertTrue(ns1 != ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4493 self.assertTrue(ns1 != ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4494 self.assertTrue(ns2 != ns3)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4495 self.assertTrue(ns2 != ns4)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4496
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4497
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4498 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4499 # File encoding tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4500 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4501
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4502 class TestEncoding(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4503
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4504 def _test_module_encoding(self, path):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4505 path, _ = os.path.splitext(path)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4506 path += ".py"
68142
be6c38d1817b Normalize the encoding names for Latin-1 and UTF-8 to
Marc-André Lemburg <mal@egenix.com>
parents: 67819
diff changeset
4507 with codecs.open(path, 'r', 'utf-8') as f:
65331
46956a25c264 Explicitly close some files (from issue #10093)
Antoine Pitrou <solipsis@pitrou.net>
parents: 63690
diff changeset
4508 f.read()
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4509
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4510 def test_argparse_module_encoding(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4511 self._test_module_encoding(argparse.__file__)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4512
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4513 def test_test_argparse_module_encoding(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4514 self._test_module_encoding(__file__)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4515
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4516 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4517 # ArgumentError tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4518 # ===================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4519
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4520 class TestArgumentError(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4521
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4522 def test_argument_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4523 msg = "my error here"
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4524 error = argparse.ArgumentError(None, msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4525 self.assertEqual(str(error), msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4526
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4527 # =======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4528 # ArgumentTypeError tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4529 # =======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4530
66257
d4f5e27ed186 Make test class name unique so that both test classes run.
R. David Murray <rdmurray@bitdance.com>
parents: 65887
diff changeset
4531 class TestArgumentTypeError(TestCase):
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4532
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4533 def test_argument_type_error(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4534
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4535 def spam(string):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4536 raise argparse.ArgumentTypeError('spam!')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4537
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4538 parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4539 parser.add_argument('x', type=spam)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4540 try:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4541 parser.parse_args(['XXX'])
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4542 except ArgumentParserError:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4543 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
4544 msg = sys.exc_info()[1].stderr
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4545 self.assertEqual(expected, msg)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4546 else:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4547 self.fail()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4548
70741
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4549 # =========================
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4550 # MessageContentError tests
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4551 # =========================
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4552
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4553 class TestMessageContentError(TestCase):
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4554
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4555 def test_missing_argument_name_in_message(self):
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4556 parser = ErrorRaisingArgumentParser(prog='PROG', usage='')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4557 parser.add_argument('req_pos', type=str)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4558 parser.add_argument('-req_opt', type=int, required=True)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4559 parser.add_argument('need_one', type=str, nargs='+')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4560
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4561 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4562 parser.parse_args([])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4563 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4564 self.assertRegex(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4565 self.assertRegex(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4566 self.assertRegex(msg, 'need_one')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4567 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4568 parser.parse_args(['myXargument'])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4569 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4570 self.assertNotIn(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4571 self.assertRegex(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4572 self.assertRegex(msg, 'need_one')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4573 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4574 parser.parse_args(['myXargument', '-req_opt=1'])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4575 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4576 self.assertNotIn(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4577 self.assertNotIn(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4578 self.assertRegex(msg, 'need_one')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4579
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4580 def test_optional_optional_not_in_message(self):
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4581 parser = ErrorRaisingArgumentParser(prog='PROG', usage='')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4582 parser.add_argument('req_pos', type=str)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4583 parser.add_argument('--req_opt', type=int, required=True)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4584 parser.add_argument('--opt_opt', type=bool, nargs='?',
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4585 default=True)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4586 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4587 parser.parse_args([])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4588 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4589 self.assertRegex(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4590 self.assertRegex(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4591 self.assertNotIn(msg, 'opt_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4592 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4593 parser.parse_args(['--req_opt=1'])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4594 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4595 self.assertRegex(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4596 self.assertNotIn(msg, 'req_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4597 self.assertNotIn(msg, 'opt_opt')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4598
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4599 def test_optional_positional_not_in_message(self):
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4600 parser = ErrorRaisingArgumentParser(prog='PROG', usage='')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4601 parser.add_argument('req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4602 parser.add_argument('optional_positional', nargs='?', default='eggs')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4603 with self.assertRaises(ArgumentParserError) as cm:
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4604 parser.parse_args([])
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4605 msg = str(cm.exception)
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4606 self.assertRegex(msg, 'req_pos')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4607 self.assertNotIn(msg, 'optional_positional')
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4608
cab204a79e09 #10424: argument names are now included in the missing argument message
R David Murray <rdmurray@bitdance.com>
parents: 69127
diff changeset
4609
78821
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4610 # ================================================
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4611 # Check that the type function is called only once
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4612 # ================================================
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4613
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4614 class TestTypeFunctionCallOnlyOnce(TestCase):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4615
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4616 def test_type_function_call_only_once(self):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4617 def spam(string_to_convert):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4618 self.assertEqual(string_to_convert, 'spam!')
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4619 return 'foo_converted'
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4620
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4621 parser = argparse.ArgumentParser()
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4622 parser.add_argument('--foo', type=spam, default='bar')
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4623 args = parser.parse_args('--foo spam!'.split())
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4624 self.assertEqual(NS(foo='foo_converted'), args)
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4625
79015
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4626 # ==================================================================
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4627 # Check semantics regarding the default argument and type conversion
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4628 # ==================================================================
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4629
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4630 class TestTypeFunctionCalledOnDefault(TestCase):
78821
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4631
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4632 def test_type_function_call_with_non_string_default(self):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4633 def spam(int_to_convert):
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4634 self.assertEqual(int_to_convert, 0)
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4635 return 'foo_converted'
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4636
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4637 parser = argparse.ArgumentParser()
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4638 parser.add_argument('--foo', type=spam, default=0)
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4639 args = parser.parse_args([])
79015
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4640 # foo should *not* be converted because its default is not a string.
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4641 self.assertEqual(NS(foo=0), args)
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4642
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4643 def test_type_function_call_with_string_default(self):
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4644 def spam(int_to_convert):
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4645 return 'foo_converted'
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4646
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4647 parser = argparse.ArgumentParser()
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4648 parser.add_argument('--foo', type=spam, default='0')
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4649 args = parser.parse_args([])
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4650 # foo is converted because its default is a string.
78821
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4651 self.assertEqual(NS(foo='foo_converted'), args)
1b614921aefa #12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents: 78232
diff changeset
4652
79015
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4653 def test_no_double_type_conversion_of_default(self):
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4654 def extend(str_to_convert):
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4655 return str_to_convert + '*'
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4656
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4657 parser = argparse.ArgumentParser()
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4658 parser.add_argument('--test', type=extend, default='*')
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4659 args = parser.parse_args([])
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4660 # The test argument will be two stars, one coming from the default
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4661 # value and one coming from the type conversion being called exactly
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4662 # once.
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4663 self.assertEqual(NS(test='**'), args)
088b16bd6396 A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents: 79000
diff changeset
4664
79000
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4665 def test_issue_15906(self):
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4666 # Issue #15906: When action='append', type=str, default=[] are
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4667 # providing, the dest value was the string representation "[]" when it
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4668 # should have been an empty list.
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4669 parser = argparse.ArgumentParser()
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4670 parser.add_argument('--test', dest='test', type=str,
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4671 default=[], action='append')
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4672 args = parser.parse_args([])
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4673 self.assertEqual(args.test, [])
bc342cd7ed96 - Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents: 78879
diff changeset
4674
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4675 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4676 # parse_known_args tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4677 # ======================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4678
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4679 class TestParseKnownArgs(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4680
78879
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4681 def test_arguments_tuple(self):
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4682 parser = argparse.ArgumentParser()
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4683 parser.parse_args(())
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4684
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4685 def test_arguments_list(self):
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4686 parser = argparse.ArgumentParser()
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4687 parser.parse_args([])
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4688
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4689 def test_arguments_tuple_positional(self):
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4690 parser = argparse.ArgumentParser()
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4691 parser.add_argument('x')
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4692 parser.parse_args(('x',))
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4693
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4694 def test_arguments_list_positional(self):
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4695 parser = argparse.ArgumentParser()
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4696 parser.add_argument('x')
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4697 parser.parse_args(['x'])
5d8454fcc629 #15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents: 78821
diff changeset
4698
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4699 def test_optionals(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4700 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4701 parser.add_argument('--foo')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4702 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
4703 self.assertEqual(NS(foo='F'), args)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4704 self.assertEqual(['--bar', '--baz'], extras)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4705
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4706 def test_mixed(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4707 parser = argparse.ArgumentParser()
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4708 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
4709 parser.add_argument('--spam', action='store_false')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4710 parser.add_argument('badger')
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4711
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4712 argv = ["B", "C", "--foo", "-v", "3", "4"]
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4713 args, extras = parser.parse_known_args(argv)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4714 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
4715 self.assertEqual(["C", "--foo", "4"], extras)
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4716
68967
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4717 # ==========================
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4718 # add_argument metavar tests
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4719 # ==========================
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4720
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4721 class TestAddArgumentMetavar(TestCase):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4722
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4723 EXPECTED_MESSAGE = "length of metavar tuple does not match nargs"
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4724
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4725 def do_test_no_exception(self, nargs, metavar):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4726 parser = argparse.ArgumentParser()
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4727 parser.add_argument("--foo", nargs=nargs, metavar=metavar)
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4728
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4729 def do_test_exception(self, nargs, metavar):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4730 parser = argparse.ArgumentParser()
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4731 with self.assertRaises(ValueError) as cm:
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4732 parser.add_argument("--foo", nargs=nargs, metavar=metavar)
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4733 self.assertEqual(cm.exception.args[0], self.EXPECTED_MESSAGE)
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4734
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4735 # Unit tests for different values of metavar when nargs=None
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4736
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4737 def test_nargs_None_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4738 self.do_test_no_exception(nargs=None, metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4739
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4740 def test_nargs_None_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4741 self.do_test_exception(nargs=None, metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4742
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4743 def test_nargs_None_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4744 self.do_test_no_exception(nargs=None, metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4745
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4746 def test_nargs_None_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4747 self.do_test_exception(nargs=None, metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4748
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4749 def test_nargs_None_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4750 self.do_test_exception(nargs=None, metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4751
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4752 # Unit tests for different values of metavar when nargs=?
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4753
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4754 def test_nargs_optional_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4755 self.do_test_no_exception(nargs="?", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4756
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4757 def test_nargs_optional_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4758 self.do_test_exception(nargs="?", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4759
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4760 def test_nargs_optional_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4761 self.do_test_no_exception(nargs="?", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4762
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4763 def test_nargs_optional_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4764 self.do_test_exception(nargs="?", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4765
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4766 def test_nargs_optional_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4767 self.do_test_exception(nargs="?", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4768
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4769 # Unit tests for different values of metavar when nargs=*
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4770
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4771 def test_nargs_zeroormore_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4772 self.do_test_no_exception(nargs="*", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4773
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4774 def test_nargs_zeroormore_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4775 self.do_test_exception(nargs="*", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4776
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4777 def test_nargs_zeroormore_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4778 self.do_test_no_exception(nargs="*", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4779
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4780 def test_nargs_zeroormore_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4781 self.do_test_no_exception(nargs="*", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4782
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4783 def test_nargs_zeroormore_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4784 self.do_test_exception(nargs="*", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4785
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4786 # Unit tests for different values of metavar when nargs=+
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4787
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4788 def test_nargs_oneormore_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4789 self.do_test_no_exception(nargs="+", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4790
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4791 def test_nargs_oneormore_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4792 self.do_test_exception(nargs="+", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4793
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4794 def test_nargs_oneormore_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4795 self.do_test_no_exception(nargs="+", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4796
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4797 def test_nargs_oneormore_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4798 self.do_test_no_exception(nargs="+", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4799
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4800 def test_nargs_oneormore_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4801 self.do_test_exception(nargs="+", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4802
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4803 # Unit tests for different values of metavar when nargs=...
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4804
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4805 def test_nargs_remainder_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4806 self.do_test_no_exception(nargs="...", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4807
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4808 def test_nargs_remainder_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4809 self.do_test_no_exception(nargs="...", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4810
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4811 def test_nargs_remainder_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4812 self.do_test_no_exception(nargs="...", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4813
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4814 def test_nargs_remainder_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4815 self.do_test_no_exception(nargs="...", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4816
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4817 def test_nargs_remainder_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4818 self.do_test_no_exception(nargs="...", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4819
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4820 # Unit tests for different values of metavar when nargs=A...
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4821
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4822 def test_nargs_parser_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4823 self.do_test_no_exception(nargs="A...", metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4824
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4825 def test_nargs_parser_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4826 self.do_test_exception(nargs="A...", metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4827
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4828 def test_nargs_parser_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4829 self.do_test_no_exception(nargs="A...", metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4830
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4831 def test_nargs_parser_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4832 self.do_test_exception(nargs="A...", metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4833
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4834 def test_nargs_parser_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4835 self.do_test_exception(nargs="A...", metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4836
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4837 # Unit tests for different values of metavar when nargs=1
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4838
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4839 def test_nargs_1_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4840 self.do_test_no_exception(nargs=1, metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4841
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4842 def test_nargs_1_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4843 self.do_test_exception(nargs=1, metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4844
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4845 def test_nargs_1_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4846 self.do_test_no_exception(nargs=1, metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4847
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4848 def test_nargs_1_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4849 self.do_test_exception(nargs=1, metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4850
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4851 def test_nargs_1_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4852 self.do_test_exception(nargs=1, metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4853
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4854 # Unit tests for different values of metavar when nargs=2
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4855
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4856 def test_nargs_2_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4857 self.do_test_no_exception(nargs=2, metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4858
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4859 def test_nargs_2_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4860 self.do_test_exception(nargs=2, metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4861
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4862 def test_nargs_2_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4863 self.do_test_no_exception(nargs=2, metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4864
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4865 def test_nargs_2_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4866 self.do_test_no_exception(nargs=2, metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4867
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4868 def test_nargs_2_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4869 self.do_test_exception(nargs=2, metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4870
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4871 # Unit tests for different values of metavar when nargs=3
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4872
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4873 def test_nargs_3_metavar_string(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4874 self.do_test_no_exception(nargs=3, metavar="1")
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4875
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4876 def test_nargs_3_metavar_length0(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4877 self.do_test_exception(nargs=3, metavar=tuple())
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4878
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4879 def test_nargs_3_metavar_length1(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4880 self.do_test_no_exception(nargs=3, metavar=("1"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4881
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4882 def test_nargs_3_metavar_length2(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4883 self.do_test_exception(nargs=3, metavar=("1", "2"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4884
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4885 def test_nargs_3_metavar_length3(self):
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4886 self.do_test_no_exception(nargs=3, metavar=("1", "2", "3"))
c89db9b36ea6 Issue #9348: Raise an early error if argparse nargs and metavar don't match.
Steven Bethard <steven.bethard@gmail.com>
parents: 67819
diff changeset
4887
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4888 # ============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4889 # from argparse import * tests
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4890 # ============================
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4891
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4892 class TestImportStar(TestCase):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4893
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4894 def test(self):
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4895 for name in argparse.__all__:
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4896 self.assertTrue(hasattr(argparse, name))
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4897
65863
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4898 def test_all_exports_everything_but_modules(self):
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4899 items = [
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4900 name
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4901 for name, value in vars(argparse).items()
66721
1827a8ac9b18 Use proper plural forms in argparse (#4391)
Éric Araujo <merwok@netwok.org>
parents: 66310
diff changeset
4902 if not (name.startswith("_") or name == 'ngettext')
65863
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4903 if not inspect.ismodule(value)
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4904 ]
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4905 self.assertEqual(sorted(items), sorted(argparse.__all__))
e71c2e1daf57 Get argparse.__all__ back up to date (issue 9353)
Steven Bethard <steven.bethard@gmail.com>
parents: 65857
diff changeset
4906
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4907 def test_main():
77972
5393382c1b1d Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 74317
diff changeset
4908 support.run_unittest(__name__)
59285
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4909 # 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
4910 RFile.seen = {}
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4911 WFile.seen = set()
2d241765e631 Merged revisions 78604 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59282
diff changeset
4912
59275
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4913
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4914
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4915 if __name__ == '__main__':
12bcb69938b3 Merged revisions 78586-78593 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 59258
diff changeset
4916 test_main()