Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_argparse.py @ 80661:94de77bd0b4b 2.7
Issue #16194: document imp.load_dynamic problems
when read several extension modules from the same binary object file.
| author | Andrew Svetlov <andrew.svetlov@gmail.com> |
|---|---|
| date | Thu, 29 Nov 2012 19:51:28 +0200 |
| parents | 8f847f66a49f |
| children |
| rev | line source |
|---|---|
|
59989
2e0813d6738d
Replace license with simple attribution.
Steven Bethard <steven.bethard@gmail.com>
parents:
59423
diff
changeset
|
1 # Author: Steven J. Bethard <steven.bethard@gmail.com>. |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3 import codecs |
|
65864
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4 import inspect |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
5 import os |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
6 import shutil |
|
67744
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
7 import stat |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
8 import sys |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
9 import textwrap |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
10 import tempfile |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
11 import unittest |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
12 import argparse |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
13 |
|
59281
eba942e77895
remove cross-version compatibility code
Benjamin Peterson <benjamin@python.org>
parents:
59280
diff
changeset
|
14 from StringIO import StringIO |
|
eba942e77895
remove cross-version compatibility code
Benjamin Peterson <benjamin@python.org>
parents:
59280
diff
changeset
|
15 |
|
60453
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
16 class StdIOBuffer(StringIO): |
|
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
17 pass |
|
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
18 |
|
59270
82eda345a5f6
enable running of argparse tests and fix two that failed in the new environment
Benjamin Peterson <benjamin@python.org>
parents:
59268
diff
changeset
|
19 from test import test_support |
|
82eda345a5f6
enable running of argparse tests and fix two that failed in the new environment
Benjamin Peterson <benjamin@python.org>
parents:
59268
diff
changeset
|
20 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
21 class TestCase(unittest.TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
22 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
23 def assertEqual(self, obj1, obj2): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
24 if obj1 != obj2: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
25 print('') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
26 print(repr(obj1)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
27 print(repr(obj2)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
28 print(obj1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
29 print(obj2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
30 super(TestCase, self).assertEqual(obj1, obj2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
31 |
|
65860
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
32 def setUp(self): |
|
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
33 # The tests assume that line wrapping occurs at 80 columns, but this |
|
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
34 # behaviour can be overridden by setting the COLUMNS environment |
|
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
35 # variable. To ensure that this assumption is true, unset COLUMNS. |
|
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
36 env = test_support.EnvironmentVarGuard() |
|
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
37 env.unset("COLUMNS") |
|
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
38 self.addCleanup(env.__exit__) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
39 |
|
60453
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
40 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
41 class TempDirMixin(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
42 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
43 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
44 self.temp_dir = tempfile.mkdtemp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
45 self.old_dir = os.getcwd() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
46 os.chdir(self.temp_dir) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
47 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
48 def tearDown(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
49 os.chdir(self.old_dir) |
|
67744
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
50 shutil.rmtree(self.temp_dir, True) |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
51 |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
52 def create_readonly_file(self, filename): |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
53 file_path = os.path.join(self.temp_dir, filename) |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
54 with open(file_path, 'w') as file: |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
55 file.write(filename) |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
56 os.chmod(file_path, stat.S_IREAD) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
57 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
58 class Sig(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
59 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
60 def __init__(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
61 self.args = args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
62 self.kwargs = kwargs |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
63 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
64 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
65 class NS(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
66 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
67 def __init__(self, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
68 self.__dict__.update(kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
69 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
70 def __repr__(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
71 sorted_items = sorted(self.__dict__.items()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
72 kwarg_str = ', '.join(['%s=%r' % tup for tup in sorted_items]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
73 return '%s(%s)' % (type(self).__name__, kwarg_str) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
74 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
75 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
76 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
77 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
78 return vars(self) == vars(other) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
79 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
80 def __ne__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
81 return not (self == other) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
82 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
83 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
84 class ArgumentParserError(Exception): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
85 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
86 def __init__(self, message, stdout=None, stderr=None, error_code=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
87 Exception.__init__(self, message, stdout, stderr) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
88 self.message = message |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
89 self.stdout = stdout |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
90 self.stderr = stderr |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
91 self.error_code = error_code |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
92 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
93 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
94 def stderr_to_parser_error(parse_args, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
95 # if this is being called recursively and stderr or stdout is already being |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
96 # redirected, simply call the function and let the enclosing function |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
97 # catch the exception |
|
60453
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
98 if isinstance(sys.stderr, StdIOBuffer) or isinstance(sys.stdout, StdIOBuffer): |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
99 return parse_args(*args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
100 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
101 # if this is not being called recursively, redirect stderr and |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
102 # use it as the ArgumentParserError message |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
103 old_stdout = sys.stdout |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
104 old_stderr = sys.stderr |
|
60453
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
105 sys.stdout = StdIOBuffer() |
|
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
106 sys.stderr = StdIOBuffer() |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
107 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
108 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
109 result = parse_args(*args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
110 for key in list(vars(result)): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
111 if getattr(result, key) is sys.stdout: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
112 setattr(result, key, old_stdout) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
113 if getattr(result, key) is sys.stderr: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
114 setattr(result, key, old_stderr) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
115 return result |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
116 except SystemExit: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
117 code = sys.exc_info()[1].code |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
118 stdout = sys.stdout.getvalue() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
119 stderr = sys.stderr.getvalue() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
120 raise ArgumentParserError("SystemExit", stdout, stderr, code) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
121 finally: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
122 sys.stdout = old_stdout |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
123 sys.stderr = old_stderr |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
124 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
125 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
126 class ErrorRaisingArgumentParser(argparse.ArgumentParser): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
127 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
128 def parse_args(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
129 parse_args = super(ErrorRaisingArgumentParser, self).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
130 return stderr_to_parser_error(parse_args, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
131 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
132 def exit(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
133 exit = super(ErrorRaisingArgumentParser, self).exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
134 return stderr_to_parser_error(exit, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
135 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
136 def error(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
137 error = super(ErrorRaisingArgumentParser, self).error |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
138 return stderr_to_parser_error(error, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
139 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
140 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
141 class ParserTesterMetaclass(type): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
142 """Adds parser tests using the class attributes. |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
143 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
144 Classes of this type should specify the following attributes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
145 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
146 argument_signatures -- a list of Sig objects which specify |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
147 the signatures of Argument objects to be created |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
148 failures -- a list of args lists that should cause the parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
149 to fail |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
150 successes -- a list of (initial_args, options, remaining_args) tuples |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
151 where initial_args specifies the string args to be parsed, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
152 options is a dict that should match the vars() of the options |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
153 parsed out of initial_args, and remaining_args should be any |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
154 remaining unparsed arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
155 """ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
156 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
157 def __init__(cls, name, bases, bodydict): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
158 if name == 'ParserTestCase': |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
159 return |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
160 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
161 # default parser signature is empty |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
162 if not hasattr(cls, 'parser_signature'): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
163 cls.parser_signature = Sig() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
164 if not hasattr(cls, 'parser_class'): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
165 cls.parser_class = ErrorRaisingArgumentParser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
166 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
167 # --------------------------------------- |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
168 # functions for adding optional arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
169 # --------------------------------------- |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
170 def no_groups(parser, argument_signatures): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
171 """Add all arguments directly to the parser""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
172 for sig in argument_signatures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
173 parser.add_argument(*sig.args, **sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
174 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
175 def one_group(parser, argument_signatures): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
176 """Add all arguments under a single group in the parser""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
177 group = parser.add_argument_group('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
178 for sig in argument_signatures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
179 group.add_argument(*sig.args, **sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
180 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
181 def many_groups(parser, argument_signatures): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
182 """Add each argument in its own group to the parser""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
183 for i, sig in enumerate(argument_signatures): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
184 group = parser.add_argument_group('foo:%i' % i) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
185 group.add_argument(*sig.args, **sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
186 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
187 # -------------------------- |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
188 # functions for parsing args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
189 # -------------------------- |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
190 def listargs(parser, args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
191 """Parse the args by passing in a list""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
192 return parser.parse_args(args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
193 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
194 def sysargs(parser, args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
195 """Parse the args by defaulting to sys.argv""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
196 old_sys_argv = sys.argv |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
197 sys.argv = [old_sys_argv[0]] + args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
198 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
199 return parser.parse_args() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
200 finally: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
201 sys.argv = old_sys_argv |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
202 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
203 # class that holds the combination of one optional argument |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
204 # addition method and one arg parsing method |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
205 class AddTests(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
206 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
207 def __init__(self, tester_cls, add_arguments, parse_args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
208 self._add_arguments = add_arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
209 self._parse_args = parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
210 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
211 add_arguments_name = self._add_arguments.__name__ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
212 parse_args_name = self._parse_args.__name__ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
213 for test_func in [self.test_failures, self.test_successes]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
214 func_name = test_func.__name__ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
215 names = func_name, add_arguments_name, parse_args_name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
216 test_name = '_'.join(names) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
217 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
218 def wrapper(self, test_func=test_func): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
219 test_func(self) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
220 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
221 wrapper.__name__ = test_name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
222 except TypeError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
223 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
224 setattr(tester_cls, test_name, wrapper) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
225 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
226 def _get_parser(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
227 args = tester.parser_signature.args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
228 kwargs = tester.parser_signature.kwargs |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
229 parser = tester.parser_class(*args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
230 self._add_arguments(parser, tester.argument_signatures) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
231 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
232 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
233 def test_failures(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
234 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
235 for args_str in tester.failures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
236 args = args_str.split() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
237 raises = tester.assertRaises |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
238 raises(ArgumentParserError, parser.parse_args, args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
239 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
240 def test_successes(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
241 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
242 for args, expected_ns in tester.successes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
243 if isinstance(args, str): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
244 args = args.split() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
245 result_ns = self._parse_args(parser, args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
246 tester.assertEqual(expected_ns, result_ns) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
247 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
248 # add tests for each combination of an optionals adding method |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
249 # and an arg parsing method |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
250 for add_arguments in [no_groups, one_group, many_groups]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
251 for parse_args in [listargs, sysargs]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
252 AddTests(cls, add_arguments, parse_args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
253 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
254 bases = TestCase, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
255 ParserTestCase = ParserTesterMetaclass('ParserTestCase', bases, {}) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
256 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
257 # =============== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
258 # Optionals tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
259 # =============== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
260 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
261 class TestOptionalsSingleDash(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
262 """Test an Optional with a single-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
263 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
264 argument_signatures = [Sig('-x')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
265 failures = ['-x', 'a', '--foo', '-x --foo', '-x -y'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
266 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
267 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
268 ('-x a', NS(x='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
269 ('-xa', NS(x='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
270 ('-x -1', NS(x='-1')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
271 ('-x-1', NS(x='-1')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
272 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
273 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
274 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
275 class TestOptionalsSingleDashCombined(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
276 """Test an Optional with a single-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
277 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
278 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
279 Sig('-x', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
280 Sig('-yyy', action='store_const', const=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
281 Sig('-z'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
282 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
283 failures = ['a', '--foo', '-xa', '-x --foo', '-x -z', '-z -x', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
284 '-yx', '-yz a', '-yyyx', '-yyyza', '-xyza'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
285 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
286 ('', NS(x=False, yyy=None, z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
287 ('-x', NS(x=True, yyy=None, z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
288 ('-za', NS(x=False, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
289 ('-z a', NS(x=False, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
290 ('-xza', NS(x=True, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
291 ('-xz a', NS(x=True, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
292 ('-x -za', NS(x=True, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
293 ('-x -z a', NS(x=True, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
294 ('-y', NS(x=False, yyy=42, z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
295 ('-yyy', NS(x=False, yyy=42, z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
296 ('-x -yyy -za', NS(x=True, yyy=42, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
297 ('-x -yyy -z a', NS(x=True, yyy=42, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
298 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
299 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
300 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
301 class TestOptionalsSingleDashLong(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
302 """Test an Optional with a multi-character single-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
303 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
304 argument_signatures = [Sig('-foo')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
305 failures = ['-foo', 'a', '--foo', '-foo --foo', '-foo -y', '-fooa'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
306 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
307 ('', NS(foo=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
308 ('-foo a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
309 ('-foo -1', NS(foo='-1')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
310 ('-fo a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
311 ('-f a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
312 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
313 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
314 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
315 class TestOptionalsSingleDashSubsetAmbiguous(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
316 """Test Optionals where option strings are subsets of each other""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
317 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
318 argument_signatures = [Sig('-f'), Sig('-foobar'), Sig('-foorab')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
319 failures = ['-f', '-foo', '-fo', '-foo b', '-foob', '-fooba', '-foora'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
320 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
321 ('', NS(f=None, foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
322 ('-f a', NS(f='a', foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
323 ('-fa', NS(f='a', foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
324 ('-foa', NS(f='oa', foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
325 ('-fooa', NS(f='ooa', foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
326 ('-foobar a', NS(f=None, foobar='a', foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
327 ('-foorab a', NS(f=None, foobar=None, foorab='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
328 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
329 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
330 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
331 class TestOptionalsSingleDashAmbiguous(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
332 """Test Optionals that partially match but are not subsets""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
333 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
334 argument_signatures = [Sig('-foobar'), Sig('-foorab')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
335 failures = ['-f', '-f a', '-fa', '-foa', '-foo', '-fo', '-foo b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
336 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
337 ('', NS(foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
338 ('-foob a', NS(foobar='a', foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
339 ('-foor a', NS(foobar=None, foorab='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
340 ('-fooba a', NS(foobar='a', foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
341 ('-foora a', NS(foobar=None, foorab='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
342 ('-foobar a', NS(foobar='a', foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
343 ('-foorab a', NS(foobar=None, foorab='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
344 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
345 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
346 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
347 class TestOptionalsNumeric(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
348 """Test an Optional with a short opt string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
349 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
350 argument_signatures = [Sig('-1', dest='one')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
351 failures = ['-1', 'a', '-1 --foo', '-1 -y', '-1 -1', '-1 -2'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
352 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
353 ('', NS(one=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
354 ('-1 a', NS(one='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
355 ('-1a', NS(one='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
356 ('-1-2', NS(one='-2')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
357 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
358 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
359 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
360 class TestOptionalsDoubleDash(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
361 """Test an Optional with a double-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
362 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
363 argument_signatures = [Sig('--foo')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
364 failures = ['--foo', '-f', '-f a', 'a', '--foo -x', '--foo --bar'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
365 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
366 ('', NS(foo=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
367 ('--foo a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
368 ('--foo=a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
369 ('--foo -2.5', NS(foo='-2.5')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
370 ('--foo=-2.5', NS(foo='-2.5')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
371 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
372 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
373 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
374 class TestOptionalsDoubleDashPartialMatch(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
375 """Tests partial matching with a double-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
376 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
377 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
378 Sig('--badger', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
379 Sig('--bat'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
380 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
381 failures = ['--bar', '--b', '--ba', '--b=2', '--ba=4', '--badge 5'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
382 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
383 ('', NS(badger=False, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
384 ('--bat X', NS(badger=False, bat='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
385 ('--bad', NS(badger=True, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
386 ('--badg', NS(badger=True, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
387 ('--badge', NS(badger=True, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
388 ('--badger', NS(badger=True, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
389 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
390 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
391 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
392 class TestOptionalsDoubleDashPrefixMatch(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
393 """Tests when one double-dash option string is a prefix of another""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
394 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
395 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
396 Sig('--badger', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
397 Sig('--ba'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
398 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
399 failures = ['--bar', '--b', '--ba', '--b=2', '--badge 5'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
400 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
401 ('', NS(badger=False, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
402 ('--ba X', NS(badger=False, ba='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
403 ('--ba=X', NS(badger=False, ba='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
404 ('--bad', NS(badger=True, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
405 ('--badg', NS(badger=True, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
406 ('--badge', NS(badger=True, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
407 ('--badger', NS(badger=True, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
408 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
409 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
410 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
411 class TestOptionalsSingleDoubleDash(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
412 """Test an Optional with single- and double-dash option strings""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
413 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
414 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
415 Sig('-f', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
416 Sig('--bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
417 Sig('-baz', action='store_const', const=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
418 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
419 failures = ['--bar', '-fbar', '-fbaz', '-bazf', '-b B', 'B'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
420 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
421 ('', NS(f=False, bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
422 ('-f', NS(f=True, bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
423 ('--ba B', NS(f=False, bar='B', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
424 ('-f --bar B', NS(f=True, bar='B', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
425 ('-f -b', NS(f=True, bar=None, baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
426 ('-ba -f', NS(f=True, bar=None, baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
427 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
428 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
429 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
430 class TestOptionalsAlternatePrefixChars(ParserTestCase): |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
431 """Test an Optional with option strings with custom prefixes""" |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
432 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
433 parser_signature = Sig(prefix_chars='+:/', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
434 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
435 Sig('+f', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
436 Sig('::bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
437 Sig('/baz', action='store_const', const=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
438 ] |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
439 failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz', '-h', '--help', '+h', '::help', '/help'] |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
440 successes = [ |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
441 ('', NS(f=False, bar=None, baz=None)), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
442 ('+f', NS(f=True, bar=None, baz=None)), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
443 ('::ba B', NS(f=False, bar='B', baz=None)), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
444 ('+f ::bar B', NS(f=True, bar='B', baz=None)), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
445 ('+f /b', NS(f=True, bar=None, baz=42)), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
446 ('/ba +f', NS(f=True, bar=None, baz=42)), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
447 ] |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
448 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
449 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
450 class TestOptionalsAlternatePrefixCharsAddedHelp(ParserTestCase): |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
451 """When ``-`` not in prefix_chars, default operators created for help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
452 should use the prefix_chars in use rather than - or -- |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
453 http://bugs.python.org/issue9444""" |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
454 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
455 parser_signature = Sig(prefix_chars='+:/', add_help=True) |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
456 argument_signatures = [ |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
457 Sig('+f', action='store_true'), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
458 Sig('::bar'), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
459 Sig('/baz', action='store_const', const=42), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
460 ] |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
461 failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
462 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
463 ('', NS(f=False, bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
464 ('+f', NS(f=True, bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
465 ('::ba B', NS(f=False, bar='B', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
466 ('+f ::bar B', NS(f=True, bar='B', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
467 ('+f /b', NS(f=True, bar=None, baz=42)), |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
468 ('/ba +f', NS(f=True, bar=None, baz=42)) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
469 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
470 |
|
65868
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
471 |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
472 class TestOptionalsAlternatePrefixCharsMultipleShortArgs(ParserTestCase): |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
473 """Verify that Optionals must be called with their defined prefixes""" |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
474 |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
475 parser_signature = Sig(prefix_chars='+-', add_help=False) |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
476 argument_signatures = [ |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
477 Sig('-x', action='store_true'), |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
478 Sig('+y', action='store_true'), |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
479 Sig('+z', action='store_true'), |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
480 ] |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
481 failures = ['-w', |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
482 '-xyz', |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
483 '+x', |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
484 '-y', |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
485 '+xyz', |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
486 ] |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
487 successes = [ |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
488 ('', NS(x=False, y=False, z=False)), |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
489 ('-x', NS(x=True, y=False, z=False)), |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
490 ('+y -x', NS(x=True, y=True, z=False)), |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
491 ('+yz -x', NS(x=True, y=True, z=True)), |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
492 ] |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
493 |
|
848912789b79
Merged revisions 86090 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65864
diff
changeset
|
494 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
495 class TestOptionalsShortLong(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
496 """Test a combination of single- and double-dash option strings""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
497 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
498 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
499 Sig('-v', '--verbose', '-n', '--noisy', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
500 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
501 failures = ['--x --verbose', '-N', 'a', '-v x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
502 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
503 ('', NS(verbose=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
504 ('-v', NS(verbose=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
505 ('--verbose', NS(verbose=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
506 ('-n', NS(verbose=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
507 ('--noisy', NS(verbose=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
508 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
509 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
510 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
511 class TestOptionalsDest(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
512 """Tests various means of setting destination""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
513 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
514 argument_signatures = [Sig('--foo-bar'), Sig('--baz', dest='zabbaz')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
515 failures = ['a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
516 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
517 ('--foo-bar f', NS(foo_bar='f', zabbaz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
518 ('--baz g', NS(foo_bar=None, zabbaz='g')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
519 ('--foo-bar h --baz i', NS(foo_bar='h', zabbaz='i')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
520 ('--baz j --foo-bar k', NS(foo_bar='k', zabbaz='j')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
521 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
522 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
523 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
524 class TestOptionalsDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
525 """Tests specifying a default for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
526 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
527 argument_signatures = [Sig('-x'), Sig('-y', default=42)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
528 failures = ['a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
529 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
530 ('', NS(x=None, y=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
531 ('-xx', NS(x='x', y=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
532 ('-yy', NS(x=None, y='y')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
533 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
534 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
535 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
536 class TestOptionalsNargsDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
537 """Tests not specifying the number of args for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
538 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
539 argument_signatures = [Sig('-x')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
540 failures = ['a', '-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
541 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
542 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
543 ('-x a', NS(x='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
544 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
545 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
546 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
547 class TestOptionalsNargs1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
548 """Tests specifying the 1 arg for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
549 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
550 argument_signatures = [Sig('-x', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
551 failures = ['a', '-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
552 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
553 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
554 ('-x a', NS(x=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
555 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
556 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
557 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
558 class TestOptionalsNargs3(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
559 """Tests specifying the 3 args for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
560 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
561 argument_signatures = [Sig('-x', nargs=3)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
562 failures = ['a', '-x', '-x a', '-x a b', 'a -x', 'a -x b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
563 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
564 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
565 ('-x a b c', NS(x=['a', 'b', 'c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
566 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
567 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
568 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
569 class TestOptionalsNargsOptional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
570 """Tests specifying an Optional arg for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
571 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
572 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
573 Sig('-w', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
574 Sig('-x', nargs='?', const=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
575 Sig('-y', nargs='?', default='spam'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
576 Sig('-z', nargs='?', type=int, const='42', default='84'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
577 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
578 failures = ['2'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
579 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
580 ('', NS(w=None, x=None, y='spam', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
581 ('-w', NS(w=None, x=None, y='spam', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
582 ('-w 2', NS(w='2', x=None, y='spam', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
583 ('-x', NS(w=None, x=42, y='spam', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
584 ('-x 2', NS(w=None, x='2', y='spam', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
585 ('-y', NS(w=None, x=None, y=None, z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
586 ('-y 2', NS(w=None, x=None, y='2', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
587 ('-z', NS(w=None, x=None, y='spam', z=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
588 ('-z 2', NS(w=None, x=None, y='spam', z=2)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
589 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
590 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
591 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
592 class TestOptionalsNargsZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
593 """Tests specifying an args for an Optional that accepts zero or more""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
594 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
595 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
596 Sig('-x', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
597 Sig('-y', nargs='*', default='spam'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
598 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
599 failures = ['a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
600 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
601 ('', NS(x=None, y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
602 ('-x', NS(x=[], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
603 ('-x a', NS(x=['a'], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
604 ('-x a b', NS(x=['a', 'b'], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
605 ('-y', NS(x=None, y=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
606 ('-y a', NS(x=None, y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
607 ('-y a b', NS(x=None, y=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
608 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
609 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
610 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
611 class TestOptionalsNargsOneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
612 """Tests specifying an args for an Optional that accepts one or more""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
613 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
614 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
615 Sig('-x', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
616 Sig('-y', nargs='+', default='spam'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
617 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
618 failures = ['a', '-x', '-y', 'a -x', 'a -y b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
619 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
620 ('', NS(x=None, y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
621 ('-x a', NS(x=['a'], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
622 ('-x a b', NS(x=['a', 'b'], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
623 ('-y a', NS(x=None, y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
624 ('-y a b', NS(x=None, y=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
625 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
626 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
627 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
628 class TestOptionalsChoices(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
629 """Tests specifying the choices for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
630 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
631 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
632 Sig('-f', choices='abc'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
633 Sig('-g', type=int, choices=range(5))] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
634 failures = ['a', '-f d', '-fad', '-ga', '-g 6'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
635 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
636 ('', NS(f=None, g=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
637 ('-f a', NS(f='a', g=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
638 ('-f c', NS(f='c', g=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
639 ('-g 0', NS(f=None, g=0)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
640 ('-g 03', NS(f=None, g=3)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
641 ('-fb -g4', NS(f='b', g=4)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
642 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
643 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
644 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
645 class TestOptionalsRequired(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
646 """Tests the an optional action that is required""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
647 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
648 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
649 Sig('-x', type=int, required=True), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
650 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
651 failures = ['a', ''] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
652 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
653 ('-x 1', NS(x=1)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
654 ('-x42', NS(x=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
655 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
656 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
657 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
658 class TestOptionalsActionStore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
659 """Tests the store action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
660 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
661 argument_signatures = [Sig('-x', action='store')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
662 failures = ['a', 'a -x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
663 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
664 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
665 ('-xfoo', NS(x='foo')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
666 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
667 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
668 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
669 class TestOptionalsActionStoreConst(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
670 """Tests the store_const action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
671 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
672 argument_signatures = [Sig('-y', action='store_const', const=object)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
673 failures = ['a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
674 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
675 ('', NS(y=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
676 ('-y', NS(y=object)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
677 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
678 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
679 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
680 class TestOptionalsActionStoreFalse(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
681 """Tests the store_false action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
682 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
683 argument_signatures = [Sig('-z', action='store_false')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
684 failures = ['a', '-za', '-z a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
685 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
686 ('', NS(z=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
687 ('-z', NS(z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
688 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
689 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
690 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
691 class TestOptionalsActionStoreTrue(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
692 """Tests the store_true action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
693 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
694 argument_signatures = [Sig('--apple', action='store_true')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
695 failures = ['a', '--apple=b', '--apple b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
696 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
697 ('', NS(apple=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
698 ('--apple', NS(apple=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
699 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
700 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
701 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
702 class TestOptionalsActionAppend(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
703 """Tests the append action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
704 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
705 argument_signatures = [Sig('--baz', action='append')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
706 failures = ['a', '--baz', 'a --baz', '--baz a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
707 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
708 ('', NS(baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
709 ('--baz a', NS(baz=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
710 ('--baz a --baz b', NS(baz=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
711 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
712 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
713 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
714 class TestOptionalsActionAppendWithDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
715 """Tests the append action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
716 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
717 argument_signatures = [Sig('--baz', action='append', default=['X'])] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
718 failures = ['a', '--baz', 'a --baz', '--baz a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
719 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
720 ('', NS(baz=['X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
721 ('--baz a', NS(baz=['X', 'a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
722 ('--baz a --baz b', NS(baz=['X', 'a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
723 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
724 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
725 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
726 class TestOptionalsActionAppendConst(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
727 """Tests the append_const action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
728 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
729 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
730 Sig('-b', action='append_const', const=Exception), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
731 Sig('-c', action='append', dest='b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
732 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
733 failures = ['a', '-c', 'a -c', '-bx', '-b x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
734 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
735 ('', NS(b=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
736 ('-b', NS(b=[Exception])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
737 ('-b -cx -b -cyz', NS(b=[Exception, 'x', Exception, 'yz'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
738 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
739 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
740 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
741 class TestOptionalsActionAppendConstWithDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
742 """Tests the append_const action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
743 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
744 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
745 Sig('-b', action='append_const', const=Exception, default=['X']), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
746 Sig('-c', action='append', dest='b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
747 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
748 failures = ['a', '-c', 'a -c', '-bx', '-b x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
749 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
750 ('', NS(b=['X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
751 ('-b', NS(b=['X', Exception])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
752 ('-b -cx -b -cyz', NS(b=['X', Exception, 'x', Exception, 'yz'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
753 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
754 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
755 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
756 class TestOptionalsActionCount(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
757 """Tests the count action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
758 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
759 argument_signatures = [Sig('-x', action='count')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
760 failures = ['a', '-x a', '-x b', '-x a -x b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
761 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
762 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
763 ('-x', NS(x=1)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
764 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
765 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
766 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
767 # ================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
768 # Positional tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
769 # ================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
770 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
771 class TestPositionalsNargsNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
772 """Test a Positional that doesn't specify nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
773 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
774 argument_signatures = [Sig('foo')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
775 failures = ['', '-x', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
776 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
777 ('a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
778 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
779 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
780 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
781 class TestPositionalsNargs1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
782 """Test a Positional that specifies an nargs of 1""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
783 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
784 argument_signatures = [Sig('foo', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
785 failures = ['', '-x', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
786 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
787 ('a', NS(foo=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
788 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
789 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
790 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
791 class TestPositionalsNargs2(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
792 """Test a Positional that specifies an nargs of 2""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
793 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
794 argument_signatures = [Sig('foo', nargs=2)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
795 failures = ['', 'a', '-x', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
796 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
797 ('a b', NS(foo=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
798 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
799 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
800 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
801 class TestPositionalsNargsZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
802 """Test a Positional that specifies unlimited nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
803 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
804 argument_signatures = [Sig('foo', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
805 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
806 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
807 ('', NS(foo=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
808 ('a', NS(foo=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
809 ('a b', NS(foo=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
810 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
811 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
812 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
813 class TestPositionalsNargsZeroOrMoreDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
814 """Test a Positional that specifies unlimited nargs and a default""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
815 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
816 argument_signatures = [Sig('foo', nargs='*', default='bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
817 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
818 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
819 ('', NS(foo='bar')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
820 ('a', NS(foo=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
821 ('a b', NS(foo=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
822 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
823 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
824 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
825 class TestPositionalsNargsOneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
826 """Test a Positional that specifies one or more nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
827 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
828 argument_signatures = [Sig('foo', nargs='+')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
829 failures = ['', '-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
830 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
831 ('a', NS(foo=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
832 ('a b', NS(foo=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
833 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
834 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
835 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
836 class TestPositionalsNargsOptional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
837 """Tests an Optional Positional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
838 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
839 argument_signatures = [Sig('foo', nargs='?')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
840 failures = ['-x', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
841 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
842 ('', NS(foo=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
843 ('a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
844 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
845 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
846 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
847 class TestPositionalsNargsOptionalDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
848 """Tests an Optional Positional with a default value""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
849 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
850 argument_signatures = [Sig('foo', nargs='?', default=42)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
851 failures = ['-x', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
852 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
853 ('', NS(foo=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
854 ('a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
855 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
856 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
857 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
858 class TestPositionalsNargsOptionalConvertedDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
859 """Tests an Optional Positional with a default value |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
860 that needs to be converted to the appropriate type. |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
861 """ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
862 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
863 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
864 Sig('foo', nargs='?', type=int, default='42'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
865 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
866 failures = ['-x', 'a b', '1 2'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
867 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
868 ('', NS(foo=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
869 ('1', NS(foo=1)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
870 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
871 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
872 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
873 class TestPositionalsNargsNoneNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
874 """Test two Positionals that don't specify nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
875 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
876 argument_signatures = [Sig('foo'), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
877 failures = ['', '-x', 'a', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
878 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
879 ('a b', NS(foo='a', bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
880 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
881 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
882 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
883 class TestPositionalsNargsNone1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
884 """Test a Positional with no nargs followed by one with 1""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
885 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
886 argument_signatures = [Sig('foo'), Sig('bar', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
887 failures = ['', '--foo', 'a', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
888 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
889 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
890 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
891 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
892 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
893 class TestPositionalsNargs2None(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
894 """Test a Positional with 2 nargs followed by one with none""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
895 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
896 argument_signatures = [Sig('foo', nargs=2), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
897 failures = ['', '--foo', 'a', 'a b', 'a b c d'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
898 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
899 ('a b c', NS(foo=['a', 'b'], bar='c')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
900 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
901 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
902 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
903 class TestPositionalsNargsNoneZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
904 """Test a Positional with no nargs followed by one with unlimited""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
905 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
906 argument_signatures = [Sig('foo'), Sig('bar', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
907 failures = ['', '--foo'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
908 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
909 ('a', NS(foo='a', bar=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
910 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
911 ('a b c', NS(foo='a', bar=['b', 'c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
912 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
913 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
914 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
915 class TestPositionalsNargsNoneOneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
916 """Test a Positional with no nargs followed by one with one or more""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
917 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
918 argument_signatures = [Sig('foo'), Sig('bar', nargs='+')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
919 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
920 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
921 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
922 ('a b c', NS(foo='a', bar=['b', 'c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
923 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
924 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
925 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
926 class TestPositionalsNargsNoneOptional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
927 """Test a Positional with no nargs followed by one with an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
928 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
929 argument_signatures = [Sig('foo'), Sig('bar', nargs='?')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
930 failures = ['', '--foo', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
931 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
932 ('a', NS(foo='a', bar=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
933 ('a b', NS(foo='a', bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
934 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
935 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
936 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
937 class TestPositionalsNargsZeroOrMoreNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
938 """Test a Positional with unlimited nargs followed by one with none""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
939 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
940 argument_signatures = [Sig('foo', nargs='*'), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
941 failures = ['', '--foo'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
942 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
943 ('a', NS(foo=[], bar='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
944 ('a b', NS(foo=['a'], bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
945 ('a b c', NS(foo=['a', 'b'], bar='c')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
946 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
947 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
948 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
949 class TestPositionalsNargsOneOrMoreNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
950 """Test a Positional with one or more nargs followed by one with none""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
951 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
952 argument_signatures = [Sig('foo', nargs='+'), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
953 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
954 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
955 ('a b', NS(foo=['a'], bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
956 ('a b c', NS(foo=['a', 'b'], bar='c')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
957 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
958 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
959 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
960 class TestPositionalsNargsOptionalNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
961 """Test a Positional with an Optional nargs followed by one with none""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
962 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
963 argument_signatures = [Sig('foo', nargs='?', default=42), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
964 failures = ['', '--foo', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
965 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
966 ('a', NS(foo=42, bar='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
967 ('a b', NS(foo='a', bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
968 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
969 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
970 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
971 class TestPositionalsNargs2ZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
972 """Test a Positional with 2 nargs followed by one with unlimited""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
973 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
974 argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
975 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
976 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
977 ('a b', NS(foo=['a', 'b'], bar=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
978 ('a b c', NS(foo=['a', 'b'], bar=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
979 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
980 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
981 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
982 class TestPositionalsNargs2OneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
983 """Test a Positional with 2 nargs followed by one with one or more""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
984 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
985 argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='+')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
986 failures = ['', '--foo', 'a', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
987 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
988 ('a b c', NS(foo=['a', 'b'], bar=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
989 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
990 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
991 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
992 class TestPositionalsNargs2Optional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
993 """Test a Positional with 2 nargs followed by one optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
994 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
995 argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='?')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
996 failures = ['', '--foo', 'a', 'a b c d'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
997 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
998 ('a b', NS(foo=['a', 'b'], bar=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
999 ('a b c', NS(foo=['a', 'b'], bar='c')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1000 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1001 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1002 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1003 class TestPositionalsNargsZeroOrMore1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1004 """Test a Positional with unlimited nargs followed by one with 1""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1005 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1006 argument_signatures = [Sig('foo', nargs='*'), Sig('bar', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1007 failures = ['', '--foo', ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1008 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1009 ('a', NS(foo=[], bar=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1010 ('a b', NS(foo=['a'], bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1011 ('a b c', NS(foo=['a', 'b'], bar=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1012 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1013 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1014 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1015 class TestPositionalsNargsOneOrMore1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1016 """Test a Positional with one or more nargs followed by one with 1""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1017 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1018 argument_signatures = [Sig('foo', nargs='+'), Sig('bar', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1019 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1020 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1021 ('a b', NS(foo=['a'], bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1022 ('a b c', NS(foo=['a', 'b'], bar=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1023 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1024 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1025 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1026 class TestPositionalsNargsOptional1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1027 """Test a Positional with an Optional nargs followed by one with 1""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1028 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1029 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1030 failures = ['', '--foo', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1031 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1032 ('a', NS(foo=None, bar=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1033 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1034 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1035 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1036 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1037 class TestPositionalsNargsNoneZeroOrMore1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1038 """Test three Positionals: no nargs, unlimited nargs and 1 nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1039 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1040 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1041 Sig('foo'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1042 Sig('bar', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1043 Sig('baz', nargs=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1044 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1045 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1046 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1047 ('a b', NS(foo='a', bar=[], baz=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1048 ('a b c', NS(foo='a', bar=['b'], baz=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1049 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1050 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1051 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1052 class TestPositionalsNargsNoneOneOrMore1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1053 """Test three Positionals: no nargs, one or more nargs and 1 nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1054 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1055 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1056 Sig('foo'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1057 Sig('bar', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1058 Sig('baz', nargs=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1059 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1060 failures = ['', '--foo', 'a', 'b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1061 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1062 ('a b c', NS(foo='a', bar=['b'], baz=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1063 ('a b c d', NS(foo='a', bar=['b', 'c'], baz=['d'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1064 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1065 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1066 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1067 class TestPositionalsNargsNoneOptional1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1068 """Test three Positionals: no nargs, optional narg and 1 nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1069 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1070 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1071 Sig('foo'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1072 Sig('bar', nargs='?', default=0.625), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1073 Sig('baz', nargs=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1074 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1075 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1076 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1077 ('a b', NS(foo='a', bar=0.625, baz=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1078 ('a b c', NS(foo='a', bar='b', baz=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1079 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1080 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1081 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1082 class TestPositionalsNargsOptionalOptional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1083 """Test two optional nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1084 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1085 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1086 Sig('foo', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1087 Sig('bar', nargs='?', default=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1088 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1089 failures = ['--foo', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1090 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1091 ('', NS(foo=None, bar=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1092 ('a', NS(foo='a', bar=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1093 ('a b', NS(foo='a', bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1094 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1095 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1096 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1097 class TestPositionalsNargsOptionalZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1098 """Test an Optional narg followed by unlimited nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1099 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1100 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1101 failures = ['--foo'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1102 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1103 ('', NS(foo=None, bar=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1104 ('a', NS(foo='a', bar=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1105 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1106 ('a b c', NS(foo='a', bar=['b', 'c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1107 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1108 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1109 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1110 class TestPositionalsNargsOptionalOneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1111 """Test an Optional narg followed by one or more nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1112 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1113 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='+')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1114 failures = ['', '--foo'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1115 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1116 ('a', NS(foo=None, bar=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1117 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1118 ('a b c', NS(foo='a', bar=['b', 'c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1119 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1120 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1121 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1122 class TestPositionalsChoicesString(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1123 """Test a set of single-character choices""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1124 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1125 argument_signatures = [Sig('spam', choices=set('abcdefg'))] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1126 failures = ['', '--foo', 'h', '42', 'ef'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1127 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1128 ('a', NS(spam='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1129 ('g', NS(spam='g')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1130 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1131 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1132 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1133 class TestPositionalsChoicesInt(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1134 """Test a set of integer choices""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1135 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1136 argument_signatures = [Sig('spam', type=int, choices=range(20))] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1137 failures = ['', '--foo', 'h', '42', 'ef'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1138 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1139 ('4', NS(spam=4)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1140 ('15', NS(spam=15)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1141 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1142 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1143 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1144 class TestPositionalsActionAppend(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1145 """Test the 'append' action""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1146 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1147 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1148 Sig('spam', action='append'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1149 Sig('spam', action='append', nargs=2), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1150 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1151 failures = ['', '--foo', 'a', 'a b', 'a b c d'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1152 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1153 ('a b c', NS(spam=['a', ['b', 'c']])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1154 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1155 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1156 # ======================================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1157 # Combined optionals and positionals tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1158 # ======================================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1159 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1160 class TestOptionalsNumericAndPositionals(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1161 """Tests negative number args when numeric options are present""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1162 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1163 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1164 Sig('x', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1165 Sig('-4', dest='y', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1166 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1167 failures = ['-2', '-315'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1168 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1169 ('', NS(x=None, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1170 ('a', NS(x='a', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1171 ('-4', NS(x=None, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1172 ('-4 a', NS(x='a', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1173 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1174 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1175 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1176 class TestOptionalsAlmostNumericAndPositionals(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1177 """Tests negative number args when almost numeric options are present""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1178 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1179 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1180 Sig('x', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1181 Sig('-k4', dest='y', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1182 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1183 failures = ['-k3'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1184 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1185 ('', NS(x=None, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1186 ('-2', NS(x='-2', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1187 ('a', NS(x='a', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1188 ('-k4', NS(x=None, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1189 ('-k4 a', NS(x='a', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1190 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1191 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1192 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1193 class TestEmptyAndSpaceContainingArguments(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1194 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1195 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1196 Sig('x', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1197 Sig('-y', '--yyy', dest='y'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1198 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1199 failures = ['-y'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1200 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1201 ([''], NS(x='', y=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1202 (['a badger'], NS(x='a badger', y=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1203 (['-a badger'], NS(x='-a badger', y=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1204 (['-y', ''], NS(x=None, y='')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1205 (['-y', 'a badger'], NS(x=None, y='a badger')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1206 (['-y', '-a badger'], NS(x=None, y='-a badger')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1207 (['--yyy=a badger'], NS(x=None, y='a badger')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1208 (['--yyy=-a badger'], NS(x=None, y='-a badger')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1209 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1210 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1211 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1212 class TestPrefixCharacterOnlyArguments(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1213 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1214 parser_signature = Sig(prefix_chars='-+') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1215 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1216 Sig('-', dest='x', nargs='?', const='badger'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1217 Sig('+', dest='y', type=int, default=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1218 Sig('-+-', dest='z', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1219 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1220 failures = ['-y', '+ -'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1221 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1222 ('', NS(x=None, y=42, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1223 ('-', NS(x='badger', y=42, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1224 ('- X', NS(x='X', y=42, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1225 ('+ -3', NS(x=None, y=-3, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1226 ('-+-', NS(x=None, y=42, z=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1227 ('- ===', NS(x='===', y=42, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1228 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1229 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1230 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1231 class TestNargsZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1232 """Tests specifying an args for an Optional that accepts zero or more""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1233 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1234 argument_signatures = [Sig('-x', nargs='*'), Sig('y', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1235 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1236 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1237 ('', NS(x=None, y=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1238 ('-x', NS(x=[], y=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1239 ('-x a', NS(x=['a'], y=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1240 ('-x a -- b', NS(x=['a'], y=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1241 ('a', NS(x=None, y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1242 ('a -x', NS(x=[], y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1243 ('a -x b', NS(x=['b'], y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1244 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1245 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1246 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1247 class TestNargsRemainder(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1248 """Tests specifying a positional with nargs=REMAINDER""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1249 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1250 argument_signatures = [Sig('x'), Sig('y', nargs='...'), Sig('-z')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1251 failures = ['', '-z', '-z Z'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1252 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1253 ('X', NS(x='X', y=[], z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1254 ('-z Z X', NS(x='X', y=[], z='Z')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1255 ('X A B -z Z', NS(x='X', y=['A', 'B', '-z', 'Z'], z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1256 ('X Y --foo', NS(x='X', y=['Y', '--foo'], z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1257 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1258 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1259 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1260 class TestOptionLike(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1261 """Tests options that may or may not be arguments""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1262 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1263 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1264 Sig('-x', type=float), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1265 Sig('-3', type=float, dest='y'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1266 Sig('z', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1267 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1268 failures = ['-x', '-y2.5', '-xa', '-x -a', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1269 '-x -3', '-x -3.5', '-3 -3.5', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1270 '-x -2.5', '-x -2.5 a', '-3 -.5', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1271 'a x -1', '-x -1 a', '-3 -1 a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1272 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1273 ('', NS(x=None, y=None, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1274 ('-x 2.5', NS(x=2.5, y=None, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1275 ('-x 2.5 a', NS(x=2.5, y=None, z=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1276 ('-3.5', NS(x=None, y=0.5, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1277 ('-3-.5', NS(x=None, y=-0.5, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1278 ('-3 .5', NS(x=None, y=0.5, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1279 ('a -3.5', NS(x=None, y=0.5, z=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1280 ('a', NS(x=None, y=None, z=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1281 ('a -x 1', NS(x=1.0, y=None, z=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1282 ('-x 1 a', NS(x=1.0, y=None, z=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1283 ('-3 1 a', NS(x=None, y=1.0, z=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1284 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1285 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1286 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1287 class TestDefaultSuppress(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1288 """Test actions with suppressed defaults""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1289 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1290 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1291 Sig('foo', nargs='?', default=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1292 Sig('bar', nargs='*', default=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1293 Sig('--baz', action='store_true', default=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1294 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1295 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1296 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1297 ('', NS()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1298 ('a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1299 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1300 ('--baz', NS(baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1301 ('a --baz', NS(foo='a', baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1302 ('--baz a b', NS(foo='a', bar=['b'], baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1303 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1304 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1305 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1306 class TestParserDefaultSuppress(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1307 """Test actions with a parser-level default of SUPPRESS""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1308 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1309 parser_signature = Sig(argument_default=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1310 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1311 Sig('foo', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1312 Sig('bar', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1313 Sig('--baz', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1314 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1315 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1316 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1317 ('', NS()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1318 ('a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1319 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1320 ('--baz', NS(baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1321 ('a --baz', NS(foo='a', baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1322 ('--baz a b', NS(foo='a', bar=['b'], baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1323 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1324 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1325 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1326 class TestParserDefault42(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1327 """Test actions with a parser-level default of 42""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1328 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1329 parser_signature = Sig(argument_default=42, version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1330 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1331 Sig('foo', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1332 Sig('bar', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1333 Sig('--baz', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1334 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1335 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1336 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1337 ('', NS(foo=42, bar=42, baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1338 ('a', NS(foo='a', bar=42, baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1339 ('a b', NS(foo='a', bar=['b'], baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1340 ('--baz', NS(foo=42, bar=42, baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1341 ('a --baz', NS(foo='a', bar=42, baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1342 ('--baz a b', NS(foo='a', bar=['b'], baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1343 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1344 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1345 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1346 class TestArgumentsFromFile(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1347 """Test reading arguments from a file""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1348 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1349 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1350 super(TestArgumentsFromFile, self).setUp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1351 file_texts = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1352 ('hello', 'hello world!\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1353 ('recursive', '-a\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1354 'A\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1355 '@hello'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1356 ('invalid', '@no-such-path\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1357 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1358 for path, text in file_texts: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1359 file = open(path, 'w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1360 file.write(text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1361 file.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1362 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1363 parser_signature = Sig(fromfile_prefix_chars='@') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1364 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1365 Sig('-a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1366 Sig('x'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1367 Sig('y', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1368 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1369 failures = ['', '-b', 'X', '@invalid', '@missing'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1370 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1371 ('X Y', NS(a=None, x='X', y=['Y'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1372 ('X -a A Y Z', NS(a='A', x='X', y=['Y', 'Z'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1373 ('@hello X', NS(a=None, x='hello world!', y=['X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1374 ('X @hello', NS(a=None, x='X', y=['hello world!'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1375 ('-a B @recursive Y Z', NS(a='A', x='hello world!', y=['Y', 'Z'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1376 ('X @recursive Z -a B', NS(a='B', x='X', y=['hello world!', 'Z'])), |
|
78231
c9806f0aaefb
#12353: argparse now correctly handles null argument values.
R David Murray <rdmurray@bitdance.com>
parents:
74318
diff
changeset
|
1377 (["-a", "", "X", "Y"], NS(a='', x='X', y=['Y'])), |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1378 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1379 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1380 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1381 class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1382 """Test reading arguments from a file""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1383 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1384 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1385 super(TestArgumentsFromFileConverter, self).setUp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1386 file_texts = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1387 ('hello', 'hello world!\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1388 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1389 for path, text in file_texts: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1390 file = open(path, 'w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1391 file.write(text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1392 file.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1393 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1394 class FromFileConverterArgumentParser(ErrorRaisingArgumentParser): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1395 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1396 def convert_arg_line_to_args(self, arg_line): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1397 for arg in arg_line.split(): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1398 if not arg.strip(): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1399 continue |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1400 yield arg |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1401 parser_class = FromFileConverterArgumentParser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1402 parser_signature = Sig(fromfile_prefix_chars='@') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1403 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1404 Sig('y', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1405 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1406 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1407 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1408 ('@hello X', NS(y=['hello', 'world!', 'X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1409 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1410 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1411 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1412 # ===================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1413 # Type conversion tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1414 # ===================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1415 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1416 class TestFileTypeRepr(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1417 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1418 def test_r(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1419 type = argparse.FileType('r') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1420 self.assertEqual("FileType('r')", repr(type)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1421 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1422 def test_wb_1(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1423 type = argparse.FileType('wb', 1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1424 self.assertEqual("FileType('wb', 1)", repr(type)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1425 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1426 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1427 class RFile(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1428 seen = {} |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1429 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1430 def __init__(self, name): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1431 self.name = name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1432 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1433 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1434 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1435 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1436 if other in self.seen: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1437 text = self.seen[other] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1438 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1439 text = self.seen[other] = other.read() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1440 other.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1441 if not isinstance(text, str): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1442 text = text.decode('ascii') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1443 return self.name == other.name == text |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1444 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1445 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1446 class TestFileTypeR(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1447 """Test the FileType option/argument type for reading files""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1448 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1449 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1450 super(TestFileTypeR, self).setUp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1451 for file_name in ['foo', 'bar']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1452 file = open(os.path.join(self.temp_dir, file_name), 'w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1453 file.write(file_name) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1454 file.close() |
|
67744
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
1455 self.create_readonly_file('readonly') |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1456 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1457 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1458 Sig('-x', type=argparse.FileType()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1459 Sig('spam', type=argparse.FileType('r')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1460 ] |
|
67744
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
1461 failures = ['-x', '-x bar', 'non-existent-file.txt'] |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1462 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1463 ('foo', NS(x=None, spam=RFile('foo'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1464 ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1465 ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1466 ('-x - -', NS(x=sys.stdin, spam=sys.stdin)), |
|
67744
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
1467 ('readonly', NS(x=None, spam=RFile('readonly'))), |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1468 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1469 |
|
78823
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1470 class TestFileTypeDefaults(TempDirMixin, ParserTestCase): |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1471 """Test that a file is not created unless the default is needed""" |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1472 def setUp(self): |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1473 super(TestFileTypeDefaults, self).setUp() |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1474 file = open(os.path.join(self.temp_dir, 'good'), 'w') |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1475 file.write('good') |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1476 file.close() |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1477 |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1478 argument_signatures = [ |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1479 Sig('-c', type=argparse.FileType('r'), default='no-file.txt'), |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1480 ] |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1481 # should provoke no such file error |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1482 failures = [''] |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1483 # should not provoke error because default file is created |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1484 successes = [('-c good', NS(c=RFile('good')))] |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
1485 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1486 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1487 class TestFileTypeRB(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1488 """Test the FileType option/argument type for reading files""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1489 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1490 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1491 super(TestFileTypeRB, self).setUp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1492 for file_name in ['foo', 'bar']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1493 file = open(os.path.join(self.temp_dir, file_name), 'w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1494 file.write(file_name) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1495 file.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1496 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1497 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1498 Sig('-x', type=argparse.FileType('rb')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1499 Sig('spam', type=argparse.FileType('rb')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1500 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1501 failures = ['-x', '-x bar'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1502 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1503 ('foo', NS(x=None, spam=RFile('foo'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1504 ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1505 ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1506 ('-x - -', NS(x=sys.stdin, spam=sys.stdin)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1507 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1508 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1509 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1510 class WFile(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1511 seen = set() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1512 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1513 def __init__(self, name): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1514 self.name = name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1515 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1516 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1517 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1518 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1519 if other not in self.seen: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1520 text = 'Check that file is writable.' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1521 if 'b' in other.mode: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1522 text = text.encode('ascii') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1523 other.write(text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1524 other.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1525 self.seen.add(other) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1526 return self.name == other.name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1527 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1528 |
|
73647
6e1e1118adca
Close #13401: Skip TestFileTypeW of test_argparse if the current user is root
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69125
diff
changeset
|
1529 @unittest.skipIf(hasattr(os, 'geteuid') and os.geteuid() == 0, |
|
6e1e1118adca
Close #13401: Skip TestFileTypeW of test_argparse if the current user is root
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69125
diff
changeset
|
1530 "non-root user required") |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1531 class TestFileTypeW(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1532 """Test the FileType option/argument type for writing files""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1533 |
|
67744
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
1534 def setUp(self): |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
1535 super(TestFileTypeW, self).setUp() |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
1536 self.create_readonly_file('readonly') |
|
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
1537 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1538 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1539 Sig('-x', type=argparse.FileType('w')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1540 Sig('spam', type=argparse.FileType('w')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1541 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1542 failures = ['-x', '-x bar'] |
|
67744
7f9a98f766d7
Issue #9509: make argarse properly handle IOErrors raised by argparse.FileType. Approved by Georg in the tracker.
Steven Bethard <steven.bethard@gmail.com>
parents:
66348
diff
changeset
|
1543 failures = ['-x', '-x bar', 'readonly'] |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1544 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1545 ('foo', NS(x=None, spam=WFile('foo'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1546 ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1547 ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1548 ('-x - -', NS(x=sys.stdout, spam=sys.stdout)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1549 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1550 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1551 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1552 class TestFileTypeWB(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1553 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1554 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1555 Sig('-x', type=argparse.FileType('wb')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1556 Sig('spam', type=argparse.FileType('wb')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1557 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1558 failures = ['-x', '-x bar'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1559 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1560 ('foo', NS(x=None, spam=WFile('foo'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1561 ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1562 ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1563 ('-x - -', NS(x=sys.stdout, spam=sys.stdout)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1564 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1565 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1566 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1567 class TestTypeCallable(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1568 """Test some callables as option/argument types""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1569 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1570 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1571 Sig('--eggs', type=complex), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1572 Sig('spam', type=float), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1573 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1574 failures = ['a', '42j', '--eggs a', '--eggs 2i'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1575 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1576 ('--eggs=42 42', NS(eggs=42, spam=42.0)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1577 ('--eggs 2j -- -1.5', NS(eggs=2j, spam=-1.5)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1578 ('1024.675', NS(eggs=None, spam=1024.675)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1579 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1580 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1581 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1582 class TestTypeUserDefined(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1583 """Test a user-defined option/argument type""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1584 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1585 class MyType(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1586 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1587 def __init__(self, value): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1588 self.value = value |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1589 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1590 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1591 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1592 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1593 return (type(self), self.value) == (type(other), other.value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1594 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1595 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1596 Sig('-x', type=MyType), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1597 Sig('spam', type=MyType), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1598 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1599 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1600 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1601 ('a -x b', NS(x=MyType('b'), spam=MyType('a'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1602 ('-xf g', NS(x=MyType('f'), spam=MyType('g'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1603 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1604 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1605 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1606 class TestTypeClassicClass(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1607 """Test a classic class type""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1608 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1609 class C: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1610 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1611 def __init__(self, value): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1612 self.value = value |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1613 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1614 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1615 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1616 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1617 return (type(self), self.value) == (type(other), other.value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1618 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1619 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1620 Sig('-x', type=C), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1621 Sig('spam', type=C), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1622 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1623 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1624 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1625 ('a -x b', NS(x=C('b'), spam=C('a'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1626 ('-xf g', NS(x=C('f'), spam=C('g'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1627 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1628 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1629 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1630 class TestTypeRegistration(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1631 """Test a user-defined type by registering it""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1632 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1633 def test(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1634 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1635 def get_my_type(string): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1636 return 'my_type{%s}' % string |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1637 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1638 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1639 parser.register('type', 'my_type', get_my_type) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1640 parser.add_argument('-x', type='my_type') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1641 parser.add_argument('y', type='my_type') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1642 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1643 self.assertEqual(parser.parse_args('1'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1644 NS(x=None, y='my_type{1}')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1645 self.assertEqual(parser.parse_args('-x 1 42'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1646 NS(x='my_type{1}', y='my_type{42}')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1647 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1648 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1649 # ============ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1650 # Action tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1651 # ============ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1652 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1653 class TestActionUserDefined(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1654 """Test a user-defined option/argument action""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1655 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1656 class OptionalAction(argparse.Action): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1657 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1658 def __call__(self, parser, namespace, value, option_string=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1659 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1660 # check destination and option string |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1661 assert self.dest == 'spam', 'dest: %s' % self.dest |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1662 assert option_string == '-s', 'flag: %s' % option_string |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1663 # when option is before argument, badger=2, and when |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1664 # option is after argument, badger=<whatever was set> |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1665 expected_ns = NS(spam=0.25) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1666 if value in [0.125, 0.625]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1667 expected_ns.badger = 2 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1668 elif value in [2.0]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1669 expected_ns.badger = 84 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1670 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1671 raise AssertionError('value: %s' % value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1672 assert expected_ns == namespace, ('expected %s, got %s' % |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1673 (expected_ns, namespace)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1674 except AssertionError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1675 e = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1676 raise ArgumentParserError('opt_action failed: %s' % e) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1677 setattr(namespace, 'spam', value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1678 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1679 class PositionalAction(argparse.Action): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1680 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1681 def __call__(self, parser, namespace, value, option_string=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1682 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1683 assert option_string is None, ('option_string: %s' % |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1684 option_string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1685 # check destination |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1686 assert self.dest == 'badger', 'dest: %s' % self.dest |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1687 # when argument is before option, spam=0.25, and when |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1688 # option is after argument, spam=<whatever was set> |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1689 expected_ns = NS(badger=2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1690 if value in [42, 84]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1691 expected_ns.spam = 0.25 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1692 elif value in [1]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1693 expected_ns.spam = 0.625 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1694 elif value in [2]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1695 expected_ns.spam = 0.125 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1696 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1697 raise AssertionError('value: %s' % value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1698 assert expected_ns == namespace, ('expected %s, got %s' % |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1699 (expected_ns, namespace)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1700 except AssertionError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1701 e = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1702 raise ArgumentParserError('arg_action failed: %s' % e) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1703 setattr(namespace, 'badger', value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1704 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1705 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1706 Sig('-s', dest='spam', action=OptionalAction, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1707 type=float, default=0.25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1708 Sig('badger', action=PositionalAction, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1709 type=int, nargs='?', default=2), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1710 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1711 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1712 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1713 ('-s0.125', NS(spam=0.125, badger=2)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1714 ('42', NS(spam=0.25, badger=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1715 ('-s 0.625 1', NS(spam=0.625, badger=1)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1716 ('84 -s2', NS(spam=2.0, badger=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1717 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1718 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1719 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1720 class TestActionRegistration(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1721 """Test a user-defined action supplied by registering it""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1722 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1723 class MyAction(argparse.Action): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1724 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1725 def __call__(self, parser, namespace, values, option_string=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1726 setattr(namespace, self.dest, 'foo[%s]' % values) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1727 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1728 def test(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1729 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1730 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1731 parser.register('action', 'my_action', self.MyAction) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1732 parser.add_argument('badger', action='my_action') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1733 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1734 self.assertEqual(parser.parse_args(['1']), NS(badger='foo[1]')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1735 self.assertEqual(parser.parse_args(['42']), NS(badger='foo[42]')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1736 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1737 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1738 # ================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1739 # Subparsers tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1740 # ================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1741 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1742 class TestAddSubparsers(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1743 """Test the add_subparsers method""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1744 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1745 def assertArgumentParserError(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1746 self.assertRaises(ArgumentParserError, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1747 |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1748 def _get_parser(self, subparser_help=False, prefix_chars=None): |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1749 # create a parser with a subparsers argument |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1750 if prefix_chars: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1751 parser = ErrorRaisingArgumentParser( |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1752 prog='PROG', description='main description', prefix_chars=prefix_chars) |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1753 parser.add_argument( |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1754 prefix_chars[0] * 2 + 'foo', action='store_true', help='foo help') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1755 else: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1756 parser = ErrorRaisingArgumentParser( |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1757 prog='PROG', description='main description') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1758 parser.add_argument( |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1759 '--foo', action='store_true', help='foo help') |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1760 parser.add_argument( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1761 'bar', type=float, help='bar help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1762 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1763 # check that only one subparsers argument can be added |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1764 subparsers = parser.add_subparsers(help='command help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1765 self.assertArgumentParserError(parser.add_subparsers) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1766 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1767 # add first sub-parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1768 parser1_kwargs = dict(description='1 description') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1769 if subparser_help: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1770 parser1_kwargs['help'] = '1 help' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1771 parser1 = subparsers.add_parser('1', **parser1_kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1772 parser1.add_argument('-w', type=int, help='w help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1773 parser1.add_argument('x', choices='abc', help='x help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1774 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1775 # add second sub-parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1776 parser2_kwargs = dict(description='2 description') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1777 if subparser_help: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1778 parser2_kwargs['help'] = '2 help' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1779 parser2 = subparsers.add_parser('2', **parser2_kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1780 parser2.add_argument('-y', choices='123', help='y help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1781 parser2.add_argument('z', type=complex, nargs='*', help='z help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1782 |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1783 # add third sub-parser |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1784 parser3_kwargs = dict(description='3 description') |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1785 if subparser_help: |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1786 parser3_kwargs['help'] = '3 help' |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1787 parser3 = subparsers.add_parser('3', **parser3_kwargs) |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1788 parser3.add_argument('t', type=int, help='t help') |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1789 parser3.add_argument('u', nargs='...', help='u help') |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1790 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1791 # return the main parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1792 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1793 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1794 def setUp(self): |
|
65860
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
1795 super(TestAddSubparsers, self).setUp() |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1796 self.parser = self._get_parser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1797 self.command_help_parser = self._get_parser(subparser_help=True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1798 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1799 def test_parse_args_failures(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1800 # check some failure cases: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1801 for args_str in ['', 'a', 'a a', '0.5 a', '0.5 1', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1802 '0.5 1 -y', '0.5 2 -w']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1803 args = args_str.split() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1804 self.assertArgumentParserError(self.parser.parse_args, args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1805 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1806 def test_parse_args(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1807 # check some non-failure cases: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1808 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1809 self.parser.parse_args('0.5 1 b -w 7'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1810 NS(foo=False, bar=0.5, w=7, x='b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1811 ) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1812 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1813 self.parser.parse_args('0.25 --foo 2 -y 2 3j -- -1j'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1814 NS(foo=True, bar=0.25, y='2', z=[3j, -1j]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1815 ) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1816 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1817 self.parser.parse_args('--foo 0.125 1 c'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1818 NS(foo=True, bar=0.125, w=None, x='c'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1819 ) |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1820 self.assertEqual( |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1821 self.parser.parse_args('-1.5 3 11 -- a --foo 7 -- b'.split()), |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1822 NS(foo=False, bar=-1.5, t=11, u=['a', '--foo', '7', '--', 'b']), |
|
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1823 ) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1824 |
|
65888
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1825 def test_parse_known_args(self): |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1826 self.assertEqual( |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1827 self.parser.parse_known_args('0.5 1 b -w 7'.split()), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1828 (NS(foo=False, bar=0.5, w=7, x='b'), []), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1829 ) |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1830 self.assertEqual( |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1831 self.parser.parse_known_args('0.5 -p 1 b -w 7'.split()), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1832 (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1833 ) |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1834 self.assertEqual( |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1835 self.parser.parse_known_args('0.5 1 b -w 7 -p'.split()), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1836 (NS(foo=False, bar=0.5, w=7, x='b'), ['-p']), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1837 ) |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1838 self.assertEqual( |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1839 self.parser.parse_known_args('0.5 1 b -q -rs -w 7'.split()), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1840 (NS(foo=False, bar=0.5, w=7, x='b'), ['-q', '-rs']), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1841 ) |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1842 self.assertEqual( |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1843 self.parser.parse_known_args('0.5 -W 1 b -X Y -w 7 Z'.split()), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1844 (NS(foo=False, bar=0.5, w=7, x='b'), ['-W', '-X', 'Y', 'Z']), |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1845 ) |
|
573db2af2dda
Merged revisions 86111 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65870
diff
changeset
|
1846 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1847 def test_dest(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1848 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1849 parser.add_argument('--foo', action='store_true') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1850 subparsers = parser.add_subparsers(dest='bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1851 parser1 = subparsers.add_parser('1') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1852 parser1.add_argument('baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1853 self.assertEqual(NS(foo=False, bar='1', baz='2'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1854 parser.parse_args('1 2'.split())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1855 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1856 def test_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1857 self.assertEqual(self.parser.format_usage(), |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1858 'usage: PROG [-h] [--foo] bar {1,2,3} ...\n') |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1859 self.assertEqual(self.parser.format_help(), textwrap.dedent('''\ |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1860 usage: PROG [-h] [--foo] bar {1,2,3} ... |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1861 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1862 main description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1863 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1864 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1865 bar bar help |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1866 {1,2,3} command help |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1867 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1868 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1869 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1870 --foo foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1871 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1872 |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1873 def test_help_extra_prefix_chars(self): |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1874 # Make sure - is still used for help if it is a non-first prefix char |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1875 parser = self._get_parser(prefix_chars='+:-') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1876 self.assertEqual(parser.format_usage(), |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1877 'usage: PROG [-h] [++foo] bar {1,2,3} ...\n') |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1878 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1879 usage: PROG [-h] [++foo] bar {1,2,3} ... |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1880 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1881 main description |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1882 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1883 positional arguments: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1884 bar bar help |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1885 {1,2,3} command help |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1886 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1887 optional arguments: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1888 -h, --help show this help message and exit |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1889 ++foo foo help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1890 ''')) |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1891 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1892 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1893 def test_help_alternate_prefix_chars(self): |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1894 parser = self._get_parser(prefix_chars='+:/') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1895 self.assertEqual(parser.format_usage(), |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1896 'usage: PROG [+h] [++foo] bar {1,2,3} ...\n') |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1897 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1898 usage: PROG [+h] [++foo] bar {1,2,3} ... |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1899 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1900 main description |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1901 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1902 positional arguments: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1903 bar bar help |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1904 {1,2,3} command help |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1905 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1906 optional arguments: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1907 +h, ++help show this help message and exit |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1908 ++foo foo help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1909 ''')) |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1910 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1911 def test_parser_command_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1912 self.assertEqual(self.command_help_parser.format_usage(), |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1913 'usage: PROG [-h] [--foo] bar {1,2,3} ...\n') |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1914 self.assertEqual(self.command_help_parser.format_help(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1915 textwrap.dedent('''\ |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1916 usage: PROG [-h] [--foo] bar {1,2,3} ... |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1917 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1918 main description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1919 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1920 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1921 bar bar help |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1922 {1,2,3} command help |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1923 1 1 help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1924 2 2 help |
|
78233
bd2c167dfabc
#13922: argparse no longer incorrectly strips '--' after the first one.
R David Murray <rdmurray@bitdance.com>
parents:
78231
diff
changeset
|
1925 3 3 help |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1926 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1927 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1928 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1929 --foo foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1930 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1931 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1932 def test_subparser_title_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1933 parser = ErrorRaisingArgumentParser(prog='PROG', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1934 description='main description') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1935 parser.add_argument('--foo', action='store_true', help='foo help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1936 parser.add_argument('bar', help='bar help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1937 subparsers = parser.add_subparsers(title='subcommands', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1938 description='command help', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1939 help='additional text') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1940 parser1 = subparsers.add_parser('1') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1941 parser2 = subparsers.add_parser('2') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1942 self.assertEqual(parser.format_usage(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1943 'usage: PROG [-h] [--foo] bar {1,2} ...\n') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1944 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1945 usage: PROG [-h] [--foo] bar {1,2} ... |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1946 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1947 main description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1948 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1949 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1950 bar bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1951 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1952 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1953 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1954 --foo foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1955 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1956 subcommands: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1957 command help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1958 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1959 {1,2} additional text |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1960 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1961 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1962 def _test_subparser_help(self, args_str, expected_help): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1963 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1964 self.parser.parse_args(args_str.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1965 except ArgumentParserError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1966 err = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1967 if err.stdout != expected_help: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1968 print(repr(expected_help)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1969 print(repr(err.stdout)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1970 self.assertEqual(err.stdout, expected_help) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1971 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1972 def test_subparser1_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1973 self._test_subparser_help('5.0 1 -h', textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1974 usage: PROG bar 1 [-h] [-w W] {a,b,c} |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1975 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1976 1 description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1977 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1978 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1979 {a,b,c} x help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1980 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1981 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1982 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1983 -w W w help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1984 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1985 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1986 def test_subparser2_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1987 self._test_subparser_help('5.0 2 -h', textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1988 usage: PROG bar 2 [-h] [-y {1,2,3}] [z [z ...]] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1989 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1990 2 description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1991 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1992 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1993 z z help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1994 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1995 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1996 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1997 -y {1,2,3} y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1998 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1999 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2000 # ============ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2001 # Groups tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2002 # ============ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2003 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2004 class TestPositionalsGroups(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2005 """Tests that order of group positionals matches construction order""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2006 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2007 def test_nongroup_first(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2008 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2009 parser.add_argument('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2010 group = parser.add_argument_group('g') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2011 group.add_argument('bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2012 parser.add_argument('baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2013 expected = NS(foo='1', bar='2', baz='3') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2014 result = parser.parse_args('1 2 3'.split()) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
2015 self.assertEqual(expected, result) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2016 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2017 def test_group_first(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2018 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2019 group = parser.add_argument_group('xxx') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2020 group.add_argument('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2021 parser.add_argument('bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2022 parser.add_argument('baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2023 expected = NS(foo='1', bar='2', baz='3') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2024 result = parser.parse_args('1 2 3'.split()) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
2025 self.assertEqual(expected, result) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2026 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2027 def test_interleaved_groups(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2028 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2029 group = parser.add_argument_group('xxx') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2030 parser.add_argument('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2031 group.add_argument('bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2032 parser.add_argument('baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2033 group = parser.add_argument_group('yyy') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2034 group.add_argument('frell') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2035 expected = NS(foo='1', bar='2', baz='3', frell='4') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2036 result = parser.parse_args('1 2 3 4'.split()) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
2037 self.assertEqual(expected, result) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2038 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2039 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2040 # Parent parser tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2041 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2042 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2043 class TestParentParsers(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2044 """Tests that parsers can be created with parent parsers""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2045 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2046 def assertArgumentParserError(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2047 self.assertRaises(ArgumentParserError, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2048 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2049 def setUp(self): |
|
65860
9db857960402
Merged revisions 86080 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65333
diff
changeset
|
2050 super(TestParentParsers, self).setUp() |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2051 self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2052 self.wxyz_parent.add_argument('--w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2053 x_group = self.wxyz_parent.add_argument_group('x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2054 x_group.add_argument('-y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2055 self.wxyz_parent.add_argument('z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2056 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2057 self.abcd_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2058 self.abcd_parent.add_argument('a') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2059 self.abcd_parent.add_argument('-b') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2060 c_group = self.abcd_parent.add_argument_group('c') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2061 c_group.add_argument('--d') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2062 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2063 self.w_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2064 self.w_parent.add_argument('--w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2065 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2066 self.z_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2067 self.z_parent.add_argument('z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2068 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2069 # parents with mutually exclusive groups |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2070 self.ab_mutex_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2071 group = self.ab_mutex_parent.add_mutually_exclusive_group() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2072 group.add_argument('-a', action='store_true') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2073 group.add_argument('-b', action='store_true') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2074 |
|
59270
82eda345a5f6
enable running of argparse tests and fix two that failed in the new environment
Benjamin Peterson <benjamin@python.org>
parents:
59268
diff
changeset
|
2075 self.main_program = os.path.basename(sys.argv[0]) |
|
82eda345a5f6
enable running of argparse tests and fix two that failed in the new environment
Benjamin Peterson <benjamin@python.org>
parents:
59268
diff
changeset
|
2076 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2077 def test_single_parent(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2078 parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2079 self.assertEqual(parser.parse_args('-y 1 2 --w 3'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2080 NS(w='3', y='1', z='2')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2081 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2082 def test_single_parent_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2083 self._test_mutex_ab(self.ab_mutex_parent.parse_args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2084 parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2085 self._test_mutex_ab(parser.parse_args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2086 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2087 def test_single_granparent_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2088 parents = [self.ab_mutex_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2089 parser = ErrorRaisingArgumentParser(add_help=False, parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2090 parser = ErrorRaisingArgumentParser(parents=[parser]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2091 self._test_mutex_ab(parser.parse_args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2092 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2093 def _test_mutex_ab(self, parse_args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2094 self.assertEqual(parse_args([]), NS(a=False, b=False)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2095 self.assertEqual(parse_args(['-a']), NS(a=True, b=False)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2096 self.assertEqual(parse_args(['-b']), NS(a=False, b=True)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2097 self.assertArgumentParserError(parse_args, ['-a', '-b']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2098 self.assertArgumentParserError(parse_args, ['-b', '-a']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2099 self.assertArgumentParserError(parse_args, ['-c']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2100 self.assertArgumentParserError(parse_args, ['-a', '-c']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2101 self.assertArgumentParserError(parse_args, ['-b', '-c']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2102 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2103 def test_multiple_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2104 parents = [self.abcd_parent, self.wxyz_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2105 parser = ErrorRaisingArgumentParser(parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2106 self.assertEqual(parser.parse_args('--d 1 --w 2 3 4'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2107 NS(a='3', b=None, d='1', w='2', y=None, z='4')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2108 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2109 def test_multiple_parents_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2110 parents = [self.ab_mutex_parent, self.wxyz_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2111 parser = ErrorRaisingArgumentParser(parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2112 self.assertEqual(parser.parse_args('-a --w 2 3'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2113 NS(a=True, b=False, w='2', y=None, z='3')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2114 self.assertArgumentParserError( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2115 parser.parse_args, '-a --w 2 3 -b'.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2116 self.assertArgumentParserError( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2117 parser.parse_args, '-a -b --w 2 3'.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2118 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2119 def test_conflicting_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2120 self.assertRaises( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2121 argparse.ArgumentError, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2122 argparse.ArgumentParser, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2123 parents=[self.w_parent, self.wxyz_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2124 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2125 def test_conflicting_parents_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2126 self.assertRaises( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2127 argparse.ArgumentError, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2128 argparse.ArgumentParser, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2129 parents=[self.abcd_parent, self.ab_mutex_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2130 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2131 def test_same_argument_name_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2132 parents = [self.wxyz_parent, self.z_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2133 parser = ErrorRaisingArgumentParser(parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2134 self.assertEqual(parser.parse_args('1 2'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2135 NS(w=None, y=None, z='2')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2136 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2137 def test_subparser_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2138 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2139 subparsers = parser.add_subparsers() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2140 abcde_parser = subparsers.add_parser('bar', parents=[self.abcd_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2141 abcde_parser.add_argument('e') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2142 self.assertEqual(parser.parse_args('bar -b 1 --d 2 3 4'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2143 NS(a='3', b='1', d='2', e='4')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2144 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2145 def test_subparser_parents_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2146 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2147 subparsers = parser.add_subparsers() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2148 parents = [self.ab_mutex_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2149 abc_parser = subparsers.add_parser('foo', parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2150 c_group = abc_parser.add_argument_group('c_group') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2151 c_group.add_argument('c') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2152 parents = [self.wxyz_parent, self.ab_mutex_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2153 wxyzabe_parser = subparsers.add_parser('bar', parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2154 wxyzabe_parser.add_argument('e') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2155 self.assertEqual(parser.parse_args('foo -a 4'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2156 NS(a=True, b=False, c='4')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2157 self.assertEqual(parser.parse_args('bar -b --w 2 3 4'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2158 NS(a=False, b=True, w='2', y=None, z='3', e='4')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2159 self.assertArgumentParserError( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2160 parser.parse_args, 'foo -a -b 4'.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2161 self.assertArgumentParserError( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2162 parser.parse_args, 'bar -b -a 4'.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2163 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2164 def test_parent_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2165 parents = [self.abcd_parent, self.wxyz_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2166 parser = ErrorRaisingArgumentParser(parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2167 parser_help = parser.format_help() |
|
74318
ec32e6ec16fc
#11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents:
73647
diff
changeset
|
2168 progname = self.main_program |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2169 self.assertEqual(parser_help, textwrap.dedent('''\ |
|
74318
ec32e6ec16fc
#11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents:
73647
diff
changeset
|
2170 usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2171 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2172 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2173 a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2174 z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2175 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2176 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2177 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2178 -b B |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2179 --w W |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2180 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2181 c: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2182 --d D |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2183 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2184 x: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2185 -y Y |
|
74318
ec32e6ec16fc
#11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents:
73647
diff
changeset
|
2186 '''.format(progname, ' ' if progname else '' ))) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2187 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2188 def test_groups_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2189 parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2190 g = parent.add_argument_group(title='g', description='gd') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2191 g.add_argument('-w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2192 g.add_argument('-x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2193 m = parent.add_mutually_exclusive_group() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2194 m.add_argument('-y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2195 m.add_argument('-z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2196 parser = ErrorRaisingArgumentParser(parents=[parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2197 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2198 self.assertRaises(ArgumentParserError, parser.parse_args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2199 ['-y', 'Y', '-z', 'Z']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2200 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2201 parser_help = parser.format_help() |
|
74318
ec32e6ec16fc
#11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents:
73647
diff
changeset
|
2202 progname = self.main_program |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2203 self.assertEqual(parser_help, textwrap.dedent('''\ |
|
74318
ec32e6ec16fc
#11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents:
73647
diff
changeset
|
2204 usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z] |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2205 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2206 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2207 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2208 -y Y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2209 -z Z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2210 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2211 g: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2212 gd |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2213 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2214 -w W |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2215 -x X |
|
74318
ec32e6ec16fc
#11906 Make test_argparse work interactively by removing extra space
Terry Jan Reedy <tjreedy@udel.edu>
parents:
73647
diff
changeset
|
2216 '''.format(progname, ' ' if progname else '' ))) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2217 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2218 # ============================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2219 # Mutually exclusive group tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2220 # ============================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2221 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2222 class TestMutuallyExclusiveGroupErrors(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2223 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2224 def test_invalid_add_argument_group(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2225 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2226 raises = self.assertRaises |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2227 raises(TypeError, parser.add_mutually_exclusive_group, title='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2228 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2229 def test_invalid_add_argument(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2230 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2231 group = parser.add_mutually_exclusive_group() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2232 add_argument = group.add_argument |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2233 raises = self.assertRaises |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2234 raises(ValueError, add_argument, '--foo', required=True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2235 raises(ValueError, add_argument, 'bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2236 raises(ValueError, add_argument, 'bar', nargs='+') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2237 raises(ValueError, add_argument, 'bar', nargs=1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2238 raises(ValueError, add_argument, 'bar', nargs=argparse.PARSER) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2239 |
|
65870
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2240 def test_help(self): |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2241 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2242 group1 = parser.add_mutually_exclusive_group() |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2243 group1.add_argument('--foo', action='store_true') |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2244 group1.add_argument('--bar', action='store_false') |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2245 group2 = parser.add_mutually_exclusive_group() |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2246 group2.add_argument('--soup', action='store_true') |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2247 group2.add_argument('--nuts', action='store_false') |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2248 expected = '''\ |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2249 usage: PROG [-h] [--foo | --bar] [--soup | --nuts] |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2250 |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2251 optional arguments: |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2252 -h, --help show this help message and exit |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2253 --foo |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2254 --bar |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2255 --soup |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2256 --nuts |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2257 ''' |
|
5952b937ab9a
Merged revisions 86092 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65868
diff
changeset
|
2258 self.assertEqual(parser.format_help(), textwrap.dedent(expected)) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2259 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2260 class MEMixin(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2261 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2262 def test_failures_when_not_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2263 parse_args = self.get_parser(required=False).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2264 error = ArgumentParserError |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2265 for args_string in self.failures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2266 self.assertRaises(error, parse_args, args_string.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2267 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2268 def test_failures_when_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2269 parse_args = self.get_parser(required=True).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2270 error = ArgumentParserError |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2271 for args_string in self.failures + ['']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2272 self.assertRaises(error, parse_args, args_string.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2273 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2274 def test_successes_when_not_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2275 parse_args = self.get_parser(required=False).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2276 successes = self.successes + self.successes_when_not_required |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2277 for args_string, expected_ns in successes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2278 actual_ns = parse_args(args_string.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2279 self.assertEqual(actual_ns, expected_ns) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2280 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2281 def test_successes_when_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2282 parse_args = self.get_parser(required=True).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2283 for args_string, expected_ns in self.successes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2284 actual_ns = parse_args(args_string.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2285 self.assertEqual(actual_ns, expected_ns) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2286 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2287 def test_usage_when_not_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2288 format_usage = self.get_parser(required=False).format_usage |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2289 expected_usage = self.usage_when_not_required |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2290 self.assertEqual(format_usage(), textwrap.dedent(expected_usage)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2291 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2292 def test_usage_when_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2293 format_usage = self.get_parser(required=True).format_usage |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2294 expected_usage = self.usage_when_required |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2295 self.assertEqual(format_usage(), textwrap.dedent(expected_usage)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2296 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2297 def test_help_when_not_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2298 format_help = self.get_parser(required=False).format_help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2299 help = self.usage_when_not_required + self.help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2300 self.assertEqual(format_help(), textwrap.dedent(help)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2301 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2302 def test_help_when_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2303 format_help = self.get_parser(required=True).format_help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2304 help = self.usage_when_required + self.help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2305 self.assertEqual(format_help(), textwrap.dedent(help)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2306 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2307 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2308 class TestMutuallyExclusiveSimple(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2309 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2310 def get_parser(self, required=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2311 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2312 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2313 group.add_argument('--bar', help='bar help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2314 group.add_argument('--baz', nargs='?', const='Z', help='baz help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2315 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2316 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2317 failures = ['--bar X --baz Y', '--bar X --baz'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2318 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2319 ('--bar X', NS(bar='X', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2320 ('--bar X --bar Z', NS(bar='Z', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2321 ('--baz Y', NS(bar=None, baz='Y')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2322 ('--baz', NS(bar=None, baz='Z')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2323 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2324 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2325 ('', NS(bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2326 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2327 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2328 usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2329 usage: PROG [-h] [--bar BAR | --baz [BAZ]] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2330 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2331 usage_when_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2332 usage: PROG [-h] (--bar BAR | --baz [BAZ]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2333 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2334 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2335 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2336 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2337 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2338 --bar BAR bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2339 --baz [BAZ] baz help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2340 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2341 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2342 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2343 class TestMutuallyExclusiveLong(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2344 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2345 def get_parser(self, required=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2346 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2347 parser.add_argument('--abcde', help='abcde help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2348 parser.add_argument('--fghij', help='fghij help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2349 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2350 group.add_argument('--klmno', help='klmno help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2351 group.add_argument('--pqrst', help='pqrst help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2352 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2353 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2354 failures = ['--klmno X --pqrst Y'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2355 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2356 ('--klmno X', NS(abcde=None, fghij=None, klmno='X', pqrst=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2357 ('--abcde Y --klmno X', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2358 NS(abcde='Y', fghij=None, klmno='X', pqrst=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2359 ('--pqrst X', NS(abcde=None, fghij=None, klmno=None, pqrst='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2360 ('--pqrst X --fghij Y', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2361 NS(abcde=None, fghij='Y', klmno=None, pqrst='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2362 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2363 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2364 ('', NS(abcde=None, fghij=None, klmno=None, pqrst=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2365 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2366 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2367 usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2368 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2369 [--klmno KLMNO | --pqrst PQRST] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2370 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2371 usage_when_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2372 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2373 (--klmno KLMNO | --pqrst PQRST) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2374 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2375 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2376 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2377 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2378 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2379 --abcde ABCDE abcde help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2380 --fghij FGHIJ fghij help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2381 --klmno KLMNO klmno help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2382 --pqrst PQRST pqrst help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2383 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2384 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2385 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2386 class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2387 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2388 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2389 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2390 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2391 group.add_argument('-x', help=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2392 group.add_argument('-y', action='store_false', help='y help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2393 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2394 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2395 failures = ['-x X -y'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2396 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2397 ('-x X', NS(x='X', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2398 ('-x X -x Y', NS(x='Y', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2399 ('-y', NS(x=None, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2400 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2401 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2402 ('', NS(x=None, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2403 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2404 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2405 usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2406 usage: PROG [-h] [-y] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2407 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2408 usage_when_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2409 usage: PROG [-h] -y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2410 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2411 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2412 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2413 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2414 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2415 -y y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2416 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2417 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2418 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2419 class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2420 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2421 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2422 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2423 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2424 add = group.add_argument |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2425 add('--spam', action='store_true', help=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2426 add('--badger', action='store_false', help=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2427 add('--bladder', help=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2428 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2429 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2430 failures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2431 '--spam --badger', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2432 '--badger --bladder B', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2433 '--bladder B --spam', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2434 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2435 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2436 ('--spam', NS(spam=True, badger=True, bladder=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2437 ('--badger', NS(spam=False, badger=False, bladder=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2438 ('--bladder B', NS(spam=False, badger=True, bladder='B')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2439 ('--spam --spam', NS(spam=True, badger=True, bladder=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2440 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2441 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2442 ('', NS(spam=False, badger=True, bladder=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2443 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2444 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2445 usage_when_required = usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2446 usage: PROG [-h] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2447 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2448 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2449 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2450 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2451 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2452 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2453 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2454 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2455 class TestMutuallyExclusiveOptionalAndPositional(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2456 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2457 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2458 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2459 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2460 group.add_argument('--foo', action='store_true', help='FOO') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2461 group.add_argument('--spam', help='SPAM') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2462 group.add_argument('badger', nargs='*', default='X', help='BADGER') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2463 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2464 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2465 failures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2466 '--foo --spam S', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2467 '--spam S X', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2468 'X --foo', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2469 'X Y Z --spam S', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2470 '--foo X Y', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2471 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2472 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2473 ('--foo', NS(foo=True, spam=None, badger='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2474 ('--spam S', NS(foo=False, spam='S', badger='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2475 ('X', NS(foo=False, spam=None, badger=['X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2476 ('X Y Z', NS(foo=False, spam=None, badger=['X', 'Y', 'Z'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2477 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2478 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2479 ('', NS(foo=False, spam=None, badger='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2480 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2481 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2482 usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2483 usage: PROG [-h] [--foo | --spam SPAM | badger [badger ...]] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2484 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2485 usage_when_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2486 usage: PROG [-h] (--foo | --spam SPAM | badger [badger ...]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2487 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2488 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2489 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2490 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2491 badger BADGER |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2492 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2493 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2494 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2495 --foo FOO |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2496 --spam SPAM SPAM |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2497 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2498 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2499 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2500 class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2501 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2502 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2503 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2504 parser.add_argument('-x', action='store_true', help='x help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2505 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2506 group.add_argument('-a', action='store_true', help='a help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2507 group.add_argument('-b', action='store_true', help='b help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2508 parser.add_argument('-y', action='store_true', help='y help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2509 group.add_argument('-c', action='store_true', help='c help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2510 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2511 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2512 failures = ['-a -b', '-b -c', '-a -c', '-a -b -c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2513 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2514 ('-a', NS(a=True, b=False, c=False, x=False, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2515 ('-b', NS(a=False, b=True, c=False, x=False, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2516 ('-c', NS(a=False, b=False, c=True, x=False, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2517 ('-a -x', NS(a=True, b=False, c=False, x=True, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2518 ('-y -b', NS(a=False, b=True, c=False, x=False, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2519 ('-x -y -c', NS(a=False, b=False, c=True, x=True, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2520 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2521 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2522 ('', NS(a=False, b=False, c=False, x=False, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2523 ('-x', NS(a=False, b=False, c=False, x=True, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2524 ('-y', NS(a=False, b=False, c=False, x=False, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2525 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2526 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2527 usage_when_required = usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2528 usage: PROG [-h] [-x] [-a] [-b] [-y] [-c] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2529 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2530 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2531 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2532 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2533 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2534 -x x help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2535 -a a help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2536 -b b help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2537 -y y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2538 -c c help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2539 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2540 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2541 |
|
67824
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2542 class TestMutuallyExclusiveInGroup(MEMixin, TestCase): |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2543 |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2544 def get_parser(self, required=None): |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2545 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2546 titled_group = parser.add_argument_group( |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2547 title='Titled group', description='Group description') |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2548 mutex_group = \ |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2549 titled_group.add_mutually_exclusive_group(required=required) |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2550 mutex_group.add_argument('--bar', help='bar help') |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2551 mutex_group.add_argument('--baz', help='baz help') |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2552 return parser |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2553 |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2554 failures = ['--bar X --baz Y', '--baz X --bar Y'] |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2555 successes = [ |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2556 ('--bar X', NS(bar='X', baz=None)), |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2557 ('--baz Y', NS(bar=None, baz='Y')), |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2558 ] |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2559 successes_when_not_required = [ |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2560 ('', NS(bar=None, baz=None)), |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2561 ] |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2562 |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2563 usage_when_not_required = '''\ |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2564 usage: PROG [-h] [--bar BAR | --baz BAZ] |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2565 ''' |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2566 usage_when_required = '''\ |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2567 usage: PROG [-h] (--bar BAR | --baz BAZ) |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2568 ''' |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2569 help = '''\ |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2570 |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2571 optional arguments: |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2572 -h, --help show this help message and exit |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2573 |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2574 Titled group: |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2575 Group description |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2576 |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2577 --bar BAR bar help |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2578 --baz BAZ baz help |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2579 ''' |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2580 |
|
e82501812ae3
#10680: fix mutually exclusive arguments in argument groups.
Steven Bethard <steven.bethard@gmail.com>
parents:
67744
diff
changeset
|
2581 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2582 class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2583 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2584 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2585 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2586 parser.add_argument('x', help='x help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2587 parser.add_argument('-y', action='store_true', help='y help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2588 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2589 group.add_argument('a', nargs='?', help='a help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2590 group.add_argument('-b', action='store_true', help='b help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2591 group.add_argument('-c', action='store_true', help='c help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2592 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2593 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2594 failures = ['X A -b', '-b -c', '-c X A'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2595 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2596 ('X A', NS(a='A', b=False, c=False, x='X', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2597 ('X -b', NS(a=None, b=True, c=False, x='X', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2598 ('X -c', NS(a=None, b=False, c=True, x='X', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2599 ('X A -y', NS(a='A', b=False, c=False, x='X', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2600 ('X -y -b', NS(a=None, b=True, c=False, x='X', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2601 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2602 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2603 ('X', NS(a=None, b=False, c=False, x='X', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2604 ('X -y', NS(a=None, b=False, c=False, x='X', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2605 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2606 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2607 usage_when_required = usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2608 usage: PROG [-h] [-y] [-b] [-c] x [a] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2609 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2610 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2611 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2612 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2613 x x help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2614 a a help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2615 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2616 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2617 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2618 -y y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2619 -b b help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2620 -c c help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2621 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2622 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2623 # ================================================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2624 # Mutually exclusive group in parent parser tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2625 # ================================================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2626 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2627 class MEPBase(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2628 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2629 def get_parser(self, required=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2630 parent = super(MEPBase, self).get_parser(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2631 parser = ErrorRaisingArgumentParser( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2632 prog=parent.prog, add_help=False, parents=[parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2633 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2634 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2635 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2636 class TestMutuallyExclusiveGroupErrorsParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2637 MEPBase, TestMutuallyExclusiveGroupErrors): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2638 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2639 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2640 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2641 class TestMutuallyExclusiveSimpleParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2642 MEPBase, TestMutuallyExclusiveSimple): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2643 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2644 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2645 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2646 class TestMutuallyExclusiveLongParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2647 MEPBase, TestMutuallyExclusiveLong): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2648 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2649 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2650 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2651 class TestMutuallyExclusiveFirstSuppressedParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2652 MEPBase, TestMutuallyExclusiveFirstSuppressed): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2653 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2654 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2655 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2656 class TestMutuallyExclusiveManySuppressedParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2657 MEPBase, TestMutuallyExclusiveManySuppressed): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2658 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2659 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2660 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2661 class TestMutuallyExclusiveOptionalAndPositionalParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2662 MEPBase, TestMutuallyExclusiveOptionalAndPositional): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2663 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2664 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2665 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2666 class TestMutuallyExclusiveOptionalsMixedParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2667 MEPBase, TestMutuallyExclusiveOptionalsMixed): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2668 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2669 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2670 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2671 class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2672 MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2673 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2674 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2675 # ================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2676 # Set default tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2677 # ================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2678 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2679 class TestSetDefaults(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2680 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2681 def test_set_defaults_no_args(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2682 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2683 parser.set_defaults(x='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2684 parser.set_defaults(y='bar', z=1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2685 self.assertEqual(NS(x='foo', y='bar', z=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2686 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2687 self.assertEqual(NS(x='foo', y='bar', z=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2688 parser.parse_args([], NS())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2689 self.assertEqual(NS(x='baz', y='bar', z=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2690 parser.parse_args([], NS(x='baz'))) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2691 self.assertEqual(NS(x='baz', y='bar', z=2), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2692 parser.parse_args([], NS(x='baz', z=2))) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2693 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2694 def test_set_defaults_with_args(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2695 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2696 parser.set_defaults(x='foo', y='bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2697 parser.add_argument('-x', default='xfoox') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2698 self.assertEqual(NS(x='xfoox', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2699 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2700 self.assertEqual(NS(x='xfoox', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2701 parser.parse_args([], NS())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2702 self.assertEqual(NS(x='baz', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2703 parser.parse_args([], NS(x='baz'))) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2704 self.assertEqual(NS(x='1', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2705 parser.parse_args('-x 1'.split())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2706 self.assertEqual(NS(x='1', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2707 parser.parse_args('-x 1'.split(), NS())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2708 self.assertEqual(NS(x='1', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2709 parser.parse_args('-x 1'.split(), NS(x='baz'))) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2710 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2711 def test_set_defaults_subparsers(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2712 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2713 parser.set_defaults(x='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2714 subparsers = parser.add_subparsers() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2715 parser_a = subparsers.add_parser('a') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2716 parser_a.set_defaults(y='bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2717 self.assertEqual(NS(x='foo', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2718 parser.parse_args('a'.split())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2719 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2720 def test_set_defaults_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2721 parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2722 parent.set_defaults(x='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2723 parser = ErrorRaisingArgumentParser(parents=[parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2724 self.assertEqual(NS(x='foo'), parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2725 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2726 def test_set_defaults_same_as_add_argument(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2727 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2728 parser.set_defaults(w='W', x='X', y='Y', z='Z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2729 parser.add_argument('-w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2730 parser.add_argument('-x', default='XX') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2731 parser.add_argument('y', nargs='?') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2732 parser.add_argument('z', nargs='?', default='ZZ') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2733 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2734 # defaults set previously |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2735 self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2736 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2737 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2738 # reset defaults |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2739 parser.set_defaults(w='WW', x='X', y='YY', z='Z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2740 self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2741 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2742 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2743 def test_set_defaults_same_as_add_argument_group(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2744 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2745 parser.set_defaults(w='W', x='X', y='Y', z='Z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2746 group = parser.add_argument_group('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2747 group.add_argument('-w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2748 group.add_argument('-x', default='XX') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2749 group.add_argument('y', nargs='?') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2750 group.add_argument('z', nargs='?', default='ZZ') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2751 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2752 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2753 # defaults set previously |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2754 self.assertEqual(NS(w='W', x='XX', y='Y', z='ZZ'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2755 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2756 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2757 # reset defaults |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2758 parser.set_defaults(w='WW', x='X', y='YY', z='Z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2759 self.assertEqual(NS(w='WW', x='X', y='YY', z='Z'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2760 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2761 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2762 # ================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2763 # Get default tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2764 # ================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2765 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2766 class TestGetDefault(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2767 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2768 def test_get_default(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2769 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2770 self.assertEqual(None, parser.get_default("foo")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2771 self.assertEqual(None, parser.get_default("bar")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2772 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2773 parser.add_argument("--foo") |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2774 self.assertEqual(None, parser.get_default("foo")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2775 self.assertEqual(None, parser.get_default("bar")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2776 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2777 parser.add_argument("--bar", type=int, default=42) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2778 self.assertEqual(None, parser.get_default("foo")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2779 self.assertEqual(42, parser.get_default("bar")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2780 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2781 parser.set_defaults(foo="badger") |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2782 self.assertEqual("badger", parser.get_default("foo")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2783 self.assertEqual(42, parser.get_default("bar")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2784 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2785 # ========================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2786 # Namespace 'contains' tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2787 # ========================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2788 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2789 class TestNamespaceContainsSimple(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2790 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2791 def test_empty(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2792 ns = argparse.Namespace() |
|
66348
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2793 self.assertEqual('' in ns, False) |
|
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2794 self.assertEqual('' not in ns, True) |
|
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2795 self.assertEqual('x' in ns, False) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2796 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2797 def test_non_empty(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2798 ns = argparse.Namespace(x=1, y=2) |
|
66348
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2799 self.assertEqual('x' in ns, True) |
|
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2800 self.assertEqual('x' not in ns, False) |
|
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2801 self.assertEqual('y' in ns, True) |
|
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2802 self.assertEqual('' in ns, False) |
|
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2803 self.assertEqual('xx' in ns, False) |
|
614c84670c63
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65888
diff
changeset
|
2804 self.assertEqual('z' in ns, False) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2805 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2806 # ===================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2807 # Help formatting tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2808 # ===================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2809 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2810 class TestHelpFormattingMetaclass(type): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2811 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2812 def __init__(cls, name, bases, bodydict): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2813 if name == 'HelpTestCase': |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2814 return |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2815 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2816 class AddTests(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2817 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2818 def __init__(self, test_class, func_suffix, std_name): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2819 self.func_suffix = func_suffix |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2820 self.std_name = std_name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2821 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2822 for test_func in [self.test_format, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2823 self.test_print, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2824 self.test_print_file]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2825 test_name = '%s_%s' % (test_func.__name__, func_suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2826 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2827 def test_wrapper(self, test_func=test_func): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2828 test_func(self) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2829 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2830 test_wrapper.__name__ = test_name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2831 except TypeError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2832 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2833 setattr(test_class, test_name, test_wrapper) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2834 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2835 def _get_parser(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2836 parser = argparse.ArgumentParser( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2837 *tester.parser_signature.args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2838 **tester.parser_signature.kwargs) |
|
69005
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2839 for argument_sig in getattr(tester, 'argument_signatures', []): |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2840 parser.add_argument(*argument_sig.args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2841 **argument_sig.kwargs) |
|
69005
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2842 group_sigs = getattr(tester, 'argument_group_signatures', []) |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2843 for group_sig, argument_sigs in group_sigs: |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2844 group = parser.add_argument_group(*group_sig.args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2845 **group_sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2846 for argument_sig in argument_sigs: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2847 group.add_argument(*argument_sig.args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2848 **argument_sig.kwargs) |
|
69005
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2849 subparsers_sigs = getattr(tester, 'subparsers_signatures', []) |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2850 if subparsers_sigs: |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2851 subparsers = parser.add_subparsers() |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2852 for subparser_sig in subparsers_sigs: |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2853 subparsers.add_parser(*subparser_sig.args, |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
2854 **subparser_sig.kwargs) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2855 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2856 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2857 def _test(self, tester, parser_text): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2858 expected_text = getattr(tester, self.func_suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2859 expected_text = textwrap.dedent(expected_text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2860 if expected_text != parser_text: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2861 print(repr(expected_text)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2862 print(repr(parser_text)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2863 for char1, char2 in zip(expected_text, parser_text): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2864 if char1 != char2: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2865 print('first diff: %r %r' % (char1, char2)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2866 break |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2867 tester.assertEqual(expected_text, parser_text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2868 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2869 def test_format(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2870 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2871 format = getattr(parser, 'format_%s' % self.func_suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2872 self._test(tester, format()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2873 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2874 def test_print(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2875 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2876 print_ = getattr(parser, 'print_%s' % self.func_suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2877 old_stream = getattr(sys, self.std_name) |
|
60453
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
2878 setattr(sys, self.std_name, StdIOBuffer()) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2879 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2880 print_() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2881 parser_text = getattr(sys, self.std_name).getvalue() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2882 finally: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2883 setattr(sys, self.std_name, old_stream) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2884 self._test(tester, parser_text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2885 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2886 def test_print_file(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2887 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2888 print_ = getattr(parser, 'print_%s' % self.func_suffix) |
|
60453
2e8d2d7c43c0
Switch regrtest to use StringIO instead of cStringIO for test_multiprocessing on Windows. Issue 8333.
Michael Foord <fuzzyman@voidspace.org.uk>
parents:
60116
diff
changeset
|
2889 sfile = StdIOBuffer() |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2890 print_(sfile) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2891 parser_text = sfile.getvalue() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2892 self._test(tester, parser_text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2893 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2894 # add tests for {format,print}_{usage,help,version} |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2895 for func_suffix, std_name in [('usage', 'stdout'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2896 ('help', 'stdout'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2897 ('version', 'stderr')]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2898 AddTests(cls, func_suffix, std_name) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2899 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2900 bases = TestCase, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2901 HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {}) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2902 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2903 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2904 class TestHelpBiggerOptionals(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2905 """Make sure that argument help aligns when options are longer""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2906 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2907 parser_signature = Sig(prog='PROG', description='DESCRIPTION', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2908 epilog='EPILOG', version='0.1') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2909 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2910 Sig('-x', action='store_true', help='X HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2911 Sig('--y', help='Y HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2912 Sig('foo', help='FOO HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2913 Sig('bar', help='BAR HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2914 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2915 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2916 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2917 usage: PROG [-h] [-v] [-x] [--y Y] foo bar |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2918 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2919 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2920 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2921 DESCRIPTION |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2922 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2923 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2924 foo FOO HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2925 bar BAR HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2926 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2927 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2928 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2929 -v, --version show program's version number and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2930 -x X HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2931 --y Y Y HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2932 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2933 EPILOG |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2934 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2935 version = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2936 0.1 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2937 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2938 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2939 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2940 class TestHelpBiggerOptionalGroups(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2941 """Make sure that argument help aligns when options are longer""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2942 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2943 parser_signature = Sig(prog='PROG', description='DESCRIPTION', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2944 epilog='EPILOG', version='0.1') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2945 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2946 Sig('-x', action='store_true', help='X HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2947 Sig('--y', help='Y HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2948 Sig('foo', help='FOO HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2949 Sig('bar', help='BAR HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2950 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2951 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2952 (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2953 Sig('baz', help='BAZ HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2954 Sig('-z', nargs='+', help='Z HELP')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2955 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2956 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2957 usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2958 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2959 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2960 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2961 DESCRIPTION |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2962 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2963 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2964 foo FOO HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2965 bar BAR HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2966 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2967 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2968 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2969 -v, --version show program's version number and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2970 -x X HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2971 --y Y Y HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2972 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2973 GROUP TITLE: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2974 GROUP DESCRIPTION |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2975 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2976 baz BAZ HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2977 -z Z [Z ...] Z HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2978 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2979 EPILOG |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2980 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2981 version = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2982 0.1 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2983 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2984 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2985 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2986 class TestHelpBiggerPositionals(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2987 """Make sure that help aligns when arguments are longer""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2988 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2989 parser_signature = Sig(usage='USAGE', description='DESCRIPTION') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2990 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2991 Sig('-x', action='store_true', help='X HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2992 Sig('--y', help='Y HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2993 Sig('ekiekiekifekang', help='EKI HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2994 Sig('bar', help='BAR HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2995 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2996 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2997 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2998 usage: USAGE |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2999 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3000 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3001 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3002 DESCRIPTION |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3003 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3004 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3005 ekiekiekifekang EKI HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3006 bar BAR HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3007 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3008 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3009 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3010 -x X HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3011 --y Y Y HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3012 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3013 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3014 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3015 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3016 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3017 class TestHelpReformatting(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3018 """Make sure that text after short names starts on the first line""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3019 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3020 parser_signature = Sig( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3021 prog='PROG', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3022 description=' oddly formatted\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3023 'description\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3024 '\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3025 'that is so long that it should go onto multiple ' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3026 'lines when wrapped') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3027 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3028 Sig('-x', metavar='XX', help='oddly\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3029 ' formatted -x help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3030 Sig('y', metavar='yyy', help='normal y help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3031 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3032 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3033 (Sig('title', description='\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3034 ' oddly formatted group\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3035 '\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3036 'description'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3037 [Sig('-a', action='store_true', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3038 help=' oddly \n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3039 'formatted -a help \n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3040 ' again, so long that it should be wrapped over ' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3041 'multiple lines')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3042 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3043 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3044 usage: PROG [-h] [-x XX] [-a] yyy |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3045 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3046 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3047 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3048 oddly formatted description that is so long that it should go onto \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3049 multiple |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3050 lines when wrapped |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3051 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3052 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3053 yyy normal y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3054 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3055 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3056 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3057 -x XX oddly formatted -x help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3058 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3059 title: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3060 oddly formatted group description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3061 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3062 -a oddly formatted -a help again, so long that it should \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3063 be wrapped |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3064 over multiple lines |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3065 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3066 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3067 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3068 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3069 class TestHelpWrappingShortNames(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3070 """Make sure that text after short names starts on the first line""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3071 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3072 parser_signature = Sig(prog='PROG', description= 'D\nD' * 30) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3073 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3074 Sig('-x', metavar='XX', help='XHH HX' * 20), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3075 Sig('y', metavar='yyy', help='YH YH' * 20), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3076 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3077 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3078 (Sig('ALPHAS'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3079 Sig('-a', action='store_true', help='AHHH HHA' * 10)]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3080 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3081 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3082 usage: PROG [-h] [-x XX] [-a] yyy |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3083 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3084 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3085 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3086 D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3087 DD DD DD |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3088 DD DD DD DD D |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3089 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3090 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3091 yyy YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3092 YHYH YHYH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3093 YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3094 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3095 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3096 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3097 -x XX XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3098 HXXHH HXXHH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3099 HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3100 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3101 ALPHAS: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3102 -a AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3103 HHAAHHH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3104 HHAAHHH HHAAHHH HHA |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3105 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3106 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3107 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3108 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3109 class TestHelpWrappingLongNames(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3110 """Make sure that text after long names starts on the next line""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3111 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3112 parser_signature = Sig(usage='USAGE', description= 'D D' * 30, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3113 version='V V'*30) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3114 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3115 Sig('-x', metavar='X' * 25, help='XH XH' * 20), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3116 Sig('y', metavar='y' * 25, help='YH YH' * 20), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3117 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3118 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3119 (Sig('ALPHAS'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3120 Sig('-a', metavar='A' * 25, help='AH AH' * 20), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3121 Sig('z', metavar='z' * 25, help='ZH ZH' * 20)]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3122 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3123 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3124 usage: USAGE |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3125 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3126 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3127 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3128 D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3129 DD DD DD |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3130 DD DD DD DD D |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3131 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3132 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3133 yyyyyyyyyyyyyyyyyyyyyyyyy |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3134 YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3135 YHYH YHYH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3136 YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3137 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3138 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3139 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3140 -v, --version show program's version number and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3141 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3142 XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3143 XHXH XHXH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3144 XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3145 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3146 ALPHAS: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3147 -a AAAAAAAAAAAAAAAAAAAAAAAAA |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3148 AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3149 AHAH AHAH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3150 AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3151 zzzzzzzzzzzzzzzzzzzzzzzzz |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3152 ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3153 ZHZH ZHZH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3154 ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3155 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3156 version = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3157 V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3158 VV VV VV |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3159 VV VV VV VV V |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3160 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3161 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3162 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3163 class TestHelpUsage(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3164 """Test basic usage messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3165 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3166 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3167 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3168 Sig('-w', nargs='+', help='w'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3169 Sig('-x', nargs='*', help='x'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3170 Sig('a', help='a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3171 Sig('b', help='b', nargs=2), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3172 Sig('c', help='c', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3173 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3174 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3175 (Sig('group'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3176 Sig('-y', nargs='?', help='y'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3177 Sig('-z', nargs=3, help='z'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3178 Sig('d', help='d', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3179 Sig('e', help='e', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3180 ]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3181 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3182 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3183 usage: PROG [-h] [-w W [W ...]] [-x [X [X ...]]] [-y [Y]] [-z Z Z Z] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3184 a b b [c] [d [d ...]] e [e ...] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3185 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3186 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3187 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3188 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3189 a a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3190 b b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3191 c c |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3192 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3193 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3194 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3195 -w W [W ...] w |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3196 -x [X [X ...]] x |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3197 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3198 group: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3199 -y [Y] y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3200 -z Z Z Z z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3201 d d |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3202 e e |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3203 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3204 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3205 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3206 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3207 class TestHelpOnlyUserGroups(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3208 """Test basic usage messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3209 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3210 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3211 argument_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3212 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3213 (Sig('xxxx'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3214 Sig('-x', help='x'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3215 Sig('a', help='a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3216 ]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3217 (Sig('yyyy'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3218 Sig('b', help='b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3219 Sig('-y', help='y'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3220 ]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3221 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3222 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3223 usage: PROG [-x X] [-y Y] a b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3224 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3225 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3226 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3227 xxxx: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3228 -x X x |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3229 a a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3230 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3231 yyyy: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3232 b b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3233 -y Y y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3234 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3235 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3236 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3237 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3238 class TestHelpUsageLongProg(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3239 """Test usage messages where the prog is long""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3240 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3241 parser_signature = Sig(prog='P' * 60) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3242 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3243 Sig('-w', metavar='W'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3244 Sig('-x', metavar='X'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3245 Sig('a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3246 Sig('b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3247 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3248 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3249 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3250 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3251 [-h] [-w W] [-x X] a b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3252 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3253 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3254 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3255 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3256 a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3257 b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3258 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3259 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3260 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3261 -w W |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3262 -x X |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3263 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3264 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3265 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3266 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3267 class TestHelpUsageLongProgOptionsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3268 """Test usage messages where the prog is long and the optionals wrap""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3269 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3270 parser_signature = Sig(prog='P' * 60) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3271 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3272 Sig('-w', metavar='W' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3273 Sig('-x', metavar='X' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3274 Sig('-y', metavar='Y' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3275 Sig('-z', metavar='Z' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3276 Sig('a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3277 Sig('b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3278 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3279 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3280 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3281 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3282 [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3283 [-x XXXXXXXXXXXXXXXXXXXXXXXXX] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3284 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3285 a b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3286 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3287 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3288 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3289 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3290 a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3291 b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3292 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3293 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3294 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3295 -w WWWWWWWWWWWWWWWWWWWWWWWWW |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3296 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3297 -y YYYYYYYYYYYYYYYYYYYYYYYYY |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3298 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3299 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3300 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3301 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3302 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3303 class TestHelpUsageLongProgPositionalsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3304 """Test usage messages where the prog is long and the positionals wrap""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3305 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3306 parser_signature = Sig(prog='P' * 60, add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3307 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3308 Sig('a' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3309 Sig('b' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3310 Sig('c' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3311 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3312 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3313 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3314 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3315 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3316 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3317 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3318 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3319 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3320 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3321 aaaaaaaaaaaaaaaaaaaaaaaaa |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3322 bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3323 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3324 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3325 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3326 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3327 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3328 class TestHelpUsageOptionalsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3329 """Test usage messages where the optionals wrap""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3330 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3331 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3332 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3333 Sig('-w', metavar='W' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3334 Sig('-x', metavar='X' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3335 Sig('-y', metavar='Y' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3336 Sig('-z', metavar='Z' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3337 Sig('a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3338 Sig('b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3339 Sig('c'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3340 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3341 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3342 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3343 usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3344 [-x XXXXXXXXXXXXXXXXXXXXXXXXX] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3345 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3346 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3347 a b c |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3348 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3349 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3350 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3351 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3352 a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3353 b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3354 c |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3355 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3356 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3357 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3358 -w WWWWWWWWWWWWWWWWWWWWWWWWW |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3359 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3360 -y YYYYYYYYYYYYYYYYYYYYYYYYY |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3361 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3362 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3363 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3364 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3365 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3366 class TestHelpUsagePositionalsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3367 """Test usage messages where the positionals wrap""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3368 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3369 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3370 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3371 Sig('-x'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3372 Sig('-y'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3373 Sig('-z'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3374 Sig('a' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3375 Sig('b' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3376 Sig('c' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3377 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3378 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3379 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3380 usage: PROG [-h] [-x X] [-y Y] [-z Z] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3381 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3382 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3383 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3384 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3385 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3386 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3387 aaaaaaaaaaaaaaaaaaaaaaaaa |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3388 bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3389 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3390 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3391 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3392 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3393 -x X |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3394 -y Y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3395 -z Z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3396 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3397 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3398 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3399 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3400 class TestHelpUsageOptionalsPositionalsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3401 """Test usage messages where the optionals and positionals wrap""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3402 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3403 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3404 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3405 Sig('-x', metavar='X' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3406 Sig('-y', metavar='Y' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3407 Sig('-z', metavar='Z' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3408 Sig('a' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3409 Sig('b' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3410 Sig('c' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3411 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3412 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3413 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3414 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3415 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3416 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3417 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3418 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3419 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3420 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3421 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3422 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3423 aaaaaaaaaaaaaaaaaaaaaaaaa |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3424 bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3425 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3426 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3427 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3428 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3429 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3430 -y YYYYYYYYYYYYYYYYYYYYYYYYY |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3431 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3432 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3433 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3434 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3435 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3436 class TestHelpUsageOptionalsOnlyWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3437 """Test usage messages where there are only optionals and they wrap""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3438 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3439 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3440 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3441 Sig('-x', metavar='X' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3442 Sig('-y', metavar='Y' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3443 Sig('-z', metavar='Z' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3444 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3445 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3446 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3447 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3448 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3449 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3450 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3451 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3452 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3453 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3454 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3455 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3456 -y YYYYYYYYYYYYYYYYYYYYYYYYY |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3457 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3458 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3459 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3460 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3461 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3462 class TestHelpUsagePositionalsOnlyWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3463 """Test usage messages where there are only positionals and they wrap""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3464 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3465 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3466 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3467 Sig('a' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3468 Sig('b' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3469 Sig('c' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3470 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3471 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3472 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3473 usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3474 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3475 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3476 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3477 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3478 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3479 aaaaaaaaaaaaaaaaaaaaaaaaa |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3480 bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3481 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3482 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3483 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3484 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3485 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3486 class TestHelpVariableExpansion(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3487 """Test that variables are expanded properly in help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3488 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3489 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3490 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3491 Sig('-x', type=int, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3492 help='x %(prog)s %(default)s %(type)s %%'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3493 Sig('-y', action='store_const', default=42, const='XXX', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3494 help='y %(prog)s %(default)s %(const)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3495 Sig('--foo', choices='abc', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3496 help='foo %(prog)s %(default)s %(choices)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3497 Sig('--bar', default='baz', choices=[1, 2], metavar='BBB', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3498 help='bar %(prog)s %(default)s %(dest)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3499 Sig('spam', help='spam %(prog)s %(default)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3500 Sig('badger', default=0.5, help='badger %(prog)s %(default)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3501 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3502 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3503 (Sig('group'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3504 Sig('-a', help='a %(prog)s %(default)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3505 Sig('-b', default=-1, help='b %(prog)s %(default)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3506 ]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3507 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3508 usage = ('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3509 usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3510 spam badger |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3511 ''') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3512 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3513 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3514 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3515 spam spam PROG None |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3516 badger badger PROG 0.5 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3517 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3518 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3519 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3520 -x X x PROG None int % |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3521 -y y PROG 42 XXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3522 --foo {a,b,c} foo PROG None a, b, c |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3523 --bar BBB bar PROG baz bar |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3524 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3525 group: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3526 -a A a PROG None |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3527 -b B b PROG -1 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3528 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3529 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3530 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3531 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3532 class TestHelpVariableExpansionUsageSupplied(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3533 """Test that variables are expanded properly when usage= is present""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3534 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3535 parser_signature = Sig(prog='PROG', usage='%(prog)s FOO') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3536 argument_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3537 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3538 usage = ('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3539 usage: PROG FOO |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3540 ''') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3541 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3542 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3543 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3544 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3545 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3546 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3547 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3548 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3549 class TestHelpVariableExpansionNoArguments(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3550 """Test that variables are expanded properly with no arguments""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3551 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3552 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3553 argument_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3554 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3555 usage = ('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3556 usage: PROG |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3557 ''') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3558 help = usage |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3559 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3560 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3561 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3562 class TestHelpSuppressUsage(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3563 """Test that items can be suppressed in usage messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3564 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3565 parser_signature = Sig(prog='PROG', usage=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3566 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3567 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3568 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3569 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3570 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3571 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3572 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3573 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3574 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3575 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3576 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3577 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3578 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3579 usage = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3580 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3581 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3582 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3583 class TestHelpSuppressOptional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3584 """Test that optional arguments can be suppressed in help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3585 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3586 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3587 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3588 Sig('--foo', help=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3589 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3590 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3591 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3592 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3593 usage: PROG spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3594 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3595 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3596 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3597 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3598 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3599 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3600 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3601 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3602 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3603 class TestHelpSuppressOptionalGroup(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3604 """Test that optional groups can be suppressed in help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3605 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3606 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3607 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3608 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3609 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3610 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3611 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3612 (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3613 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3614 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3615 usage: PROG [-h] [--foo FOO] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3616 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3617 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3618 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3619 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3620 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3621 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3622 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3623 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3624 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3625 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3626 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3627 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3628 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3629 class TestHelpSuppressPositional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3630 """Test that positional arguments can be suppressed in help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3631 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3632 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3633 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3634 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3635 Sig('spam', help=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3636 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3637 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3638 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3639 usage: PROG [-h] [--foo FOO] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3640 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3641 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3642 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3643 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3644 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3645 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3646 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3647 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3648 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3649 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3650 class TestHelpRequiredOptional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3651 """Test that required options don't look optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3652 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3653 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3654 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3655 Sig('--foo', required=True, help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3656 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3657 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3658 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3659 usage: PROG [-h] --foo FOO |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3660 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3661 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3662 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3663 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3664 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3665 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3666 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3667 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3668 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3669 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3670 class TestHelpAlternatePrefixChars(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3671 """Test that options display with different prefix characters""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3672 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3673 parser_signature = Sig(prog='PROG', prefix_chars='^;', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3674 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3675 Sig('^^foo', action='store_true', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3676 Sig(';b', ';;bar', help='bar help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3677 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3678 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3679 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3680 usage: PROG [^^foo] [;b BAR] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3681 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3682 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3683 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3684 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3685 ^^foo foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3686 ;b BAR, ;;bar BAR bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3687 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3688 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3689 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3690 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3691 class TestHelpNoHelpOptional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3692 """Test that the --help argument can be suppressed help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3693 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3694 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3695 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3696 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3697 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3698 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3699 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3700 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3701 usage: PROG [--foo FOO] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3702 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3703 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3704 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3705 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3706 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3707 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3708 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3709 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3710 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3711 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3712 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3713 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3714 class TestHelpVersionOptional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3715 """Test that the --version argument can be suppressed help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3716 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3717 parser_signature = Sig(prog='PROG', version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3718 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3719 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3720 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3721 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3722 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3723 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3724 usage: PROG [-h] [-v] [--foo FOO] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3725 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3726 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3727 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3728 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3729 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3730 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3731 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3732 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3733 -v, --version show program's version number and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3734 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3735 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3736 version = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3737 1.0 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3738 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3739 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3740 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3741 class TestHelpNone(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3742 """Test that no errors occur if no help is specified""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3743 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3744 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3745 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3746 Sig('--foo'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3747 Sig('spam'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3748 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3749 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3750 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3751 usage: PROG [-h] [--foo FOO] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3752 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3753 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3754 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3755 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3756 spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3757 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3758 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3759 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3760 --foo FOO |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3761 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3762 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3763 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3764 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3765 class TestHelpTupleMetavar(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3766 """Test specifying metavar as a tuple""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3767 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3768 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3769 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3770 Sig('-w', help='w', nargs='+', metavar=('W1', 'W2')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3771 Sig('-x', help='x', nargs='*', metavar=('X1', 'X2')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3772 Sig('-y', help='y', nargs=3, metavar=('Y1', 'Y2', 'Y3')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3773 Sig('-z', help='z', nargs='?', metavar=('Z1', )), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3774 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3775 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3776 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3777 usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3778 [-z [Z1]] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3779 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3780 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3781 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3782 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3783 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3784 -w W1 [W2 ...] w |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3785 -x [X1 [X2 ...]] x |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3786 -y Y1 Y2 Y3 y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3787 -z [Z1] z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3788 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3789 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3790 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3791 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3792 class TestHelpRawText(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3793 """Test the RawTextHelpFormatter""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3794 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3795 parser_signature = Sig( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3796 prog='PROG', formatter_class=argparse.RawTextHelpFormatter, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3797 description='Keep the formatting\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3798 ' exactly as it is written\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3799 '\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3800 'here\n') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3801 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3802 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3803 Sig('--foo', help=' foo help should also\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3804 'appear as given here'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3805 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3806 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3807 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3808 (Sig('title', description=' This text\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3809 ' should be indented\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3810 ' exactly like it is here\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3811 [Sig('--bar', help='bar help')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3812 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3813 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3814 usage: PROG [-h] [--foo FOO] [--bar BAR] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3815 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3816 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3817 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3818 Keep the formatting |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3819 exactly as it is written |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3820 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3821 here |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3822 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3823 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3824 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3825 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3826 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3827 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3828 --foo FOO foo help should also |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3829 appear as given here |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3830 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3831 title: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3832 This text |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3833 should be indented |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3834 exactly like it is here |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3835 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3836 --bar BAR bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3837 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3838 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3839 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3840 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3841 class TestHelpRawDescription(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3842 """Test the RawTextHelpFormatter""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3843 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3844 parser_signature = Sig( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3845 prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3846 description='Keep the formatting\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3847 ' exactly as it is written\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3848 '\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3849 'here\n') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3850 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3851 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3852 Sig('--foo', help=' foo help should not\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3853 ' retain this odd formatting'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3854 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3855 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3856 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3857 (Sig('title', description=' This text\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3858 ' should be indented\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3859 ' exactly like it is here\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3860 [Sig('--bar', help='bar help')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3861 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3862 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3863 usage: PROG [-h] [--foo FOO] [--bar BAR] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3864 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3865 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3866 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3867 Keep the formatting |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3868 exactly as it is written |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3869 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3870 here |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3871 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3872 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3873 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3874 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3875 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3876 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3877 --foo FOO foo help should not retain this odd formatting |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3878 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3879 title: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3880 This text |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3881 should be indented |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3882 exactly like it is here |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3883 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3884 --bar BAR bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3885 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3886 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3887 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3888 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3889 class TestHelpArgumentDefaults(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3890 """Test the ArgumentDefaultsHelpFormatter""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3891 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3892 parser_signature = Sig( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3893 prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3894 description='description') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3895 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3896 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3897 Sig('--foo', help='foo help - oh and by the way, %(default)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3898 Sig('--bar', action='store_true', help='bar help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3899 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3900 Sig('badger', nargs='?', default='wooden', help='badger help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3901 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3902 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3903 (Sig('title', description='description'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3904 [Sig('--baz', type=int, default=42, help='baz help')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3905 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3906 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3907 usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3908 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3909 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3910 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3911 description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3912 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3913 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3914 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3915 badger badger help (default: wooden) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3916 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3917 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3918 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3919 --foo FOO foo help - oh and by the way, None |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3920 --bar bar help (default: False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3921 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3922 title: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3923 description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3924 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3925 --baz BAZ baz help (default: 42) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3926 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3927 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3928 |
|
61879
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3929 class TestHelpVersionAction(HelpTestCase): |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3930 """Test the default help for the version action""" |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3931 |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3932 parser_signature = Sig(prog='PROG', description='description') |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3933 argument_signatures = [Sig('-V', '--version', action='version', version='3.6')] |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3934 argument_group_signatures = [] |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3935 usage = '''\ |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3936 usage: PROG [-h] [-V] |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3937 ''' |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3938 help = usage + '''\ |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3939 |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3940 description |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3941 |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3942 optional arguments: |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3943 -h, --help show this help message and exit |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3944 -V, --version show program's version number and exit |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3945 ''' |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3946 version = '' |
|
e64ea1619820
Fix default value for version help. Approved by Benjamin on python-dev: http://mail.python.org/pipermail/python-dev/2010-May/100231.html
Steven Bethard <steven.bethard@gmail.com>
parents:
60453
diff
changeset
|
3947 |
|
69005
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3948 class TestHelpSubparsersOrdering(HelpTestCase): |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3949 """Test ordering of subcommands in help matches the code""" |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3950 parser_signature = Sig(prog='PROG', |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3951 description='display some subcommands', |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3952 version='0.1') |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3953 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3954 subparsers_signatures = [Sig(name=name) |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3955 for name in ('a', 'b', 'c', 'd', 'e')] |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3956 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3957 usage = '''\ |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3958 usage: PROG [-h] [-v] {a,b,c,d,e} ... |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3959 ''' |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3960 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3961 help = usage + '''\ |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3962 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3963 display some subcommands |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3964 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3965 positional arguments: |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3966 {a,b,c,d,e} |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3967 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3968 optional arguments: |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3969 -h, --help show this help message and exit |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3970 -v, --version show program's version number and exit |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3971 ''' |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3972 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3973 version = '''\ |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3974 0.1 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3975 ''' |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3976 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3977 class TestHelpSubparsersWithHelpOrdering(HelpTestCase): |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3978 """Test ordering of subcommands in help matches the code""" |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3979 parser_signature = Sig(prog='PROG', |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3980 description='display some subcommands', |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3981 version='0.1') |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3982 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3983 subcommand_data = (('a', 'a subcommand help'), |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3984 ('b', 'b subcommand help'), |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3985 ('c', 'c subcommand help'), |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3986 ('d', 'd subcommand help'), |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3987 ('e', 'e subcommand help'), |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3988 ) |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3989 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3990 subparsers_signatures = [Sig(name=name, help=help) |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3991 for name, help in subcommand_data] |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3992 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3993 usage = '''\ |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3994 usage: PROG [-h] [-v] {a,b,c,d,e} ... |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3995 ''' |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3996 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3997 help = usage + '''\ |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3998 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
3999 display some subcommands |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4000 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4001 positional arguments: |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4002 {a,b,c,d,e} |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4003 a a subcommand help |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4004 b b subcommand help |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4005 c c subcommand help |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4006 d d subcommand help |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4007 e e subcommand help |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4008 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4009 optional arguments: |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4010 -h, --help show this help message and exit |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4011 -v, --version show program's version number and exit |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4012 ''' |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4013 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4014 version = '''\ |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4015 0.1 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4016 ''' |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4017 |
|
75ec20b4c50e
Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
68969
diff
changeset
|
4018 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4019 # ===================================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4020 # Optional/Positional constructor tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4021 # ===================================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4022 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4023 class TestInvalidArgumentConstructors(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4024 """Test a bunch of invalid Argument constructors""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4025 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4026 def assertTypeError(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4027 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4028 self.assertRaises(TypeError, parser.add_argument, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4029 *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4030 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4031 def assertValueError(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4032 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4033 self.assertRaises(ValueError, parser.add_argument, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4034 *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4035 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4036 def test_invalid_keyword_arguments(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4037 self.assertTypeError('-x', bar=None) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4038 self.assertTypeError('-y', callback='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4039 self.assertTypeError('-y', callback_args=()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4040 self.assertTypeError('-y', callback_kwargs={}) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4041 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4042 def test_missing_destination(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4043 self.assertTypeError() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4044 for action in ['append', 'store']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4045 self.assertTypeError(action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4046 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4047 def test_invalid_option_strings(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4048 self.assertValueError('--') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4049 self.assertValueError('---') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4050 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4051 def test_invalid_type(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4052 self.assertValueError('--foo', type='int') |
|
69125
f961e9179998
Issue #9347: Fix formatting for tuples in argparse type= error messages.
Steven Bethard <steven.bethard@gmail.com>
parents:
69005
diff
changeset
|
4053 self.assertValueError('--foo', type=(int, float)) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4054 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4055 def test_invalid_action(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4056 self.assertValueError('-x', action='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4057 self.assertValueError('foo', action='baz') |
|
69125
f961e9179998
Issue #9347: Fix formatting for tuples in argparse type= error messages.
Steven Bethard <steven.bethard@gmail.com>
parents:
69005
diff
changeset
|
4058 self.assertValueError('--foo', action=('store', 'append')) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4059 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4060 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4061 parser.add_argument("--foo", action="store-true") |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4062 except ValueError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4063 e = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4064 expected = 'unknown action' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4065 msg = 'expected %r, found %r' % (expected, e) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4066 self.assertTrue(expected in str(e), msg) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4067 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4068 def test_multiple_dest(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4069 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4070 parser.add_argument(dest='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4071 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4072 parser.add_argument('bar', dest='baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4073 except ValueError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4074 e = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4075 expected = 'dest supplied twice for positional argument' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4076 msg = 'expected %r, found %r' % (expected, e) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4077 self.assertTrue(expected in str(e), msg) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4078 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4079 def test_no_argument_actions(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4080 for action in ['store_const', 'store_true', 'store_false', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4081 'append_const', 'count']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4082 for attrs in [dict(type=int), dict(nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4083 dict(choices='ab')]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4084 self.assertTypeError('-x', action=action, **attrs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4085 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4086 def test_no_argument_no_const_actions(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4087 # options with zero arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4088 for action in ['store_true', 'store_false', 'count']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4089 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4090 # const is always disallowed |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4091 self.assertTypeError('-x', const='foo', action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4092 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4093 # nargs is always disallowed |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4094 self.assertTypeError('-x', nargs='*', action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4095 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4096 def test_more_than_one_argument_actions(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4097 for action in ['store', 'append']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4098 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4099 # nargs=0 is disallowed |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4100 self.assertValueError('-x', nargs=0, action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4101 self.assertValueError('spam', nargs=0, action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4102 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4103 # const is disallowed with non-optional arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4104 for nargs in [1, '*', '+']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4105 self.assertValueError('-x', const='foo', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4106 nargs=nargs, action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4107 self.assertValueError('spam', const='foo', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4108 nargs=nargs, action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4109 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4110 def test_required_const_actions(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4111 for action in ['store_const', 'append_const']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4112 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4113 # nargs is always disallowed |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4114 self.assertTypeError('-x', nargs='+', action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4115 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4116 def test_parsers_action_missing_params(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4117 self.assertTypeError('command', action='parsers') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4118 self.assertTypeError('command', action='parsers', prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4119 self.assertTypeError('command', action='parsers', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4120 parser_class=argparse.ArgumentParser) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4121 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4122 def test_required_positional(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4123 self.assertTypeError('foo', required=True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4124 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4125 def test_user_defined_action(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4126 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4127 class Success(Exception): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4128 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4129 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4130 class Action(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4131 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4132 def __init__(self, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4133 option_strings, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4134 dest, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4135 const, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4136 default, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4137 required=False): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4138 if dest == 'spam': |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4139 if const is Success: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4140 if default is Success: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4141 raise Success() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4142 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4143 def __call__(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4144 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4145 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4146 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4147 self.assertRaises(Success, parser.add_argument, '--spam', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4148 action=Action, default=Success, const=Success) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4149 self.assertRaises(Success, parser.add_argument, 'spam', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4150 action=Action, default=Success, const=Success) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4151 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4152 # ================================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4153 # Actions returned by add_argument |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4154 # ================================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4155 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4156 class TestActionsReturned(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4157 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4158 def test_dest(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4159 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4160 action = parser.add_argument('--foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4161 self.assertEqual(action.dest, 'foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4162 action = parser.add_argument('-b', '--bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4163 self.assertEqual(action.dest, 'bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4164 action = parser.add_argument('-x', '-y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4165 self.assertEqual(action.dest, 'x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4166 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4167 def test_misc(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4168 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4169 action = parser.add_argument('--foo', nargs='?', const=42, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4170 default=84, type=int, choices=[1, 2], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4171 help='FOO', metavar='BAR', dest='baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4172 self.assertEqual(action.nargs, '?') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4173 self.assertEqual(action.const, 42) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4174 self.assertEqual(action.default, 84) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4175 self.assertEqual(action.type, int) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4176 self.assertEqual(action.choices, [1, 2]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4177 self.assertEqual(action.help, 'FOO') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4178 self.assertEqual(action.metavar, 'BAR') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4179 self.assertEqual(action.dest, 'baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4180 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4181 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4182 # ================================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4183 # Argument conflict handling tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4184 # ================================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4185 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4186 class TestConflictHandling(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4187 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4188 def test_bad_type(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4189 self.assertRaises(ValueError, argparse.ArgumentParser, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4190 conflict_handler='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4191 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4192 def test_conflict_error(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4193 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4194 parser.add_argument('-x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4195 self.assertRaises(argparse.ArgumentError, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4196 parser.add_argument, '-x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4197 parser.add_argument('--spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4198 self.assertRaises(argparse.ArgumentError, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4199 parser.add_argument, '--spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4200 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4201 def test_resolve_error(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4202 get_parser = argparse.ArgumentParser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4203 parser = get_parser(prog='PROG', conflict_handler='resolve') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4204 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4205 parser.add_argument('-x', help='OLD X') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4206 parser.add_argument('-x', help='NEW X') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4207 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4208 usage: PROG [-h] [-x X] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4209 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4210 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4211 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4212 -x X NEW X |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4213 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4214 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4215 parser.add_argument('--spam', metavar='OLD_SPAM') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4216 parser.add_argument('--spam', metavar='NEW_SPAM') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4217 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4218 usage: PROG [-h] [-x X] [--spam NEW_SPAM] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4219 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4220 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4221 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4222 -x X NEW X |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4223 --spam NEW_SPAM |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4224 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4225 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4226 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4227 # ============================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4228 # Help and Version option tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4229 # ============================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4230 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4231 class TestOptionalsHelpVersionActions(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4232 """Test the help and version actions""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4233 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4234 def _get_error(self, func, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4235 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4236 func(*args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4237 except ArgumentParserError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4238 return sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4239 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4240 self.assertRaises(ArgumentParserError, func, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4241 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4242 def assertPrintHelpExit(self, parser, args_str): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4243 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4244 parser.format_help(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4245 self._get_error(parser.parse_args, args_str.split()).stdout) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4246 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4247 def assertPrintVersionExit(self, parser, args_str): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4248 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4249 parser.format_version(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4250 self._get_error(parser.parse_args, args_str.split()).stderr) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4251 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4252 def assertArgumentParserError(self, parser, *args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4253 self.assertRaises(ArgumentParserError, parser.parse_args, args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4254 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4255 def test_version(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4256 parser = ErrorRaisingArgumentParser(version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4257 self.assertPrintHelpExit(parser, '-h') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4258 self.assertPrintHelpExit(parser, '--help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4259 self.assertPrintVersionExit(parser, '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4260 self.assertPrintVersionExit(parser, '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4261 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4262 def test_version_format(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4263 parser = ErrorRaisingArgumentParser(prog='PPP', version='%(prog)s 3.5') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4264 msg = self._get_error(parser.parse_args, ['-v']).stderr |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4265 self.assertEqual('PPP 3.5\n', msg) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4266 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4267 def test_version_no_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4268 parser = ErrorRaisingArgumentParser(add_help=False, version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4269 self.assertArgumentParserError(parser, '-h') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4270 self.assertArgumentParserError(parser, '--help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4271 self.assertPrintVersionExit(parser, '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4272 self.assertPrintVersionExit(parser, '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4273 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4274 def test_version_action(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4275 parser = ErrorRaisingArgumentParser(prog='XXX') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4276 parser.add_argument('-V', action='version', version='%(prog)s 3.7') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4277 msg = self._get_error(parser.parse_args, ['-V']).stderr |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4278 self.assertEqual('XXX 3.7\n', msg) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4279 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4280 def test_no_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4281 parser = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4282 self.assertArgumentParserError(parser, '-h') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4283 self.assertArgumentParserError(parser, '--help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4284 self.assertArgumentParserError(parser, '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4285 self.assertArgumentParserError(parser, '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4286 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4287 def test_alternate_help_version(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4288 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4289 parser.add_argument('-x', action='help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4290 parser.add_argument('-y', action='version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4291 self.assertPrintHelpExit(parser, '-x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4292 self.assertPrintVersionExit(parser, '-y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4293 self.assertArgumentParserError(parser, '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4294 self.assertArgumentParserError(parser, '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4295 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4296 def test_help_version_extra_arguments(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4297 parser = ErrorRaisingArgumentParser(version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4298 parser.add_argument('-x', action='store_true') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4299 parser.add_argument('y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4300 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4301 # try all combinations of valid prefixes and suffixes |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4302 valid_prefixes = ['', '-x', 'foo', '-x bar', 'baz -x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4303 valid_suffixes = valid_prefixes + ['--bad-option', 'foo bar baz'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4304 for prefix in valid_prefixes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4305 for suffix in valid_suffixes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4306 format = '%s %%s %s' % (prefix, suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4307 self.assertPrintHelpExit(parser, format % '-h') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4308 self.assertPrintHelpExit(parser, format % '--help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4309 self.assertPrintVersionExit(parser, format % '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4310 self.assertPrintVersionExit(parser, format % '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4311 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4312 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4313 # ====================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4314 # str() and repr() tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4315 # ====================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4316 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4317 class TestStrings(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4318 """Test str() and repr() on Optionals and Positionals""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4319 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4320 def assertStringEqual(self, obj, result_string): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4321 for func in [str, repr]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4322 self.assertEqual(func(obj), result_string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4323 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4324 def test_optional(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4325 option = argparse.Action( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4326 option_strings=['--foo', '-a', '-b'], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4327 dest='b', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4328 type='int', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4329 nargs='+', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4330 default=42, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4331 choices=[1, 2, 3], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4332 help='HELP', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4333 metavar='METAVAR') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4334 string = ( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4335 "Action(option_strings=['--foo', '-a', '-b'], dest='b', " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4336 "nargs='+', const=None, default=42, type='int', " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4337 "choices=[1, 2, 3], help='HELP', metavar='METAVAR')") |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4338 self.assertStringEqual(option, string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4339 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4340 def test_argument(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4341 argument = argparse.Action( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4342 option_strings=[], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4343 dest='x', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4344 type=float, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4345 nargs='?', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4346 default=2.5, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4347 choices=[0.5, 1.5, 2.5], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4348 help='H HH H', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4349 metavar='MV MV MV') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4350 string = ( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4351 "Action(option_strings=[], dest='x', nargs='?', " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4352 "const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4353 "help='H HH H', metavar='MV MV MV')" % float) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4354 self.assertStringEqual(argument, string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4355 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4356 def test_namespace(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4357 ns = argparse.Namespace(foo=42, bar='spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4358 string = "Namespace(bar='spam', foo=42)" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4359 self.assertStringEqual(ns, string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4360 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4361 def test_parser(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4362 parser = argparse.ArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4363 string = ( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4364 "ArgumentParser(prog='PROG', usage=None, description=None, " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4365 "version=None, formatter_class=%r, conflict_handler='error', " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4366 "add_help=True)" % argparse.HelpFormatter) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4367 self.assertStringEqual(parser, string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4368 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4369 # =============== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4370 # Namespace tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4371 # =============== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4372 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4373 class TestNamespace(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4374 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4375 def test_constructor(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4376 ns = argparse.Namespace() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4377 self.assertRaises(AttributeError, getattr, ns, 'x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4378 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4379 ns = argparse.Namespace(a=42, b='spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4380 self.assertEqual(ns.a, 42) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4381 self.assertEqual(ns.b, 'spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4382 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4383 def test_equality(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4384 ns1 = argparse.Namespace(a=1, b=2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4385 ns2 = argparse.Namespace(b=2, a=1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4386 ns3 = argparse.Namespace(a=1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4387 ns4 = argparse.Namespace(b=2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4388 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4389 self.assertEqual(ns1, ns2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4390 self.assertNotEqual(ns1, ns3) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4391 self.assertNotEqual(ns1, ns4) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4392 self.assertNotEqual(ns2, ns3) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4393 self.assertNotEqual(ns2, ns4) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4394 self.assertTrue(ns1 != ns3) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4395 self.assertTrue(ns1 != ns4) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4396 self.assertTrue(ns2 != ns3) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4397 self.assertTrue(ns2 != ns4) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4398 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4399 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4400 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4401 # File encoding tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4402 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4403 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4404 class TestEncoding(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4405 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4406 def _test_module_encoding(self, path): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4407 path, _ = os.path.splitext(path) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4408 path += ".py" |
|
65333
4269267e6e57
Merged revisions 85497 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63691
diff
changeset
|
4409 with codecs.open(path, 'r', 'utf8') as f: |
|
4269267e6e57
Merged revisions 85497 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
63691
diff
changeset
|
4410 f.read() |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4411 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4412 def test_argparse_module_encoding(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4413 self._test_module_encoding(argparse.__file__) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4414 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4415 def test_test_argparse_module_encoding(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4416 self._test_module_encoding(__file__) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4417 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4418 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4419 # ArgumentError tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4420 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4421 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4422 class TestArgumentError(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4423 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4424 def test_argument_error(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4425 msg = "my error here" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4426 error = argparse.ArgumentError(None, msg) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4427 self.assertEqual(str(error), msg) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4428 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4429 # ======================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4430 # ArgumentTypeError tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4431 # ======================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4432 |
|
67921
89d52effc30a
Merged revisions 86542,87136,87216,87221,87228,87256,87337-87338,87372,87516,87571,88164 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
67824
diff
changeset
|
4433 class TestArgumentTypeError(TestCase): |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4434 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4435 def test_argument_type_error(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4436 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4437 def spam(string): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4438 raise argparse.ArgumentTypeError('spam!') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4439 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4440 parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4441 parser.add_argument('x', type=spam) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4442 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4443 parser.parse_args(['XXX']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4444 except ArgumentParserError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4445 expected = 'usage: PROG x\nPROG: error: argument x: spam!\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4446 msg = sys.exc_info()[1].stderr |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4447 self.assertEqual(expected, msg) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4448 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4449 self.fail() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4450 |
|
78823
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4451 # ================================================ |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4452 # Check that the type function is called only once |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4453 # ================================================ |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4454 |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4455 class TestTypeFunctionCallOnlyOnce(TestCase): |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4456 |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4457 def test_type_function_call_only_once(self): |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4458 def spam(string_to_convert): |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4459 self.assertEqual(string_to_convert, 'spam!') |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4460 return 'foo_converted' |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4461 |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4462 parser = argparse.ArgumentParser() |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4463 parser.add_argument('--foo', type=spam, default='bar') |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4464 args = parser.parse_args('--foo spam!'.split()) |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4465 self.assertEqual(NS(foo='foo_converted'), args) |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4466 |
|
79014
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4467 # ================================================================== |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4468 # Check semantics regarding the default argument and type conversion |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4469 # ================================================================== |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4470 |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4471 class TestTypeFunctionCalledOnDefault(TestCase): |
|
78823
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4472 |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4473 def test_type_function_call_with_non_string_default(self): |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4474 def spam(int_to_convert): |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4475 self.assertEqual(int_to_convert, 0) |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4476 return 'foo_converted' |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4477 |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4478 parser = argparse.ArgumentParser() |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4479 parser.add_argument('--foo', type=spam, default=0) |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4480 args = parser.parse_args([]) |
|
79014
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4481 # foo should *not* be converted because its default is not a string. |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4482 self.assertEqual(NS(foo=0), args) |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4483 |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4484 def test_type_function_call_with_string_default(self): |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4485 def spam(int_to_convert): |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4486 return 'foo_converted' |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4487 |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4488 parser = argparse.ArgumentParser() |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4489 parser.add_argument('--foo', type=spam, default='0') |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4490 args = parser.parse_args([]) |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4491 # foo is converted because its default is a string. |
|
78823
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4492 self.assertEqual(NS(foo='foo_converted'), args) |
|
62b5667ef2f4
#12776,#11839: call argparse type function only once.
R David Murray <rdmurray@bitdance.com>
parents:
78233
diff
changeset
|
4493 |
|
79014
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4494 def test_no_double_type_conversion_of_default(self): |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4495 def extend(str_to_convert): |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4496 return str_to_convert + '*' |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4497 |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4498 parser = argparse.ArgumentParser() |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4499 parser.add_argument('--test', type=extend, default='*') |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4500 args = parser.parse_args([]) |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4501 # The test argument will be two stars, one coming from the default |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4502 # value and one coming from the type conversion being called exactly |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4503 # once. |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4504 self.assertEqual(NS(test='**'), args) |
|
8f847f66a49f
A follow up for issue #15906: change the test for calling the type conversion
Barry Warsaw <barry@python.org>
parents:
78999
diff
changeset
|
4505 |
|
78999
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4506 def test_issue_15906(self): |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4507 # Issue #15906: When action='append', type=str, default=[] are |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4508 # providing, the dest value was the string representation "[]" when it |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4509 # should have been an empty list. |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4510 parser = argparse.ArgumentParser() |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4511 parser.add_argument('--test', dest='test', type=str, |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4512 default=[], action='append') |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4513 args = parser.parse_args([]) |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4514 self.assertEqual(args.test, []) |
|
739606bdcba4
- Issue #15906: Fix a regression in argparse caused by the preceding change,
Barry Warsaw <barry@python.org>
parents:
78881
diff
changeset
|
4515 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4516 # ====================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4517 # parse_known_args tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4518 # ====================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4519 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4520 class TestParseKnownArgs(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4521 |
|
78881
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4522 def test_arguments_tuple(self): |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4523 parser = argparse.ArgumentParser() |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4524 parser.parse_args(()) |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4525 |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4526 def test_arguments_list(self): |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4527 parser = argparse.ArgumentParser() |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4528 parser.parse_args([]) |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4529 |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4530 def test_arguments_tuple_positional(self): |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4531 parser = argparse.ArgumentParser() |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4532 parser.add_argument('x') |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4533 parser.parse_args(('x',)) |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4534 |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4535 def test_arguments_list_positional(self): |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4536 parser = argparse.ArgumentParser() |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4537 parser.add_argument('x') |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4538 parser.parse_args(['x']) |
|
a2147bbf7868
#15847: allow args to be a tuple in parse_args
R David Murray <rdmurray@bitdance.com>
parents:
78823
diff
changeset
|
4539 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4540 def test_optionals(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4541 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4542 parser.add_argument('--foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4543 args, extras = parser.parse_known_args('--foo F --bar --baz'.split()) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4544 self.assertEqual(NS(foo='F'), args) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4545 self.assertEqual(['--bar', '--baz'], extras) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4546 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4547 def test_mixed(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4548 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4549 parser.add_argument('-v', nargs='?', const=1, type=int) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4550 parser.add_argument('--spam', action='store_false') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4551 parser.add_argument('badger') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4552 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4553 argv = ["B", "C", "--foo", "-v", "3", "4"] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4554 args, extras = parser.parse_known_args(argv) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4555 self.assertEqual(NS(v=3, spam=True, badger="B"), args) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4556 self.assertEqual(["C", "--foo", "4"], extras) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4557 |
|
68969
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4558 # ========================== |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4559 # add_argument metavar tests |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4560 # ========================== |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4561 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4562 class TestAddArgumentMetavar(TestCase): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4563 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4564 EXPECTED_MESSAGE = "length of metavar tuple does not match nargs" |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4565 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4566 def do_test_no_exception(self, nargs, metavar): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4567 parser = argparse.ArgumentParser() |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4568 parser.add_argument("--foo", nargs=nargs, metavar=metavar) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4569 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4570 def do_test_exception(self, nargs, metavar): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4571 parser = argparse.ArgumentParser() |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4572 with self.assertRaises(ValueError) as cm: |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4573 parser.add_argument("--foo", nargs=nargs, metavar=metavar) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4574 self.assertEqual(cm.exception.args[0], self.EXPECTED_MESSAGE) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4575 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4576 # Unit tests for different values of metavar when nargs=None |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4577 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4578 def test_nargs_None_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4579 self.do_test_no_exception(nargs=None, metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4580 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4581 def test_nargs_None_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4582 self.do_test_exception(nargs=None, metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4583 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4584 def test_nargs_None_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4585 self.do_test_no_exception(nargs=None, metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4586 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4587 def test_nargs_None_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4588 self.do_test_exception(nargs=None, metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4589 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4590 def test_nargs_None_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4591 self.do_test_exception(nargs=None, metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4592 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4593 # Unit tests for different values of metavar when nargs=? |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4594 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4595 def test_nargs_optional_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4596 self.do_test_no_exception(nargs="?", metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4597 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4598 def test_nargs_optional_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4599 self.do_test_exception(nargs="?", metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4600 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4601 def test_nargs_optional_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4602 self.do_test_no_exception(nargs="?", metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4603 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4604 def test_nargs_optional_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4605 self.do_test_exception(nargs="?", metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4606 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4607 def test_nargs_optional_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4608 self.do_test_exception(nargs="?", metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4609 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4610 # Unit tests for different values of metavar when nargs=* |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4611 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4612 def test_nargs_zeroormore_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4613 self.do_test_no_exception(nargs="*", metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4614 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4615 def test_nargs_zeroormore_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4616 self.do_test_exception(nargs="*", metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4617 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4618 def test_nargs_zeroormore_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4619 self.do_test_no_exception(nargs="*", metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4620 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4621 def test_nargs_zeroormore_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4622 self.do_test_no_exception(nargs="*", metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4623 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4624 def test_nargs_zeroormore_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4625 self.do_test_exception(nargs="*", metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4626 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4627 # Unit tests for different values of metavar when nargs=+ |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4628 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4629 def test_nargs_oneormore_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4630 self.do_test_no_exception(nargs="+", metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4631 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4632 def test_nargs_oneormore_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4633 self.do_test_exception(nargs="+", metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4634 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4635 def test_nargs_oneormore_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4636 self.do_test_no_exception(nargs="+", metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4637 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4638 def test_nargs_oneormore_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4639 self.do_test_no_exception(nargs="+", metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4640 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4641 def test_nargs_oneormore_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4642 self.do_test_exception(nargs="+", metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4643 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4644 # Unit tests for different values of metavar when nargs=... |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4645 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4646 def test_nargs_remainder_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4647 self.do_test_no_exception(nargs="...", metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4648 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4649 def test_nargs_remainder_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4650 self.do_test_no_exception(nargs="...", metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4651 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4652 def test_nargs_remainder_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4653 self.do_test_no_exception(nargs="...", metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4654 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4655 def test_nargs_remainder_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4656 self.do_test_no_exception(nargs="...", metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4657 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4658 def test_nargs_remainder_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4659 self.do_test_no_exception(nargs="...", metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4660 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4661 # Unit tests for different values of metavar when nargs=A... |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4662 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4663 def test_nargs_parser_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4664 self.do_test_no_exception(nargs="A...", metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4665 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4666 def test_nargs_parser_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4667 self.do_test_exception(nargs="A...", metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4668 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4669 def test_nargs_parser_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4670 self.do_test_no_exception(nargs="A...", metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4671 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4672 def test_nargs_parser_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4673 self.do_test_exception(nargs="A...", metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4674 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4675 def test_nargs_parser_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4676 self.do_test_exception(nargs="A...", metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4677 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4678 # Unit tests for different values of metavar when nargs=1 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4679 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4680 def test_nargs_1_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4681 self.do_test_no_exception(nargs=1, metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4682 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4683 def test_nargs_1_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4684 self.do_test_exception(nargs=1, metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4685 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4686 def test_nargs_1_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4687 self.do_test_no_exception(nargs=1, metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4688 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4689 def test_nargs_1_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4690 self.do_test_exception(nargs=1, metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4691 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4692 def test_nargs_1_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4693 self.do_test_exception(nargs=1, metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4694 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4695 # Unit tests for different values of metavar when nargs=2 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4696 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4697 def test_nargs_2_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4698 self.do_test_no_exception(nargs=2, metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4699 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4700 def test_nargs_2_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4701 self.do_test_exception(nargs=2, metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4702 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4703 def test_nargs_2_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4704 self.do_test_no_exception(nargs=2, metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4705 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4706 def test_nargs_2_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4707 self.do_test_no_exception(nargs=2, metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4708 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4709 def test_nargs_2_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4710 self.do_test_exception(nargs=2, metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4711 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4712 # Unit tests for different values of metavar when nargs=3 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4713 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4714 def test_nargs_3_metavar_string(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4715 self.do_test_no_exception(nargs=3, metavar="1") |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4716 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4717 def test_nargs_3_metavar_length0(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4718 self.do_test_exception(nargs=3, metavar=tuple()) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4719 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4720 def test_nargs_3_metavar_length1(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4721 self.do_test_no_exception(nargs=3, metavar=("1")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4722 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4723 def test_nargs_3_metavar_length2(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4724 self.do_test_exception(nargs=3, metavar=("1", "2")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4725 |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4726 def test_nargs_3_metavar_length3(self): |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4727 self.do_test_no_exception(nargs=3, metavar=("1", "2", "3")) |
|
4bb651eb7539
Issue #9348: Raise an early error if argparse nargs and metavar don't match. (Merge from 3.2.)
Steven Bethard <steven.bethard@gmail.com>
parents:
67921
diff
changeset
|
4728 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4729 # ============================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4730 # from argparse import * tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4731 # ============================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4732 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4733 class TestImportStar(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4734 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4735 def test(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4736 for name in argparse.__all__: |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4737 self.assertTrue(hasattr(argparse, name)) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4738 |
|
65864
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4739 def test_all_exports_everything_but_modules(self): |
|
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4740 items = [ |
|
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4741 name |
|
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4742 for name, value in vars(argparse).items() |
|
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4743 if not name.startswith("_") |
|
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4744 if not inspect.ismodule(value) |
|
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4745 ] |
|
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4746 self.assertEqual(sorted(items), sorted(argparse.__all__)) |
|
493a2d407c94
Merged revisions 86086 via svnmerge from
Steven Bethard <steven.bethard@gmail.com>
parents:
65860
diff
changeset
|
4747 |
|
59270
82eda345a5f6
enable running of argparse tests and fix two that failed in the new environment
Benjamin Peterson <benjamin@python.org>
parents:
59268
diff
changeset
|
4748 def test_main(): |
|
60116
3748bca4d869
Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
59989
diff
changeset
|
4749 # silence warnings about version argument - these are expected |
|
3748bca4d869
Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
59989
diff
changeset
|
4750 with test_support.check_warnings( |
|
3748bca4d869
Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
59989
diff
changeset
|
4751 ('The "version" argument to ArgumentParser is deprecated.', |
|
3748bca4d869
Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
59989
diff
changeset
|
4752 DeprecationWarning), |
|
3748bca4d869
Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
59989
diff
changeset
|
4753 ('The (format|print)_version method is deprecated', |
|
3748bca4d869
Replace catch_warnings with check_warnings when it makes sense. Use assertRaises context manager to simplify some tests.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
59989
diff
changeset
|
4754 DeprecationWarning)): |
|
59271
4b7b6953cd06
prevent warning filter adjustment from altering other tests
Benjamin Peterson <benjamin@python.org>
parents:
59270
diff
changeset
|
4755 test_support.run_unittest(__name__) |
| 59284 | 4756 # Remove global references to avoid looking like we have refleaks. |
| 4757 RFile.seen = {} | |
| 4758 WFile.seen = set() | |
| 4759 | |
|
59270
82eda345a5f6
enable running of argparse tests and fix two that failed in the new environment
Benjamin Peterson <benjamin@python.org>
parents:
59268
diff
changeset
|
4760 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4761 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4762 if __name__ == '__main__': |
|
59272
137a21fcd385
use test_main() in __main__ section
Benjamin Peterson <benjamin@python.org>
parents:
59271
diff
changeset
|
4763 test_main() |
