Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_argparse.py @ 65035:87f4b32905df 2.7
Cosmetic fix to use print function.
| author | Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp> |
|---|---|
| date | Fri, 01 Oct 2010 10:48:47 +0000 |
| parents | 23c089dc5cff |
| children | 4269267e6e57 |
| 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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4 import os |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
5 import shutil |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
6 import sys |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
7 import textwrap |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
8 import tempfile |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
9 import unittest |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
10 import argparse |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
11 |
|
59281
eba942e77895
remove cross-version compatibility code
Benjamin Peterson <benjamin@python.org>
parents:
59280
diff
changeset
|
12 from StringIO import StringIO |
|
eba942e77895
remove cross-version compatibility code
Benjamin Peterson <benjamin@python.org>
parents:
59280
diff
changeset
|
13 |
|
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
|
14 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
|
15 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
|
16 |
|
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
|
17 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
|
18 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
19 class TestCase(unittest.TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
20 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
21 def assertEqual(self, obj1, obj2): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
22 if obj1 != obj2: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
23 print('') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
24 print(repr(obj1)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
25 print(repr(obj2)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
26 print(obj1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
27 print(obj2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
28 super(TestCase, self).assertEqual(obj1, obj2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
29 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
30 |
|
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
|
31 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
32 class TempDirMixin(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
33 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
34 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
35 self.temp_dir = tempfile.mkdtemp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
36 self.old_dir = os.getcwd() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
37 os.chdir(self.temp_dir) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
38 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
39 def tearDown(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
40 os.chdir(self.old_dir) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
41 while True: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
42 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
43 shutil.rmtree(self.temp_dir) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
44 except WindowsError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
45 continue |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
46 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
47 break |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
48 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
49 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
50 class Sig(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
51 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
52 def __init__(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
53 self.args = args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
54 self.kwargs = kwargs |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
55 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
56 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
57 class NS(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
58 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
59 def __init__(self, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
60 self.__dict__.update(kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
61 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
62 def __repr__(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
63 sorted_items = sorted(self.__dict__.items()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
64 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
|
65 return '%s(%s)' % (type(self).__name__, kwarg_str) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
66 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
67 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
68 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
69 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
70 return vars(self) == vars(other) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
71 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
72 def __ne__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
73 return not (self == other) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
74 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
75 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
76 class ArgumentParserError(Exception): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
77 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
78 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
|
79 Exception.__init__(self, message, stdout, stderr) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
80 self.message = message |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
81 self.stdout = stdout |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
82 self.stderr = stderr |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
83 self.error_code = error_code |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
84 |
|
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 stderr_to_parser_error(parse_args, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
87 # 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
|
88 # redirected, simply call the function and let the enclosing function |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
89 # 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
|
90 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
|
91 return parse_args(*args, **kwargs) |
|
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 # if this is not being called recursively, redirect stderr and |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
94 # use it as the ArgumentParserError message |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
95 old_stdout = sys.stdout |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
96 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
|
97 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
|
98 sys.stderr = StdIOBuffer() |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
99 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
100 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
101 result = parse_args(*args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
102 for key in list(vars(result)): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
103 if getattr(result, key) is sys.stdout: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
104 setattr(result, key, old_stdout) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
105 if getattr(result, key) is sys.stderr: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
106 setattr(result, key, old_stderr) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
107 return result |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
108 except SystemExit: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
109 code = sys.exc_info()[1].code |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
110 stdout = sys.stdout.getvalue() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
111 stderr = sys.stderr.getvalue() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
112 raise ArgumentParserError("SystemExit", stdout, stderr, code) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
113 finally: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
114 sys.stdout = old_stdout |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
115 sys.stderr = old_stderr |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
116 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
117 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
118 class ErrorRaisingArgumentParser(argparse.ArgumentParser): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
119 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
120 def parse_args(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
121 parse_args = super(ErrorRaisingArgumentParser, self).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
122 return stderr_to_parser_error(parse_args, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
123 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
124 def exit(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
125 exit = super(ErrorRaisingArgumentParser, self).exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
126 return stderr_to_parser_error(exit, *args, **kwargs) |
|
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 error(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
129 error = super(ErrorRaisingArgumentParser, self).error |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
130 return stderr_to_parser_error(error, *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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
133 class ParserTesterMetaclass(type): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
134 """Adds parser tests using the class attributes. |
|
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 Classes of this type should specify the following attributes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
137 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
138 argument_signatures -- a list of Sig objects which specify |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
139 the signatures of Argument objects to be created |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
140 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
|
141 to fail |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
142 successes -- a list of (initial_args, options, remaining_args) tuples |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
143 where initial_args specifies the string args to be parsed, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
144 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
|
145 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
|
146 remaining unparsed arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
147 """ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
148 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
149 def __init__(cls, name, bases, bodydict): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
150 if name == 'ParserTestCase': |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
151 return |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
152 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
153 # default parser signature is empty |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
154 if not hasattr(cls, 'parser_signature'): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
155 cls.parser_signature = Sig() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
156 if not hasattr(cls, 'parser_class'): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
157 cls.parser_class = ErrorRaisingArgumentParser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
158 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
159 # --------------------------------------- |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
160 # functions for adding optional arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
161 # --------------------------------------- |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
162 def no_groups(parser, argument_signatures): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
163 """Add all arguments directly to the parser""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
164 for sig in argument_signatures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
165 parser.add_argument(*sig.args, **sig.kwargs) |
|
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 def one_group(parser, argument_signatures): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
168 """Add all arguments under a single group in the parser""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
169 group = parser.add_argument_group('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
170 for sig in argument_signatures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
171 group.add_argument(*sig.args, **sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
172 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
173 def many_groups(parser, argument_signatures): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
174 """Add each argument in its own group to the parser""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
175 for i, sig in enumerate(argument_signatures): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
176 group = parser.add_argument_group('foo:%i' % i) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
177 group.add_argument(*sig.args, **sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
178 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
179 # -------------------------- |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
180 # functions for parsing args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
181 # -------------------------- |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
182 def listargs(parser, args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
183 """Parse the args by passing in a list""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
184 return parser.parse_args(args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
185 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
186 def sysargs(parser, args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
187 """Parse the args by defaulting to sys.argv""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
188 old_sys_argv = sys.argv |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
189 sys.argv = [old_sys_argv[0]] + args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
190 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
191 return parser.parse_args() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
192 finally: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
193 sys.argv = old_sys_argv |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
194 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
195 # class that holds the combination of one optional argument |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
196 # addition method and one arg parsing method |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
197 class AddTests(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
198 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
199 def __init__(self, tester_cls, add_arguments, parse_args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
200 self._add_arguments = add_arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
201 self._parse_args = parse_args |
|
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 add_arguments_name = self._add_arguments.__name__ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
204 parse_args_name = self._parse_args.__name__ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
205 for test_func in [self.test_failures, self.test_successes]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
206 func_name = test_func.__name__ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
207 names = func_name, add_arguments_name, parse_args_name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
208 test_name = '_'.join(names) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
209 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
210 def wrapper(self, test_func=test_func): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
211 test_func(self) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
212 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
213 wrapper.__name__ = test_name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
214 except TypeError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
215 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
216 setattr(tester_cls, test_name, wrapper) |
|
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 _get_parser(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
219 args = tester.parser_signature.args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
220 kwargs = tester.parser_signature.kwargs |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
221 parser = tester.parser_class(*args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
222 self._add_arguments(parser, tester.argument_signatures) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
223 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
224 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
225 def test_failures(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
226 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
227 for args_str in tester.failures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
228 args = args_str.split() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
229 raises = tester.assertRaises |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
230 raises(ArgumentParserError, parser.parse_args, args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
231 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
232 def test_successes(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
233 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
234 for args, expected_ns in tester.successes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
235 if isinstance(args, str): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
236 args = args.split() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
237 result_ns = self._parse_args(parser, args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
238 tester.assertEqual(expected_ns, result_ns) |
|
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 # add tests for each combination of an optionals adding method |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
241 # and an arg parsing method |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
242 for add_arguments in [no_groups, one_group, many_groups]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
243 for parse_args in [listargs, sysargs]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
244 AddTests(cls, add_arguments, parse_args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
245 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
246 bases = TestCase, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
247 ParserTestCase = ParserTesterMetaclass('ParserTestCase', bases, {}) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
248 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
249 # =============== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
250 # Optionals tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
251 # =============== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
252 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
253 class TestOptionalsSingleDash(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
254 """Test an Optional with a single-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
255 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
256 argument_signatures = [Sig('-x')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
257 failures = ['-x', 'a', '--foo', '-x --foo', '-x -y'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
258 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
259 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
260 ('-x a', NS(x='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
261 ('-xa', NS(x='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
262 ('-x -1', NS(x='-1')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
263 ('-x-1', NS(x='-1')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
264 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
265 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
266 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
267 class TestOptionalsSingleDashCombined(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
268 """Test an Optional with a single-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
269 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
270 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
271 Sig('-x', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
272 Sig('-yyy', action='store_const', const=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
273 Sig('-z'), |
|
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 failures = ['a', '--foo', '-xa', '-x --foo', '-x -z', '-z -x', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
276 '-yx', '-yz a', '-yyyx', '-yyyza', '-xyza'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
277 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
278 ('', NS(x=False, yyy=None, z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
279 ('-x', NS(x=True, yyy=None, z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
280 ('-za', NS(x=False, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
281 ('-z a', NS(x=False, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
282 ('-xza', NS(x=True, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
283 ('-xz a', NS(x=True, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
284 ('-x -za', NS(x=True, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
285 ('-x -z a', NS(x=True, yyy=None, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
286 ('-y', NS(x=False, yyy=42, z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
287 ('-yyy', NS(x=False, yyy=42, z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
288 ('-x -yyy -za', NS(x=True, yyy=42, z='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
289 ('-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
|
290 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
291 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
292 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
293 class TestOptionalsSingleDashLong(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
294 """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
|
295 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
296 argument_signatures = [Sig('-foo')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
297 failures = ['-foo', 'a', '--foo', '-foo --foo', '-foo -y', '-fooa'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
298 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
299 ('', NS(foo=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
300 ('-foo a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
301 ('-foo -1', NS(foo='-1')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
302 ('-fo a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
303 ('-f a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
304 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
305 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
306 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
307 class TestOptionalsSingleDashSubsetAmbiguous(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
308 """Test Optionals where option strings are subsets of each other""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
309 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
310 argument_signatures = [Sig('-f'), Sig('-foobar'), Sig('-foorab')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
311 failures = ['-f', '-foo', '-fo', '-foo b', '-foob', '-fooba', '-foora'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
312 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
313 ('', NS(f=None, foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
314 ('-f a', NS(f='a', foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
315 ('-fa', NS(f='a', foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
316 ('-foa', NS(f='oa', foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
317 ('-fooa', NS(f='ooa', foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
318 ('-foobar a', NS(f=None, foobar='a', foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
319 ('-foorab a', NS(f=None, foobar=None, foorab='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
320 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
321 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
322 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
323 class TestOptionalsSingleDashAmbiguous(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
324 """Test Optionals that partially match but are not subsets""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
325 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
326 argument_signatures = [Sig('-foobar'), Sig('-foorab')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
327 failures = ['-f', '-f a', '-fa', '-foa', '-foo', '-fo', '-foo b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
328 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
329 ('', NS(foobar=None, foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
330 ('-foob a', NS(foobar='a', foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
331 ('-foor a', NS(foobar=None, foorab='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
332 ('-fooba a', NS(foobar='a', foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
333 ('-foora a', NS(foobar=None, foorab='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
334 ('-foobar a', NS(foobar='a', foorab=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
335 ('-foorab a', NS(foobar=None, foorab='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
336 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
337 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
338 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
339 class TestOptionalsNumeric(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
340 """Test an Optional with a short opt string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
341 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
342 argument_signatures = [Sig('-1', dest='one')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
343 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
|
344 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
345 ('', NS(one=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
346 ('-1 a', NS(one='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
347 ('-1a', NS(one='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
348 ('-1-2', NS(one='-2')), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
351 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
352 class TestOptionalsDoubleDash(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
353 """Test an Optional with a double-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
354 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
355 argument_signatures = [Sig('--foo')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
356 failures = ['--foo', '-f', '-f a', 'a', '--foo -x', '--foo --bar'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
357 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
358 ('', NS(foo=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
359 ('--foo a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
360 ('--foo=a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
361 ('--foo -2.5', NS(foo='-2.5')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
362 ('--foo=-2.5', NS(foo='-2.5')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
363 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
364 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
365 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
366 class TestOptionalsDoubleDashPartialMatch(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
367 """Tests partial matching with a double-dash option string""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
368 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
369 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
370 Sig('--badger', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
371 Sig('--bat'), |
|
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 failures = ['--bar', '--b', '--ba', '--b=2', '--ba=4', '--badge 5'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
374 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
375 ('', NS(badger=False, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
376 ('--bat X', NS(badger=False, bat='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
377 ('--bad', NS(badger=True, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
378 ('--badg', NS(badger=True, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
379 ('--badge', NS(badger=True, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
380 ('--badger', NS(badger=True, bat=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
381 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
382 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
383 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
384 class TestOptionalsDoubleDashPrefixMatch(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
385 """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
|
386 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
387 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
388 Sig('--badger', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
389 Sig('--ba'), |
|
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 failures = ['--bar', '--b', '--ba', '--b=2', '--badge 5'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
392 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
393 ('', NS(badger=False, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
394 ('--ba X', NS(badger=False, ba='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
395 ('--ba=X', NS(badger=False, ba='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
396 ('--bad', NS(badger=True, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
397 ('--badg', NS(badger=True, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
398 ('--badge', NS(badger=True, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
399 ('--badger', NS(badger=True, ba=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
400 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
401 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
402 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
403 class TestOptionalsSingleDoubleDash(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
404 """Test an Optional with single- and double-dash option strings""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
405 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
406 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
407 Sig('-f', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
408 Sig('--bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
409 Sig('-baz', action='store_const', const=42), |
|
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 failures = ['--bar', '-fbar', '-fbaz', '-bazf', '-b B', 'B'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
412 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
413 ('', NS(f=False, bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
414 ('-f', NS(f=True, bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
415 ('--ba B', NS(f=False, bar='B', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
416 ('-f --bar B', NS(f=True, bar='B', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
417 ('-f -b', NS(f=True, bar=None, baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
418 ('-ba -f', NS(f=True, bar=None, baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
419 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
420 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
421 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
422 class TestOptionalsAlternatePrefixChars(ParserTestCase): |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
423 """Test an Optional with option strings with custom prefixes""" |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
424 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
425 parser_signature = Sig(prefix_chars='+:/', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
426 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
427 Sig('+f', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
428 Sig('::bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
429 Sig('/baz', action='store_const', const=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
430 ] |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
431 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
|
432 successes = [ |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
433 ('', NS(f=False, bar=None, baz=None)), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
434 ('+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
|
435 ('::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
|
436 ('+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
|
437 ('+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
|
438 ('/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
|
439 ] |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
440 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
441 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
442 class TestOptionalsAlternatePrefixCharsAddedHelp(ParserTestCase): |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
443 """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
|
444 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
|
445 http://bugs.python.org/issue9444""" |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
446 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
447 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
|
448 argument_signatures = [ |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
449 Sig('+f', action='store_true'), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
450 Sig('::bar'), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
451 Sig('/baz', action='store_const', const=42), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
452 ] |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
453 failures = ['--bar', '-fbar', '-b B', 'B', '-f', '--bar B', '-baz'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
454 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
455 ('', NS(f=False, bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
456 ('+f', NS(f=True, bar=None, baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
457 ('::ba B', NS(f=False, bar='B', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
458 ('+f ::bar B', NS(f=True, bar='B', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
459 ('+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
|
460 ('/ba +f', NS(f=True, bar=None, baz=42)) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
461 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
462 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
463 class TestOptionalsShortLong(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
464 """Test a combination of single- and double-dash option strings""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
465 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
466 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
467 Sig('-v', '--verbose', '-n', '--noisy', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
468 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
469 failures = ['--x --verbose', '-N', 'a', '-v x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
470 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
471 ('', NS(verbose=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
472 ('-v', NS(verbose=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
473 ('--verbose', NS(verbose=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
474 ('-n', NS(verbose=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
475 ('--noisy', NS(verbose=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
476 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
477 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
478 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
479 class TestOptionalsDest(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
480 """Tests various means of setting destination""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
481 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
482 argument_signatures = [Sig('--foo-bar'), Sig('--baz', dest='zabbaz')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
483 failures = ['a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
484 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
485 ('--foo-bar f', NS(foo_bar='f', zabbaz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
486 ('--baz g', NS(foo_bar=None, zabbaz='g')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
487 ('--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
|
488 ('--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
|
489 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
490 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
491 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
492 class TestOptionalsDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
493 """Tests specifying a default for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
494 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
495 argument_signatures = [Sig('-x'), Sig('-y', default=42)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
496 failures = ['a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
497 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
498 ('', NS(x=None, y=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
499 ('-xx', NS(x='x', y=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
500 ('-yy', NS(x=None, y='y')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
501 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
502 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
503 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
504 class TestOptionalsNargsDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
505 """Tests not specifying the number of args for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
506 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
507 argument_signatures = [Sig('-x')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
508 failures = ['a', '-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
509 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
510 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
511 ('-x a', NS(x='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
512 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
515 class TestOptionalsNargs1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
516 """Tests specifying the 1 arg for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
517 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
518 argument_signatures = [Sig('-x', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
519 failures = ['a', '-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
520 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
521 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
522 ('-x a', NS(x=['a'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
525 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
526 class TestOptionalsNargs3(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
527 """Tests specifying the 3 args for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
528 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
529 argument_signatures = [Sig('-x', nargs=3)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
530 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
|
531 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
532 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
533 ('-x a b c', NS(x=['a', 'b', 'c'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
537 class TestOptionalsNargsOptional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
538 """Tests specifying an Optional arg for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
539 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
540 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
541 Sig('-w', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
542 Sig('-x', nargs='?', const=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
543 Sig('-y', nargs='?', default='spam'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
544 Sig('-z', nargs='?', type=int, const='42', default='84'), |
|
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 failures = ['2'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
547 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
548 ('', NS(w=None, x=None, y='spam', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
549 ('-w', NS(w=None, x=None, y='spam', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
550 ('-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
|
551 ('-x', NS(w=None, x=42, y='spam', z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
552 ('-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
|
553 ('-y', NS(w=None, x=None, y=None, z=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
554 ('-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
|
555 ('-z', NS(w=None, x=None, y='spam', z=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
556 ('-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
|
557 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
558 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
559 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
560 class TestOptionalsNargsZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
561 """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
|
562 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
563 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
564 Sig('-x', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
565 Sig('-y', nargs='*', default='spam'), |
|
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 failures = ['a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
568 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
569 ('', NS(x=None, y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
570 ('-x', NS(x=[], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
571 ('-x a', NS(x=['a'], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
572 ('-x a b', NS(x=['a', 'b'], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
573 ('-y', NS(x=None, y=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
574 ('-y a', NS(x=None, y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
575 ('-y a b', NS(x=None, y=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
576 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
579 class TestOptionalsNargsOneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
580 """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
|
581 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
582 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
583 Sig('-x', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
584 Sig('-y', nargs='+', default='spam'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
585 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
586 failures = ['a', '-x', '-y', 'a -x', 'a -y b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
587 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
588 ('', NS(x=None, y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
589 ('-x a', NS(x=['a'], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
590 ('-x a b', NS(x=['a', 'b'], y='spam')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
591 ('-y a', NS(x=None, y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
592 ('-y a b', NS(x=None, y=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
593 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
596 class TestOptionalsChoices(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
597 """Tests specifying the choices for an Optional""" |
|
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 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
600 Sig('-f', choices='abc'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
601 Sig('-g', type=int, choices=range(5))] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
602 failures = ['a', '-f d', '-fad', '-ga', '-g 6'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
603 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
604 ('', NS(f=None, g=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
605 ('-f a', NS(f='a', g=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
606 ('-f c', NS(f='c', g=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
607 ('-g 0', NS(f=None, g=0)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
608 ('-g 03', NS(f=None, g=3)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
609 ('-fb -g4', NS(f='b', g=4)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
612 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
613 class TestOptionalsRequired(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
614 """Tests the an optional action that is required""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
615 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
616 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
617 Sig('-x', type=int, required=True), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
618 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
619 failures = ['a', ''] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
620 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
621 ('-x 1', NS(x=1)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
622 ('-x42', NS(x=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
623 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
624 |
|
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 class TestOptionalsActionStore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
627 """Tests the store action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
628 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
629 argument_signatures = [Sig('-x', action='store')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
630 failures = ['a', 'a -x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
631 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
632 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
633 ('-xfoo', NS(x='foo')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
634 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
635 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
636 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
637 class TestOptionalsActionStoreConst(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
638 """Tests the store_const action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
639 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
640 argument_signatures = [Sig('-y', action='store_const', const=object)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
641 failures = ['a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
642 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
643 ('', NS(y=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
644 ('-y', NS(y=object)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
645 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
646 |
|
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 class TestOptionalsActionStoreFalse(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
649 """Tests the store_false action for an Optional""" |
|
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 argument_signatures = [Sig('-z', action='store_false')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
652 failures = ['a', '-za', '-z a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
653 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
654 ('', NS(z=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
655 ('-z', NS(z=False)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
659 class TestOptionalsActionStoreTrue(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
660 """Tests the store_true action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
661 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
662 argument_signatures = [Sig('--apple', action='store_true')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
663 failures = ['a', '--apple=b', '--apple b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
664 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
665 ('', NS(apple=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
666 ('--apple', NS(apple=True)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
670 class TestOptionalsActionAppend(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
671 """Tests the append action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
672 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
673 argument_signatures = [Sig('--baz', action='append')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
674 failures = ['a', '--baz', 'a --baz', '--baz a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
675 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
676 ('', NS(baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
677 ('--baz a', NS(baz=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
678 ('--baz a --baz b', NS(baz=['a', 'b'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
681 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
682 class TestOptionalsActionAppendWithDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
683 """Tests the append action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
684 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
685 argument_signatures = [Sig('--baz', action='append', default=['X'])] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
686 failures = ['a', '--baz', 'a --baz', '--baz a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
687 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
688 ('', NS(baz=['X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
689 ('--baz a', NS(baz=['X', 'a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
690 ('--baz a --baz b', NS(baz=['X', 'a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
691 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
692 |
|
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 class TestOptionalsActionAppendConst(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
695 """Tests the append_const action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
696 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
697 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
698 Sig('-b', action='append_const', const=Exception), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
699 Sig('-c', action='append', dest='b'), |
|
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 failures = ['a', '-c', 'a -c', '-bx', '-b x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
702 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
703 ('', NS(b=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
704 ('-b', NS(b=[Exception])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
705 ('-b -cx -b -cyz', NS(b=[Exception, 'x', Exception, 'yz'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
706 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
707 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
708 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
709 class TestOptionalsActionAppendConstWithDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
710 """Tests the append_const action for an Optional""" |
|
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 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
713 Sig('-b', action='append_const', const=Exception, default=['X']), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
714 Sig('-c', action='append', dest='b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
715 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
716 failures = ['a', '-c', 'a -c', '-bx', '-b x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
717 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
718 ('', NS(b=['X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
719 ('-b', NS(b=['X', Exception])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
720 ('-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
|
721 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
722 |
|
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 class TestOptionalsActionCount(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
725 """Tests the count action for an Optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
726 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
727 argument_signatures = [Sig('-x', action='count')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
728 failures = ['a', '-x a', '-x b', '-x a -x b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
729 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
730 ('', NS(x=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
731 ('-x', NS(x=1)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
734 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
735 # ================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
736 # Positional tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
737 # ================ |
|
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 class TestPositionalsNargsNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
740 """Test a Positional that doesn't specify nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
741 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
742 argument_signatures = [Sig('foo')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
743 failures = ['', '-x', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
744 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
745 ('a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
746 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
749 class TestPositionalsNargs1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
750 """Test a Positional that specifies an nargs of 1""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
751 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
752 argument_signatures = [Sig('foo', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
753 failures = ['', '-x', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
754 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
755 ('a', NS(foo=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
756 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
757 |
|
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 class TestPositionalsNargs2(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
760 """Test a Positional that specifies an nargs of 2""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
761 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
762 argument_signatures = [Sig('foo', nargs=2)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
763 failures = ['', 'a', '-x', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
764 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
765 ('a b', NS(foo=['a', 'b'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
769 class TestPositionalsNargsZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
770 """Test a Positional that specifies unlimited nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
771 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
772 argument_signatures = [Sig('foo', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
773 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
774 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
775 ('', NS(foo=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
776 ('a', NS(foo=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
777 ('a b', NS(foo=['a', 'b'])), |
|
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 TestPositionalsNargsZeroOrMoreDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
782 """Test a Positional that specifies unlimited nargs and a default""" |
|
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='*', default='bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
785 failures = ['-x'] |
|
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 ('', NS(foo='bar')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
788 ('a', NS(foo=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
789 ('a b', NS(foo=['a', 'b'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
792 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
793 class TestPositionalsNargsOneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
794 """Test a Positional that specifies one or more nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
795 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
796 argument_signatures = [Sig('foo', nargs='+')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
797 failures = ['', '-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
798 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
799 ('a', NS(foo=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
800 ('a b', NS(foo=['a', 'b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
801 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
802 |
|
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 class TestPositionalsNargsOptional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
805 """Tests an Optional Positional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
806 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
807 argument_signatures = [Sig('foo', nargs='?')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
808 failures = ['-x', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
809 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
810 ('', NS(foo=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
811 ('a', NS(foo='a')), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
814 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
815 class TestPositionalsNargsOptionalDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
816 """Tests an Optional Positional with a default value""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
817 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
818 argument_signatures = [Sig('foo', nargs='?', default=42)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
819 failures = ['-x', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
820 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
821 ('', NS(foo=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
822 ('a', NS(foo='a')), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
826 class TestPositionalsNargsOptionalConvertedDefault(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
827 """Tests an Optional Positional with a default value |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
828 that needs to be converted to the appropriate type. |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
829 """ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
830 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
831 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
832 Sig('foo', nargs='?', type=int, default='42'), |
|
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 failures = ['-x', 'a b', '1 2'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
835 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
836 ('', NS(foo=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
837 ('1', NS(foo=1)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
840 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
841 class TestPositionalsNargsNoneNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
842 """Test two Positionals that don't specify nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
843 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
844 argument_signatures = [Sig('foo'), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
845 failures = ['', '-x', 'a', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
846 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
847 ('a b', NS(foo='a', bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
848 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
851 class TestPositionalsNargsNone1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
852 """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
|
853 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
854 argument_signatures = [Sig('foo'), Sig('bar', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
855 failures = ['', '--foo', 'a', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
856 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
857 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
858 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
859 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
860 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
861 class TestPositionalsNargs2None(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
862 """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
|
863 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
864 argument_signatures = [Sig('foo', nargs=2), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
865 failures = ['', '--foo', 'a', 'a b', 'a b c d'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
866 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
867 ('a b c', NS(foo=['a', 'b'], bar='c')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
868 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
869 |
|
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 class TestPositionalsNargsNoneZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
872 """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
|
873 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
874 argument_signatures = [Sig('foo'), Sig('bar', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
875 failures = ['', '--foo'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
876 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
877 ('a', NS(foo='a', bar=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
878 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
879 ('a b c', NS(foo='a', bar=['b', 'c'])), |
|
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 TestPositionalsNargsNoneOneOrMore(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 one or more""" |
|
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='+')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
887 failures = ['', '--foo', 'a'] |
|
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 ('a b c', NS(foo='a', bar=['b', 'c'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
894 class TestPositionalsNargsNoneOptional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
895 """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
|
896 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
897 argument_signatures = [Sig('foo'), Sig('bar', nargs='?')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
898 failures = ['', '--foo', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
899 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
900 ('a', NS(foo='a', bar=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
901 ('a b', NS(foo='a', bar='b')), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
904 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
905 class TestPositionalsNargsZeroOrMoreNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
906 """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
|
907 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
908 argument_signatures = [Sig('foo', nargs='*'), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
909 failures = ['', '--foo'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
910 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
911 ('a', NS(foo=[], bar='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
912 ('a b', NS(foo=['a'], bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
913 ('a b c', NS(foo=['a', 'b'], bar='c')), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
916 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
917 class TestPositionalsNargsOneOrMoreNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
918 """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
|
919 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
920 argument_signatures = [Sig('foo', nargs='+'), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
921 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
922 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
923 ('a b', NS(foo=['a'], bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
924 ('a b c', NS(foo=['a', 'b'], bar='c')), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
927 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
928 class TestPositionalsNargsOptionalNone(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
929 """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
|
930 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
931 argument_signatures = [Sig('foo', nargs='?', default=42), Sig('bar')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
932 failures = ['', '--foo', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
933 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
934 ('a', NS(foo=42, bar='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
935 ('a b', NS(foo='a', bar='b')), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
938 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
939 class TestPositionalsNargs2ZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
940 """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
|
941 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
942 argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
943 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
944 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
945 ('a b', NS(foo=['a', 'b'], bar=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
946 ('a b c', NS(foo=['a', 'b'], bar=['c'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
950 class TestPositionalsNargs2OneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
951 """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
|
952 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
953 argument_signatures = [Sig('foo', nargs=2), Sig('bar', nargs='+')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
954 failures = ['', '--foo', 'a', 'a b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
955 successes = [ |
|
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 TestPositionalsNargs2Optional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
961 """Test a Positional with 2 nargs followed by one optional""" |
|
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=2), Sig('bar', nargs='?')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
964 failures = ['', '--foo', 'a', 'a b c d'] |
|
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 b', NS(foo=['a', 'b'], bar=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
967 ('a b c', NS(foo=['a', 'b'], bar='c')), |
|
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 TestPositionalsNargsZeroOrMore1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
972 """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
|
973 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
974 argument_signatures = [Sig('foo', nargs='*'), Sig('bar', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
975 failures = ['', '--foo', ] |
|
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', NS(foo=[], bar=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
978 ('a b', NS(foo=['a'], bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
979 ('a b c', NS(foo=['a', 'b'], bar=['c'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
983 class TestPositionalsNargsOneOrMore1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
984 """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
|
985 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
986 argument_signatures = [Sig('foo', nargs='+'), Sig('bar', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
987 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
988 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
989 ('a b', NS(foo=['a'], bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
990 ('a b c', NS(foo=['a', 'b'], bar=['c'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
993 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
994 class TestPositionalsNargsOptional1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
995 """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
|
996 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
997 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs=1)] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
998 failures = ['', '--foo', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
999 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1000 ('a', NS(foo=None, bar=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1001 ('a b', NS(foo='a', bar=['b'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1004 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1005 class TestPositionalsNargsNoneZeroOrMore1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1006 """Test three Positionals: no nargs, unlimited nargs and 1 nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1007 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1008 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1009 Sig('foo'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1010 Sig('bar', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1011 Sig('baz', nargs=1), |
|
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 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1014 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1015 ('a b', NS(foo='a', bar=[], baz=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1016 ('a b c', NS(foo='a', bar=['b'], baz=['c'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1019 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1020 class TestPositionalsNargsNoneOneOrMore1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1021 """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
|
1022 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1023 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1024 Sig('foo'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1025 Sig('bar', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1026 Sig('baz', nargs=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1027 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1028 failures = ['', '--foo', 'a', 'b'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1029 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1030 ('a b c', NS(foo='a', bar=['b'], baz=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1031 ('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
|
1032 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1033 |
|
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 class TestPositionalsNargsNoneOptional1(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1036 """Test three Positionals: no nargs, optional narg and 1 nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1037 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1038 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1039 Sig('foo'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1040 Sig('bar', nargs='?', default=0.625), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1041 Sig('baz', nargs=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1042 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1043 failures = ['', '--foo', 'a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1044 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1045 ('a b', NS(foo='a', bar=0.625, baz=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1046 ('a b c', NS(foo='a', bar='b', baz=['c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1047 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1048 |
|
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 class TestPositionalsNargsOptionalOptional(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1051 """Test two optional nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1052 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1053 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1054 Sig('foo', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1055 Sig('bar', nargs='?', default=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1056 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1057 failures = ['--foo', 'a b c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1058 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1059 ('', NS(foo=None, bar=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1060 ('a', NS(foo='a', bar=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1061 ('a b', NS(foo='a', bar='b')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1062 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1063 |
|
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 class TestPositionalsNargsOptionalZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1066 """Test an Optional narg followed by unlimited nargs""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1067 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1068 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1069 failures = ['--foo'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1070 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1071 ('', NS(foo=None, bar=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1072 ('a', NS(foo='a', bar=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1073 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1074 ('a b c', NS(foo='a', bar=['b', 'c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1075 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1076 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1077 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1078 class TestPositionalsNargsOptionalOneOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1079 """Test an Optional narg followed by one or more nargs""" |
|
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 argument_signatures = [Sig('foo', nargs='?'), Sig('bar', nargs='+')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1082 failures = ['', '--foo'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1083 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1084 ('a', NS(foo=None, bar=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1085 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1086 ('a b c', NS(foo='a', bar=['b', 'c'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1087 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1090 class TestPositionalsChoicesString(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1091 """Test a set of single-character choices""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1092 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1093 argument_signatures = [Sig('spam', choices=set('abcdefg'))] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1094 failures = ['', '--foo', 'h', '42', 'ef'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1095 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1096 ('a', NS(spam='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1097 ('g', NS(spam='g')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1098 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1101 class TestPositionalsChoicesInt(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1102 """Test a set of integer choices""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1103 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1104 argument_signatures = [Sig('spam', type=int, choices=range(20))] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1105 failures = ['', '--foo', 'h', '42', 'ef'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1106 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1107 ('4', NS(spam=4)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1108 ('15', NS(spam=15)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1111 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1112 class TestPositionalsActionAppend(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1113 """Test the 'append' action""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1114 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1115 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1116 Sig('spam', action='append'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1117 Sig('spam', action='append', nargs=2), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1118 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1119 failures = ['', '--foo', 'a', 'a b', 'a b c d'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1120 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1121 ('a b c', NS(spam=['a', ['b', 'c']])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1122 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1123 |
|
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 # Combined optionals and positionals tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1126 # ======================================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1127 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1128 class TestOptionalsNumericAndPositionals(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1129 """Tests negative number args when numeric options are present""" |
|
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 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1132 Sig('x', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1133 Sig('-4', dest='y', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1134 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1135 failures = ['-2', '-315'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1136 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1137 ('', NS(x=None, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1138 ('a', NS(x='a', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1139 ('-4', NS(x=None, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1140 ('-4 a', NS(x='a', y=True)), |
|
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 TestOptionalsAlmostNumericAndPositionals(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1145 """Tests negative number args when almost numeric options are present""" |
|
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('x', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1149 Sig('-k4', dest='y', action='store_true'), |
|
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 = ['-k3'] |
|
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 ('', NS(x=None, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1154 ('-2', NS(x='-2', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1155 ('a', NS(x='a', y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1156 ('-k4', NS(x=None, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1157 ('-k4 a', NS(x='a', y=True)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1161 class TestEmptyAndSpaceContainingArguments(ParserTestCase): |
|
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('-y', '--yyy', dest='y'), |
|
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 = ['-y'] |
|
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='', y=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1170 (['a badger'], NS(x='a badger', y=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1171 (['-a badger'], NS(x='-a badger', y=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1172 (['-y', ''], NS(x=None, y='')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1173 (['-y', 'a badger'], NS(x=None, y='a badger')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1174 (['-y', '-a badger'], NS(x=None, y='-a badger')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1175 (['--yyy=a badger'], NS(x=None, y='a badger')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1176 (['--yyy=-a badger'], NS(x=None, y='-a badger')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1177 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1180 class TestPrefixCharacterOnlyArguments(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1181 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1182 parser_signature = Sig(prefix_chars='-+') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1183 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1184 Sig('-', dest='x', nargs='?', const='badger'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1185 Sig('+', dest='y', type=int, default=42), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1186 Sig('-+-', dest='z', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1187 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1188 failures = ['-y', '+ -'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1189 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1190 ('', NS(x=None, y=42, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1191 ('-', NS(x='badger', y=42, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1192 ('- X', NS(x='X', y=42, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1193 ('+ -3', NS(x=None, y=-3, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1194 ('-+-', NS(x=None, y=42, z=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1195 ('- ===', NS(x='===', y=42, z=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1196 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1197 |
|
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 class TestNargsZeroOrMore(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1200 """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
|
1201 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1202 argument_signatures = [Sig('-x', nargs='*'), Sig('y', nargs='*')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1203 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1204 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1205 ('', NS(x=None, y=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1206 ('-x', NS(x=[], y=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1207 ('-x a', NS(x=['a'], y=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1208 ('-x a -- b', NS(x=['a'], y=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1209 ('a', NS(x=None, y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1210 ('a -x', NS(x=[], y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1211 ('a -x b', NS(x=['b'], y=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1212 ] |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1215 class TestNargsRemainder(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1216 """Tests specifying a positional with nargs=REMAINDER""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1217 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1218 argument_signatures = [Sig('x'), Sig('y', nargs='...'), Sig('-z')] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1219 failures = ['', '-z', '-z Z'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1220 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1221 ('X', NS(x='X', y=[], z=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1222 ('-z Z X', NS(x='X', y=[], z='Z')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1223 ('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
|
1224 ('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
|
1225 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1226 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1227 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1228 class TestOptionLike(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1229 """Tests options that may or may not be arguments""" |
|
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 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1232 Sig('-x', type=float), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1233 Sig('-3', type=float, dest='y'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1234 Sig('z', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1235 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1236 failures = ['-x', '-y2.5', '-xa', '-x -a', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1237 '-x -3', '-x -3.5', '-3 -3.5', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1238 '-x -2.5', '-x -2.5 a', '-3 -.5', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1239 'a x -1', '-x -1 a', '-3 -1 a'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1240 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1241 ('', NS(x=None, y=None, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1242 ('-x 2.5', NS(x=2.5, y=None, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1243 ('-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
|
1244 ('-3.5', NS(x=None, y=0.5, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1245 ('-3-.5', NS(x=None, y=-0.5, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1246 ('-3 .5', NS(x=None, y=0.5, z=[])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1247 ('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
|
1248 ('a', NS(x=None, y=None, z=['a'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1249 ('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
|
1250 ('-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
|
1251 ('-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
|
1252 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1253 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1254 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1255 class TestDefaultSuppress(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1256 """Test actions with suppressed defaults""" |
|
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 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1259 Sig('foo', nargs='?', default=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1260 Sig('bar', nargs='*', default=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1261 Sig('--baz', action='store_true', default=argparse.SUPPRESS), |
|
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 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1264 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1265 ('', NS()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1266 ('a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1267 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1268 ('--baz', NS(baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1269 ('a --baz', NS(foo='a', baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1270 ('--baz a b', NS(foo='a', bar=['b'], baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1271 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1272 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1273 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1274 class TestParserDefaultSuppress(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1275 """Test actions with a parser-level default of SUPPRESS""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1276 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1277 parser_signature = Sig(argument_default=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1278 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1279 Sig('foo', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1280 Sig('bar', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1281 Sig('--baz', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1282 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1283 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1284 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1285 ('', NS()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1286 ('a', NS(foo='a')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1287 ('a b', NS(foo='a', bar=['b'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1288 ('--baz', NS(baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1289 ('a --baz', NS(foo='a', baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1290 ('--baz a b', NS(foo='a', bar=['b'], baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1291 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1292 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1293 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1294 class TestParserDefault42(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1295 """Test actions with a parser-level default of 42""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1296 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1297 parser_signature = Sig(argument_default=42, version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1298 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1299 Sig('foo', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1300 Sig('bar', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1301 Sig('--baz', action='store_true'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1302 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1303 failures = ['-x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1304 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1305 ('', NS(foo=42, bar=42, baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1306 ('a', NS(foo='a', bar=42, baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1307 ('a b', NS(foo='a', bar=['b'], baz=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1308 ('--baz', NS(foo=42, bar=42, baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1309 ('a --baz', NS(foo='a', bar=42, baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1310 ('--baz a b', NS(foo='a', bar=['b'], baz=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1311 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1312 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1313 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1314 class TestArgumentsFromFile(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1315 """Test reading arguments from a file""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1316 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1317 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1318 super(TestArgumentsFromFile, self).setUp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1319 file_texts = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1320 ('hello', 'hello world!\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1321 ('recursive', '-a\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1322 'A\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1323 '@hello'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1324 ('invalid', '@no-such-path\n'), |
|
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 for path, text in file_texts: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1327 file = open(path, 'w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1328 file.write(text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1329 file.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1330 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1331 parser_signature = Sig(fromfile_prefix_chars='@') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1332 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1333 Sig('-a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1334 Sig('x'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1335 Sig('y', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1336 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1337 failures = ['', '-b', 'X', '@invalid', '@missing'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1338 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1339 ('X Y', NS(a=None, x='X', y=['Y'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1340 ('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
|
1341 ('@hello X', NS(a=None, x='hello world!', y=['X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1342 ('X @hello', NS(a=None, x='X', y=['hello world!'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1343 ('-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
|
1344 ('X @recursive Z -a B', NS(a='B', x='X', y=['hello world!', 'Z'])), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1347 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1348 class TestArgumentsFromFileConverter(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1349 """Test reading arguments from a file""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1350 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1351 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1352 super(TestArgumentsFromFileConverter, self).setUp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1353 file_texts = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1354 ('hello', 'hello world!\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1355 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1356 for path, text in file_texts: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1357 file = open(path, 'w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1358 file.write(text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1359 file.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1360 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1361 class FromFileConverterArgumentParser(ErrorRaisingArgumentParser): |
|
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 def convert_arg_line_to_args(self, arg_line): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1364 for arg in arg_line.split(): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1365 if not arg.strip(): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1366 continue |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1367 yield arg |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1368 parser_class = FromFileConverterArgumentParser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1369 parser_signature = Sig(fromfile_prefix_chars='@') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1370 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1371 Sig('y', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1372 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1373 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1374 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1375 ('@hello X', NS(y=['hello', 'world!', 'X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1376 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1377 |
|
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 # Type conversion tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1381 # ===================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1382 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1383 class TestFileTypeRepr(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1384 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1385 def test_r(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1386 type = argparse.FileType('r') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1387 self.assertEqual("FileType('r')", repr(type)) |
|
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 def test_wb_1(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1390 type = argparse.FileType('wb', 1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1391 self.assertEqual("FileType('wb', 1)", repr(type)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1392 |
|
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 RFile(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1395 seen = {} |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1396 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1397 def __init__(self, name): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1398 self.name = name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1399 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1400 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1401 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1402 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1403 if other in self.seen: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1404 text = self.seen[other] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1405 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1406 text = self.seen[other] = other.read() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1407 other.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1408 if not isinstance(text, str): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1409 text = text.decode('ascii') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1410 return self.name == other.name == text |
|
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 class TestFileTypeR(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1414 """Test the FileType option/argument type for reading files""" |
|
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 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1417 super(TestFileTypeR, self).setUp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1418 for file_name in ['foo', 'bar']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1419 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
|
1420 file.write(file_name) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1421 file.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1422 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1423 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1424 Sig('-x', type=argparse.FileType()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1425 Sig('spam', type=argparse.FileType('r')), |
|
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 failures = ['-x', '-x bar'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1428 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1429 ('foo', NS(x=None, spam=RFile('foo'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1430 ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1431 ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1432 ('-x - -', NS(x=sys.stdin, spam=sys.stdin)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1433 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1434 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1435 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1436 class TestFileTypeRB(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1437 """Test the FileType option/argument type for reading files""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1438 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1439 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1440 super(TestFileTypeRB, self).setUp() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1441 for file_name in ['foo', 'bar']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1442 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
|
1443 file.write(file_name) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1444 file.close() |
|
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 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1447 Sig('-x', type=argparse.FileType('rb')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1448 Sig('spam', type=argparse.FileType('rb')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1449 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1450 failures = ['-x', '-x bar'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1451 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1452 ('foo', NS(x=None, spam=RFile('foo'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1453 ('-x foo bar', NS(x=RFile('foo'), spam=RFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1454 ('bar -x foo', NS(x=RFile('foo'), spam=RFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1455 ('-x - -', NS(x=sys.stdin, spam=sys.stdin)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1458 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1459 class WFile(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1460 seen = set() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1461 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1462 def __init__(self, name): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1463 self.name = name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1464 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1465 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1466 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1467 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1468 if other not in self.seen: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1469 text = 'Check that file is writable.' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1470 if 'b' in other.mode: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1471 text = text.encode('ascii') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1472 other.write(text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1473 other.close() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1474 self.seen.add(other) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1475 return self.name == other.name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1476 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1477 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1478 class TestFileTypeW(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1479 """Test the FileType option/argument type for writing files""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1480 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1481 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1482 Sig('-x', type=argparse.FileType('w')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1483 Sig('spam', type=argparse.FileType('w')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1484 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1485 failures = ['-x', '-x bar'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1486 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1487 ('foo', NS(x=None, spam=WFile('foo'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1488 ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1489 ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1490 ('-x - -', NS(x=sys.stdout, spam=sys.stdout)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1491 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1492 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1493 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1494 class TestFileTypeWB(TempDirMixin, ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1495 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1496 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1497 Sig('-x', type=argparse.FileType('wb')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1498 Sig('spam', type=argparse.FileType('wb')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1499 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1500 failures = ['-x', '-x bar'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1501 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1502 ('foo', NS(x=None, spam=WFile('foo'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1503 ('-x foo bar', NS(x=WFile('foo'), spam=WFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1504 ('bar -x foo', NS(x=WFile('foo'), spam=WFile('bar'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1505 ('-x - -', NS(x=sys.stdout, spam=sys.stdout)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1506 ] |
|
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 class TestTypeCallable(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1510 """Test some callables as option/argument types""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1511 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1512 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1513 Sig('--eggs', type=complex), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1514 Sig('spam', type=float), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1515 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1516 failures = ['a', '42j', '--eggs a', '--eggs 2i'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1517 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1518 ('--eggs=42 42', NS(eggs=42, spam=42.0)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1519 ('--eggs 2j -- -1.5', NS(eggs=2j, spam=-1.5)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1520 ('1024.675', NS(eggs=None, spam=1024.675)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1521 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1522 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1523 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1524 class TestTypeUserDefined(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1525 """Test a user-defined option/argument type""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1526 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1527 class MyType(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1528 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1529 def __init__(self, value): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1530 self.value = value |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1531 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1532 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1533 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1534 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1535 return (type(self), self.value) == (type(other), other.value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1536 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1537 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1538 Sig('-x', type=MyType), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1539 Sig('spam', type=MyType), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1540 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1541 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1542 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1543 ('a -x b', NS(x=MyType('b'), spam=MyType('a'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1544 ('-xf g', NS(x=MyType('f'), spam=MyType('g'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1545 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1546 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1547 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1548 class TestTypeClassicClass(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1549 """Test a classic class type""" |
|
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 class C: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1552 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1553 def __init__(self, value): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1554 self.value = value |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1555 |
|
59423
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1556 __hash__ = None |
|
0802bc973b32
eliminate py3k warnings in argparse
Benjamin Peterson <benjamin@python.org>
parents:
59284
diff
changeset
|
1557 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1558 def __eq__(self, other): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1559 return (type(self), self.value) == (type(other), other.value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1560 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1561 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1562 Sig('-x', type=C), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1563 Sig('spam', type=C), |
|
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 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1566 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1567 ('a -x b', NS(x=C('b'), spam=C('a'))), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1568 ('-xf g', NS(x=C('f'), spam=C('g'))), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1571 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1572 class TestTypeRegistration(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1573 """Test a user-defined type by registering it""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1574 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1575 def test(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1576 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1577 def get_my_type(string): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1578 return 'my_type{%s}' % string |
|
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 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1581 parser.register('type', 'my_type', get_my_type) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1582 parser.add_argument('-x', type='my_type') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1583 parser.add_argument('y', type='my_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 self.assertEqual(parser.parse_args('1'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1586 NS(x=None, y='my_type{1}')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1587 self.assertEqual(parser.parse_args('-x 1 42'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1588 NS(x='my_type{1}', y='my_type{42}')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1589 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1590 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1591 # ============ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1592 # Action tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1593 # ============ |
|
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 class TestActionUserDefined(ParserTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1596 """Test a user-defined option/argument action""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1597 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1598 class OptionalAction(argparse.Action): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1599 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1600 def __call__(self, parser, namespace, value, option_string=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1601 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1602 # check destination and option string |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1603 assert self.dest == 'spam', 'dest: %s' % self.dest |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1604 assert option_string == '-s', 'flag: %s' % option_string |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1605 # when option is before argument, badger=2, and when |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1606 # option is after argument, badger=<whatever was set> |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1607 expected_ns = NS(spam=0.25) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1608 if value in [0.125, 0.625]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1609 expected_ns.badger = 2 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1610 elif value in [2.0]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1611 expected_ns.badger = 84 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1612 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1613 raise AssertionError('value: %s' % value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1614 assert expected_ns == namespace, ('expected %s, got %s' % |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1615 (expected_ns, namespace)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1616 except AssertionError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1617 e = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1618 raise ArgumentParserError('opt_action failed: %s' % e) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1619 setattr(namespace, 'spam', value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1620 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1621 class PositionalAction(argparse.Action): |
|
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 def __call__(self, parser, namespace, value, option_string=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1624 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1625 assert option_string is None, ('option_string: %s' % |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1626 option_string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1627 # check destination |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1628 assert self.dest == 'badger', 'dest: %s' % self.dest |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1629 # when argument is before option, spam=0.25, and when |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1630 # option is after argument, spam=<whatever was set> |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1631 expected_ns = NS(badger=2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1632 if value in [42, 84]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1633 expected_ns.spam = 0.25 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1634 elif value in [1]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1635 expected_ns.spam = 0.625 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1636 elif value in [2]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1637 expected_ns.spam = 0.125 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1638 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1639 raise AssertionError('value: %s' % value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1640 assert expected_ns == namespace, ('expected %s, got %s' % |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1641 (expected_ns, namespace)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1642 except AssertionError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1643 e = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1644 raise ArgumentParserError('arg_action failed: %s' % e) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1645 setattr(namespace, 'badger', value) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1646 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1647 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1648 Sig('-s', dest='spam', action=OptionalAction, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1649 type=float, default=0.25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1650 Sig('badger', action=PositionalAction, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1651 type=int, nargs='?', default=2), |
|
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 failures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1654 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1655 ('-s0.125', NS(spam=0.125, badger=2)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1656 ('42', NS(spam=0.25, badger=42)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1657 ('-s 0.625 1', NS(spam=0.625, badger=1)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1658 ('84 -s2', NS(spam=2.0, badger=84)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1659 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1660 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1661 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1662 class TestActionRegistration(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1663 """Test a user-defined action supplied by registering it""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1664 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1665 class MyAction(argparse.Action): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1666 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1667 def __call__(self, parser, namespace, values, option_string=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1668 setattr(namespace, self.dest, 'foo[%s]' % values) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1669 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1670 def test(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1671 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1672 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1673 parser.register('action', 'my_action', self.MyAction) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1674 parser.add_argument('badger', action='my_action') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1675 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1676 self.assertEqual(parser.parse_args(['1']), NS(badger='foo[1]')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1677 self.assertEqual(parser.parse_args(['42']), NS(badger='foo[42]')) |
|
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 |
|
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 # Subparsers tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1682 # ================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1683 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1684 class TestAddSubparsers(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1685 """Test the add_subparsers method""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1686 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1687 def assertArgumentParserError(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1688 self.assertRaises(ArgumentParserError, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1689 |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1690 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
|
1691 # 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
|
1692 if prefix_chars: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1693 parser = ErrorRaisingArgumentParser( |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1694 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
|
1695 parser.add_argument( |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1696 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
|
1697 else: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1698 parser = ErrorRaisingArgumentParser( |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1699 prog='PROG', description='main description') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1700 parser.add_argument( |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1701 '--foo', action='store_true', help='foo help') |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1702 parser.add_argument( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1703 'bar', type=float, help='bar help') |
|
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 # check that only one subparsers argument can be added |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1706 subparsers = parser.add_subparsers(help='command help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1707 self.assertArgumentParserError(parser.add_subparsers) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1708 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1709 # add first sub-parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1710 parser1_kwargs = dict(description='1 description') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1711 if subparser_help: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1712 parser1_kwargs['help'] = '1 help' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1713 parser1 = subparsers.add_parser('1', **parser1_kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1714 parser1.add_argument('-w', type=int, help='w help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1715 parser1.add_argument('x', choices='abc', help='x help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1716 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1717 # add second sub-parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1718 parser2_kwargs = dict(description='2 description') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1719 if subparser_help: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1720 parser2_kwargs['help'] = '2 help' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1721 parser2 = subparsers.add_parser('2', **parser2_kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1722 parser2.add_argument('-y', choices='123', help='y help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1723 parser2.add_argument('z', type=complex, nargs='*', help='z help') |
|
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 # return the main parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1726 return parser |
|
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 setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1729 self.parser = self._get_parser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1730 self.command_help_parser = self._get_parser(subparser_help=True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1731 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1732 def test_parse_args_failures(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1733 # check some failure cases: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1734 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
|
1735 '0.5 1 -y', '0.5 2 -w']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1736 args = args_str.split() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1737 self.assertArgumentParserError(self.parser.parse_args, args) |
|
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 def test_parse_args(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1740 # check some non-failure cases: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1741 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1742 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
|
1743 NS(foo=False, bar=0.5, w=7, x='b'), |
|
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 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1746 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
|
1747 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
|
1748 ) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1749 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1750 self.parser.parse_args('--foo 0.125 1 c'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1751 NS(foo=True, bar=0.125, w=None, x='c'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1752 ) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1753 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1754 def test_dest(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1755 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1756 parser.add_argument('--foo', action='store_true') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1757 subparsers = parser.add_subparsers(dest='bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1758 parser1 = subparsers.add_parser('1') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1759 parser1.add_argument('baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1760 self.assertEqual(NS(foo=False, bar='1', baz='2'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1761 parser.parse_args('1 2'.split())) |
|
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 def test_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1764 self.assertEqual(self.parser.format_usage(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1765 'usage: PROG [-h] [--foo] bar {1,2} ...\n') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1766 self.assertEqual(self.parser.format_help(), textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1767 usage: PROG [-h] [--foo] bar {1,2} ... |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1768 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1769 main description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1770 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1771 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1772 bar bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1773 {1,2} command 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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1776 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1777 --foo foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1778 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1779 |
|
63691
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1780 def test_help_extra_prefix_chars(self): |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1781 # 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
|
1782 parser = self._get_parser(prefix_chars='+:-') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1783 self.assertEqual(parser.format_usage(), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1784 'usage: PROG [-h] [++foo] bar {1,2} ...\n') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1785 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1786 usage: PROG [-h] [++foo] bar {1,2} ... |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1787 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1788 main description |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1789 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1790 positional arguments: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1791 bar bar help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1792 {1,2} command help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1793 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1794 optional arguments: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1795 -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
|
1796 ++foo foo help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1797 ''')) |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1798 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1799 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1800 def test_help_alternate_prefix_chars(self): |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1801 parser = self._get_parser(prefix_chars='+:/') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1802 self.assertEqual(parser.format_usage(), |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1803 'usage: PROG [+h] [++foo] bar {1,2} ...\n') |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1804 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1805 usage: PROG [+h] [++foo] bar {1,2} ... |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1806 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1807 main description |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1808 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1809 positional arguments: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1810 bar bar help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1811 {1,2} command help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1812 |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1813 optional arguments: |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1814 +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
|
1815 ++foo foo help |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1816 ''')) |
|
23c089dc5cff
Merged revisions 83675 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents:
61879
diff
changeset
|
1817 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1818 def test_parser_command_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1819 self.assertEqual(self.command_help_parser.format_usage(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1820 'usage: PROG [-h] [--foo] bar {1,2} ...\n') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1821 self.assertEqual(self.command_help_parser.format_help(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1822 textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1823 usage: PROG [-h] [--foo] bar {1,2} ... |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1824 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1825 main description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1826 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1827 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1828 bar bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1829 {1,2} command help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1830 1 1 help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1831 2 2 help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1832 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1833 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1834 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1835 --foo foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1836 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1837 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1838 def test_subparser_title_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1839 parser = ErrorRaisingArgumentParser(prog='PROG', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1840 description='main description') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1841 parser.add_argument('--foo', action='store_true', help='foo help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1842 parser.add_argument('bar', help='bar help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1843 subparsers = parser.add_subparsers(title='subcommands', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1844 description='command help', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1845 help='additional text') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1846 parser1 = subparsers.add_parser('1') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1847 parser2 = subparsers.add_parser('2') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1848 self.assertEqual(parser.format_usage(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1849 'usage: PROG [-h] [--foo] bar {1,2} ...\n') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1850 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1851 usage: PROG [-h] [--foo] bar {1,2} ... |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1852 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1853 main description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1854 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1855 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1856 bar bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1857 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1858 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1859 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1860 --foo foo help |
|
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 subcommands: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1863 command help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1864 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1865 {1,2} additional text |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1866 ''')) |
|
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 def _test_subparser_help(self, args_str, expected_help): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1869 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1870 self.parser.parse_args(args_str.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1871 except ArgumentParserError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1872 err = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1873 if err.stdout != expected_help: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1874 print(repr(expected_help)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1875 print(repr(err.stdout)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1876 self.assertEqual(err.stdout, expected_help) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1877 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1878 def test_subparser1_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1879 self._test_subparser_help('5.0 1 -h', textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1880 usage: PROG bar 1 [-h] [-w W] {a,b,c} |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1881 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1882 1 description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1883 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1884 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1885 {a,b,c} x help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1886 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1887 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1888 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1889 -w W w help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1890 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1891 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1892 def test_subparser2_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1893 self._test_subparser_help('5.0 2 -h', textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1894 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
|
1895 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1896 2 description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1897 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1898 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1899 z z help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1900 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1901 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1902 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1903 -y {1,2,3} y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1904 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1905 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1906 # ============ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1907 # Groups tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1908 # ============ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1909 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1910 class TestPositionalsGroups(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1911 """Tests that order of group positionals matches construction order""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1912 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1913 def test_nongroup_first(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1914 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1915 parser.add_argument('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1916 group = parser.add_argument_group('g') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1917 group.add_argument('bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1918 parser.add_argument('baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1919 expected = NS(foo='1', bar='2', baz='3') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1920 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
|
1921 self.assertEqual(expected, result) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1922 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1923 def test_group_first(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1924 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1925 group = parser.add_argument_group('xxx') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1926 group.add_argument('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1927 parser.add_argument('bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1928 parser.add_argument('baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1929 expected = NS(foo='1', bar='2', baz='3') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1930 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
|
1931 self.assertEqual(expected, result) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1932 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1933 def test_interleaved_groups(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1934 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1935 group = parser.add_argument_group('xxx') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1936 parser.add_argument('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1937 group.add_argument('bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1938 parser.add_argument('baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1939 group = parser.add_argument_group('yyy') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1940 group.add_argument('frell') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1941 expected = NS(foo='1', bar='2', baz='3', frell='4') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1942 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
|
1943 self.assertEqual(expected, result) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1944 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1945 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1946 # Parent parser tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1947 # =================== |
|
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 class TestParentParsers(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1950 """Tests that parsers can be created with parent parsers""" |
|
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 def assertArgumentParserError(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1953 self.assertRaises(ArgumentParserError, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1954 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1955 def setUp(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1956 self.wxyz_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1957 self.wxyz_parent.add_argument('--w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1958 x_group = self.wxyz_parent.add_argument_group('x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1959 x_group.add_argument('-y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1960 self.wxyz_parent.add_argument('z') |
|
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 self.abcd_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1963 self.abcd_parent.add_argument('a') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1964 self.abcd_parent.add_argument('-b') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1965 c_group = self.abcd_parent.add_argument_group('c') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1966 c_group.add_argument('--d') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1967 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1968 self.w_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1969 self.w_parent.add_argument('--w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1970 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1971 self.z_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1972 self.z_parent.add_argument('z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1973 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1974 # parents with mutually exclusive groups |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1975 self.ab_mutex_parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1976 group = self.ab_mutex_parent.add_mutually_exclusive_group() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1977 group.add_argument('-a', action='store_true') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1978 group.add_argument('-b', action='store_true') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1979 |
|
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
|
1980 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
|
1981 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1982 def test_single_parent(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1983 parser = ErrorRaisingArgumentParser(parents=[self.wxyz_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1984 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
|
1985 NS(w='3', y='1', z='2')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1986 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1987 def test_single_parent_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1988 self._test_mutex_ab(self.ab_mutex_parent.parse_args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1989 parser = ErrorRaisingArgumentParser(parents=[self.ab_mutex_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1990 self._test_mutex_ab(parser.parse_args) |
|
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 def test_single_granparent_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1993 parents = [self.ab_mutex_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1994 parser = ErrorRaisingArgumentParser(add_help=False, parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1995 parser = ErrorRaisingArgumentParser(parents=[parser]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1996 self._test_mutex_ab(parser.parse_args) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1997 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1998 def _test_mutex_ab(self, parse_args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
1999 self.assertEqual(parse_args([]), NS(a=False, b=False)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2000 self.assertEqual(parse_args(['-a']), NS(a=True, b=False)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2001 self.assertEqual(parse_args(['-b']), NS(a=False, b=True)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2002 self.assertArgumentParserError(parse_args, ['-a', '-b']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2003 self.assertArgumentParserError(parse_args, ['-b', '-a']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2004 self.assertArgumentParserError(parse_args, ['-c']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2005 self.assertArgumentParserError(parse_args, ['-a', '-c']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2006 self.assertArgumentParserError(parse_args, ['-b', '-c']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2007 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2008 def test_multiple_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2009 parents = [self.abcd_parent, self.wxyz_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2010 parser = ErrorRaisingArgumentParser(parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2011 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
|
2012 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
|
2013 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2014 def test_multiple_parents_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2015 parents = [self.ab_mutex_parent, self.wxyz_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2016 parser = ErrorRaisingArgumentParser(parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2017 self.assertEqual(parser.parse_args('-a --w 2 3'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2018 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
|
2019 self.assertArgumentParserError( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2020 parser.parse_args, '-a --w 2 3 -b'.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2021 self.assertArgumentParserError( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2022 parser.parse_args, '-a -b --w 2 3'.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2023 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2024 def test_conflicting_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2025 self.assertRaises( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2026 argparse.ArgumentError, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2027 argparse.ArgumentParser, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2028 parents=[self.w_parent, self.wxyz_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2029 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2030 def test_conflicting_parents_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2031 self.assertRaises( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2032 argparse.ArgumentError, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2033 argparse.ArgumentParser, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2034 parents=[self.abcd_parent, self.ab_mutex_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2035 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2036 def test_same_argument_name_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2037 parents = [self.wxyz_parent, self.z_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2038 parser = ErrorRaisingArgumentParser(parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2039 self.assertEqual(parser.parse_args('1 2'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2040 NS(w=None, y=None, z='2')) |
|
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 def test_subparser_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2043 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2044 subparsers = parser.add_subparsers() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2045 abcde_parser = subparsers.add_parser('bar', parents=[self.abcd_parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2046 abcde_parser.add_argument('e') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2047 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
|
2048 NS(a='3', b='1', d='2', e='4')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2049 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2050 def test_subparser_parents_mutex(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2051 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2052 subparsers = parser.add_subparsers() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2053 parents = [self.ab_mutex_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2054 abc_parser = subparsers.add_parser('foo', parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2055 c_group = abc_parser.add_argument_group('c_group') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2056 c_group.add_argument('c') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2057 parents = [self.wxyz_parent, self.ab_mutex_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2058 wxyzabe_parser = subparsers.add_parser('bar', parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2059 wxyzabe_parser.add_argument('e') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2060 self.assertEqual(parser.parse_args('foo -a 4'.split()), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2061 NS(a=True, b=False, c='4')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2062 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
|
2063 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
|
2064 self.assertArgumentParserError( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2065 parser.parse_args, 'foo -a -b 4'.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2066 self.assertArgumentParserError( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2067 parser.parse_args, 'bar -b -a 4'.split()) |
|
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 def test_parent_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2070 parents = [self.abcd_parent, self.wxyz_parent] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2071 parser = ErrorRaisingArgumentParser(parents=parents) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2072 parser_help = parser.format_help() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2073 self.assertEqual(parser_help, textwrap.dedent('''\ |
|
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
|
2074 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
|
2075 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2076 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2077 a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2078 z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2079 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2080 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2081 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2082 -b B |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2083 --w W |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2084 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2085 c: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2086 --d D |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2087 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2088 x: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2089 -y Y |
|
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
|
2090 '''.format(self.main_program))) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2091 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2092 def test_groups_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2093 parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2094 g = parent.add_argument_group(title='g', description='gd') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2095 g.add_argument('-w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2096 g.add_argument('-x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2097 m = parent.add_mutually_exclusive_group() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2098 m.add_argument('-y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2099 m.add_argument('-z') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2100 parser = ErrorRaisingArgumentParser(parents=[parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2101 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2102 self.assertRaises(ArgumentParserError, parser.parse_args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2103 ['-y', 'Y', '-z', 'Z']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2104 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2105 parser_help = parser.format_help() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2106 self.assertEqual(parser_help, textwrap.dedent('''\ |
|
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
|
2107 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
|
2108 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2109 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2110 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2111 -y Y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2112 -z Z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2113 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2114 g: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2115 gd |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2116 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2117 -w W |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2118 -x X |
|
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
|
2119 '''.format(self.main_program))) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2120 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2121 # ============================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2122 # Mutually exclusive group tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2123 # ============================== |
|
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 class TestMutuallyExclusiveGroupErrors(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2126 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2127 def test_invalid_add_argument_group(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2128 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2129 raises = self.assertRaises |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2130 raises(TypeError, parser.add_mutually_exclusive_group, title='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2131 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2132 def test_invalid_add_argument(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2133 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2134 group = parser.add_mutually_exclusive_group() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2135 add_argument = group.add_argument |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2136 raises = self.assertRaises |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2137 raises(ValueError, add_argument, '--foo', required=True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2138 raises(ValueError, add_argument, 'bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2139 raises(ValueError, add_argument, 'bar', nargs='+') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2140 raises(ValueError, add_argument, 'bar', nargs=1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2141 raises(ValueError, add_argument, 'bar', nargs=argparse.PARSER) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2142 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2143 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2144 class MEMixin(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2145 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2146 def test_failures_when_not_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2147 parse_args = self.get_parser(required=False).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2148 error = ArgumentParserError |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2149 for args_string in self.failures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2150 self.assertRaises(error, parse_args, args_string.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2151 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2152 def test_failures_when_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2153 parse_args = self.get_parser(required=True).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2154 error = ArgumentParserError |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2155 for args_string in self.failures + ['']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2156 self.assertRaises(error, parse_args, args_string.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2157 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2158 def test_successes_when_not_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2159 parse_args = self.get_parser(required=False).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2160 successes = self.successes + self.successes_when_not_required |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2161 for args_string, expected_ns in successes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2162 actual_ns = parse_args(args_string.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2163 self.assertEqual(actual_ns, expected_ns) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2164 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2165 def test_successes_when_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2166 parse_args = self.get_parser(required=True).parse_args |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2167 for args_string, expected_ns in self.successes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2168 actual_ns = parse_args(args_string.split()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2169 self.assertEqual(actual_ns, expected_ns) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2170 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2171 def test_usage_when_not_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2172 format_usage = self.get_parser(required=False).format_usage |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2173 expected_usage = self.usage_when_not_required |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2174 self.assertEqual(format_usage(), textwrap.dedent(expected_usage)) |
|
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 def test_usage_when_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2177 format_usage = self.get_parser(required=True).format_usage |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2178 expected_usage = self.usage_when_required |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2179 self.assertEqual(format_usage(), textwrap.dedent(expected_usage)) |
|
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 def test_help_when_not_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2182 format_help = self.get_parser(required=False).format_help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2183 help = self.usage_when_not_required + self.help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2184 self.assertEqual(format_help(), textwrap.dedent(help)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2185 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2186 def test_help_when_required(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2187 format_help = self.get_parser(required=True).format_help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2188 help = self.usage_when_required + self.help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2189 self.assertEqual(format_help(), textwrap.dedent(help)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2190 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2191 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2192 class TestMutuallyExclusiveSimple(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2193 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2194 def get_parser(self, required=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2195 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2196 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2197 group.add_argument('--bar', help='bar help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2198 group.add_argument('--baz', nargs='?', const='Z', help='baz help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2199 return parser |
|
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 failures = ['--bar X --baz Y', '--bar X --baz'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2202 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2203 ('--bar X', NS(bar='X', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2204 ('--bar X --bar Z', NS(bar='Z', baz=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2205 ('--baz Y', NS(bar=None, baz='Y')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2206 ('--baz', NS(bar=None, baz='Z')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2207 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2208 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2209 ('', NS(bar=None, baz=None)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2212 usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2213 usage: PROG [-h] [--bar BAR | --baz [BAZ]] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2214 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2215 usage_when_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2216 usage: PROG [-h] (--bar BAR | --baz [BAZ]) |
|
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 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2219 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2220 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2221 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2222 --bar BAR bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2223 --baz [BAZ] baz help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2224 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2225 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2226 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2227 class TestMutuallyExclusiveLong(MEMixin, TestCase): |
|
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 get_parser(self, required=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2230 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2231 parser.add_argument('--abcde', help='abcde help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2232 parser.add_argument('--fghij', help='fghij help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2233 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2234 group.add_argument('--klmno', help='klmno help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2235 group.add_argument('--pqrst', help='pqrst help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2236 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2237 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2238 failures = ['--klmno X --pqrst Y'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2239 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2240 ('--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
|
2241 ('--abcde Y --klmno X', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2242 NS(abcde='Y', fghij=None, klmno='X', pqrst=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2243 ('--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
|
2244 ('--pqrst X --fghij Y', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2245 NS(abcde=None, fghij='Y', klmno=None, pqrst='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2246 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2247 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2248 ('', NS(abcde=None, fghij=None, klmno=None, pqrst=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2249 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2250 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2251 usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2252 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2253 [--klmno KLMNO | --pqrst PQRST] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2254 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2255 usage_when_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2256 usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2257 (--klmno KLMNO | --pqrst PQRST) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2258 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2259 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2260 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2261 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2262 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2263 --abcde ABCDE abcde help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2264 --fghij FGHIJ fghij help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2265 --klmno KLMNO klmno help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2266 --pqrst PQRST pqrst help |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2269 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2270 class TestMutuallyExclusiveFirstSuppressed(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2271 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2272 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2273 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2274 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2275 group.add_argument('-x', help=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2276 group.add_argument('-y', action='store_false', help='y help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2277 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2278 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2279 failures = ['-x X -y'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2280 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2281 ('-x X', NS(x='X', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2282 ('-x X -x Y', NS(x='Y', y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2283 ('-y', NS(x=None, y=False)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2284 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2285 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2286 ('', NS(x=None, y=True)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2287 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2288 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2289 usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2290 usage: PROG [-h] [-y] |
|
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 usage_when_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2293 usage: PROG [-h] -y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2294 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2295 help = '''\ |
|
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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2298 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2299 -y y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2300 ''' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2303 class TestMutuallyExclusiveManySuppressed(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2304 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2305 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2306 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2307 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2308 add = group.add_argument |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2309 add('--spam', action='store_true', help=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2310 add('--badger', action='store_false', help=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2311 add('--bladder', help=argparse.SUPPRESS) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2312 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2313 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2314 failures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2315 '--spam --badger', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2316 '--badger --bladder B', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2317 '--bladder B --spam', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2318 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2319 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2320 ('--spam', NS(spam=True, badger=True, bladder=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2321 ('--badger', NS(spam=False, badger=False, bladder=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2322 ('--bladder B', NS(spam=False, badger=True, bladder='B')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2323 ('--spam --spam', NS(spam=True, badger=True, bladder=None)), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2324 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2325 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2326 ('', NS(spam=False, badger=True, bladder=None)), |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2329 usage_when_required = usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2330 usage: PROG [-h] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2331 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2332 help = '''\ |
|
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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2335 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2336 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2337 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2338 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2339 class TestMutuallyExclusiveOptionalAndPositional(MEMixin, TestCase): |
|
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 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2342 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2343 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2344 group.add_argument('--foo', action='store_true', help='FOO') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2345 group.add_argument('--spam', help='SPAM') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2346 group.add_argument('badger', nargs='*', default='X', help='BADGER') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2347 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2348 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2349 failures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2350 '--foo --spam S', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2351 '--spam S X', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2352 'X --foo', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2353 'X Y Z --spam S', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2354 '--foo X Y', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2355 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2356 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2357 ('--foo', NS(foo=True, spam=None, badger='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2358 ('--spam S', NS(foo=False, spam='S', badger='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2359 ('X', NS(foo=False, spam=None, badger=['X'])), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2360 ('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
|
2361 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2362 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2363 ('', NS(foo=False, spam=None, badger='X')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2364 ] |
|
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 usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2367 usage: PROG [-h] [--foo | --spam SPAM | badger [badger ...]] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2368 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2369 usage_when_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2370 usage: PROG [-h] (--foo | --spam SPAM | badger [badger ...]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2371 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2372 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2373 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2374 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2375 badger BADGER |
|
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 --foo FOO |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2380 --spam SPAM SPAM |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2381 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2382 |
|
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 class TestMutuallyExclusiveOptionalsMixed(MEMixin, TestCase): |
|
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 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2387 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2388 parser.add_argument('-x', action='store_true', help='x help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2389 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2390 group.add_argument('-a', action='store_true', help='a help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2391 group.add_argument('-b', action='store_true', help='b help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2392 parser.add_argument('-y', action='store_true', help='y help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2393 group.add_argument('-c', action='store_true', help='c help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2394 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2395 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2396 failures = ['-a -b', '-b -c', '-a -c', '-a -b -c'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2397 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2398 ('-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
|
2399 ('-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
|
2400 ('-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
|
2401 ('-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
|
2402 ('-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
|
2403 ('-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
|
2404 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2405 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2406 ('', 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
|
2407 ('-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
|
2408 ('-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
|
2409 ] |
|
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 usage_when_required = usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2412 usage: PROG [-h] [-x] [-a] [-b] [-y] [-c] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2413 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2414 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2415 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2416 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2417 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2418 -x x help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2419 -a a help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2420 -b b help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2421 -y y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2422 -c c help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2423 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2424 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2425 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2426 class TestMutuallyExclusiveOptionalsAndPositionalsMixed(MEMixin, TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2427 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2428 def get_parser(self, required): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2429 parser = ErrorRaisingArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2430 parser.add_argument('x', help='x help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2431 parser.add_argument('-y', action='store_true', help='y help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2432 group = parser.add_mutually_exclusive_group(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2433 group.add_argument('a', nargs='?', help='a help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2434 group.add_argument('-b', action='store_true', help='b help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2435 group.add_argument('-c', action='store_true', help='c help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2436 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2437 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2438 failures = ['X A -b', '-b -c', '-c X A'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2439 successes = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2440 ('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
|
2441 ('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
|
2442 ('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
|
2443 ('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
|
2444 ('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
|
2445 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2446 successes_when_not_required = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2447 ('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
|
2448 ('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
|
2449 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2450 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2451 usage_when_required = usage_when_not_required = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2452 usage: PROG [-h] [-y] [-b] [-c] x [a] |
|
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 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2455 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2456 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2457 x x help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2458 a a help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2459 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2460 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2461 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2462 -y y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2463 -b b help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2464 -c c help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2465 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2466 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2467 # ================================================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2468 # Mutually exclusive group in parent parser tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2469 # ================================================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2470 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2471 class MEPBase(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2472 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2473 def get_parser(self, required=None): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2474 parent = super(MEPBase, self).get_parser(required=required) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2475 parser = ErrorRaisingArgumentParser( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2476 prog=parent.prog, add_help=False, parents=[parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2477 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2478 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2479 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2480 class TestMutuallyExclusiveGroupErrorsParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2481 MEPBase, TestMutuallyExclusiveGroupErrors): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2482 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2483 |
|
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 class TestMutuallyExclusiveSimpleParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2486 MEPBase, TestMutuallyExclusiveSimple): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2487 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2488 |
|
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 class TestMutuallyExclusiveLongParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2491 MEPBase, TestMutuallyExclusiveLong): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2492 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2493 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2494 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2495 class TestMutuallyExclusiveFirstSuppressedParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2496 MEPBase, TestMutuallyExclusiveFirstSuppressed): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2497 pass |
|
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 TestMutuallyExclusiveManySuppressedParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2501 MEPBase, TestMutuallyExclusiveManySuppressed): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2502 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2503 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2504 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2505 class TestMutuallyExclusiveOptionalAndPositionalParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2506 MEPBase, TestMutuallyExclusiveOptionalAndPositional): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2507 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2508 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2509 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2510 class TestMutuallyExclusiveOptionalsMixedParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2511 MEPBase, TestMutuallyExclusiveOptionalsMixed): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2512 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2513 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2514 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2515 class TestMutuallyExclusiveOptionalsAndPositionalsMixedParent( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2516 MEPBase, TestMutuallyExclusiveOptionalsAndPositionalsMixed): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2517 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2518 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2519 # ================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2520 # Set default tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2521 # ================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2522 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2523 class TestSetDefaults(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2524 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2525 def test_set_defaults_no_args(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2526 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2527 parser.set_defaults(x='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2528 parser.set_defaults(y='bar', z=1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2529 self.assertEqual(NS(x='foo', y='bar', z=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2530 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2531 self.assertEqual(NS(x='foo', y='bar', z=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2532 parser.parse_args([], NS())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2533 self.assertEqual(NS(x='baz', y='bar', z=1), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2534 parser.parse_args([], NS(x='baz'))) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2535 self.assertEqual(NS(x='baz', y='bar', z=2), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2536 parser.parse_args([], NS(x='baz', z=2))) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2537 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2538 def test_set_defaults_with_args(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2539 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2540 parser.set_defaults(x='foo', y='bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2541 parser.add_argument('-x', default='xfoox') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2542 self.assertEqual(NS(x='xfoox', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2543 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2544 self.assertEqual(NS(x='xfoox', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2545 parser.parse_args([], NS())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2546 self.assertEqual(NS(x='baz', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2547 parser.parse_args([], NS(x='baz'))) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2548 self.assertEqual(NS(x='1', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2549 parser.parse_args('-x 1'.split())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2550 self.assertEqual(NS(x='1', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2551 parser.parse_args('-x 1'.split(), NS())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2552 self.assertEqual(NS(x='1', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2553 parser.parse_args('-x 1'.split(), NS(x='baz'))) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2554 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2555 def test_set_defaults_subparsers(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2556 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2557 parser.set_defaults(x='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2558 subparsers = parser.add_subparsers() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2559 parser_a = subparsers.add_parser('a') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2560 parser_a.set_defaults(y='bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2561 self.assertEqual(NS(x='foo', y='bar'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2562 parser.parse_args('a'.split())) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2563 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2564 def test_set_defaults_parents(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2565 parent = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2566 parent.set_defaults(x='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2567 parser = ErrorRaisingArgumentParser(parents=[parent]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2568 self.assertEqual(NS(x='foo'), parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2569 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2570 def test_set_defaults_same_as_add_argument(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2571 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2572 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
|
2573 parser.add_argument('-w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2574 parser.add_argument('-x', default='XX') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2575 parser.add_argument('y', nargs='?') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2576 parser.add_argument('z', nargs='?', default='ZZ') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2577 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2578 # defaults set previously |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2579 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
|
2580 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2581 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2582 # reset defaults |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2583 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
|
2584 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
|
2585 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2586 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2587 def test_set_defaults_same_as_add_argument_group(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2588 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2589 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
|
2590 group = parser.add_argument_group('foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2591 group.add_argument('-w') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2592 group.add_argument('-x', default='XX') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2593 group.add_argument('y', nargs='?') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2594 group.add_argument('z', nargs='?', default='ZZ') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2595 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2596 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2597 # defaults set previously |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2598 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
|
2599 parser.parse_args([])) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2600 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2601 # reset defaults |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2602 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
|
2603 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
|
2604 parser.parse_args([])) |
|
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 # Get default tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2608 # ================= |
|
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 class TestGetDefault(TestCase): |
|
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 def test_get_default(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2613 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2614 self.assertEqual(None, parser.get_default("foo")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2615 self.assertEqual(None, parser.get_default("bar")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2616 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2617 parser.add_argument("--foo") |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2618 self.assertEqual(None, parser.get_default("foo")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2619 self.assertEqual(None, parser.get_default("bar")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2620 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2621 parser.add_argument("--bar", type=int, default=42) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2622 self.assertEqual(None, parser.get_default("foo")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2623 self.assertEqual(42, parser.get_default("bar")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2624 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2625 parser.set_defaults(foo="badger") |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2626 self.assertEqual("badger", parser.get_default("foo")) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2627 self.assertEqual(42, parser.get_default("bar")) |
|
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 # ========================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2630 # Namespace 'contains' tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2631 # ========================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2632 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2633 class TestNamespaceContainsSimple(TestCase): |
|
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 def test_empty(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2636 ns = argparse.Namespace() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2637 self.assertEquals('' in ns, False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2638 self.assertEquals('' not in ns, True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2639 self.assertEquals('x' in ns, False) |
|
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 def test_non_empty(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2642 ns = argparse.Namespace(x=1, y=2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2643 self.assertEquals('x' in ns, True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2644 self.assertEquals('x' not in ns, False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2645 self.assertEquals('y' in ns, True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2646 self.assertEquals('' in ns, False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2647 self.assertEquals('xx' in ns, False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2648 self.assertEquals('z' in ns, False) |
|
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 # Help formatting tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2652 # ===================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2653 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2654 class TestHelpFormattingMetaclass(type): |
|
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 def __init__(cls, name, bases, bodydict): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2657 if name == 'HelpTestCase': |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2658 return |
|
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 class AddTests(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2661 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2662 def __init__(self, test_class, func_suffix, std_name): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2663 self.func_suffix = func_suffix |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2664 self.std_name = std_name |
|
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 for test_func in [self.test_format, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2667 self.test_print, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2668 self.test_print_file]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2669 test_name = '%s_%s' % (test_func.__name__, func_suffix) |
|
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 def test_wrapper(self, test_func=test_func): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2672 test_func(self) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2673 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2674 test_wrapper.__name__ = test_name |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2675 except TypeError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2676 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2677 setattr(test_class, test_name, test_wrapper) |
|
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 def _get_parser(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2680 parser = argparse.ArgumentParser( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2681 *tester.parser_signature.args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2682 **tester.parser_signature.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2683 for argument_sig in tester.argument_signatures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2684 parser.add_argument(*argument_sig.args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2685 **argument_sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2686 group_signatures = tester.argument_group_signatures |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2687 for group_sig, argument_sigs in group_signatures: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2688 group = parser.add_argument_group(*group_sig.args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2689 **group_sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2690 for argument_sig in argument_sigs: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2691 group.add_argument(*argument_sig.args, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2692 **argument_sig.kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2693 return parser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2694 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2695 def _test(self, tester, parser_text): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2696 expected_text = getattr(tester, self.func_suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2697 expected_text = textwrap.dedent(expected_text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2698 if expected_text != parser_text: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2699 print(repr(expected_text)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2700 print(repr(parser_text)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2701 for char1, char2 in zip(expected_text, parser_text): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2702 if char1 != char2: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2703 print('first diff: %r %r' % (char1, char2)) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2704 break |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2705 tester.assertEqual(expected_text, parser_text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2706 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2707 def test_format(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2708 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2709 format = getattr(parser, 'format_%s' % self.func_suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2710 self._test(tester, format()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2711 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2712 def test_print(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2713 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2714 print_ = getattr(parser, 'print_%s' % self.func_suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2715 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
|
2716 setattr(sys, self.std_name, StdIOBuffer()) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2717 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2718 print_() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2719 parser_text = getattr(sys, self.std_name).getvalue() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2720 finally: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2721 setattr(sys, self.std_name, old_stream) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2722 self._test(tester, parser_text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2723 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2724 def test_print_file(self, tester): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2725 parser = self._get_parser(tester) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2726 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
|
2727 sfile = StdIOBuffer() |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2728 print_(sfile) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2729 parser_text = sfile.getvalue() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2730 self._test(tester, parser_text) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2731 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2732 # add tests for {format,print}_{usage,help,version} |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2733 for func_suffix, std_name in [('usage', 'stdout'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2734 ('help', 'stdout'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2735 ('version', 'stderr')]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2736 AddTests(cls, func_suffix, std_name) |
|
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 bases = TestCase, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2739 HelpTestCase = TestHelpFormattingMetaclass('HelpTestCase', bases, {}) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2740 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2741 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2742 class TestHelpBiggerOptionals(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2743 """Make sure that argument help aligns when options are longer""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2744 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2745 parser_signature = Sig(prog='PROG', description='DESCRIPTION', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2746 epilog='EPILOG', version='0.1') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2747 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2748 Sig('-x', action='store_true', help='X HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2749 Sig('--y', help='Y HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2750 Sig('foo', help='FOO HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2751 Sig('bar', help='BAR HELP'), |
|
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 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2754 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2755 usage: PROG [-h] [-v] [-x] [--y Y] foo bar |
|
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 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2758 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2759 DESCRIPTION |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2760 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2761 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2762 foo FOO HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2763 bar BAR HELP |
|
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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2766 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2767 -v, --version show program's version number and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2768 -x X HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2769 --y Y Y HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2770 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2771 EPILOG |
|
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 version = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2774 0.1 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2775 ''' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2778 class TestHelpBiggerOptionalGroups(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2779 """Make sure that argument help aligns when options are longer""" |
|
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_signature = Sig(prog='PROG', description='DESCRIPTION', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2782 epilog='EPILOG', version='0.1') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2783 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2784 Sig('-x', action='store_true', help='X HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2785 Sig('--y', help='Y HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2786 Sig('foo', help='FOO HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2787 Sig('bar', help='BAR HELP'), |
|
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 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2790 (Sig('GROUP TITLE', description='GROUP DESCRIPTION'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2791 Sig('baz', help='BAZ HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2792 Sig('-z', nargs='+', help='Z HELP')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2793 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2794 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2795 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
|
2796 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2797 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2798 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2799 DESCRIPTION |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2800 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2801 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2802 foo FOO HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2803 bar BAR HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2804 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2805 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2806 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2807 -v, --version show program's version number and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2808 -x X HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2809 --y Y Y HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2810 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2811 GROUP TITLE: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2812 GROUP DESCRIPTION |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2813 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2814 baz BAZ HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2815 -z Z [Z ...] Z HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2816 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2817 EPILOG |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2818 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2819 version = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2820 0.1 |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2823 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2824 class TestHelpBiggerPositionals(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2825 """Make sure that help aligns when arguments are longer""" |
|
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 parser_signature = Sig(usage='USAGE', description='DESCRIPTION') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2828 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2829 Sig('-x', action='store_true', help='X HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2830 Sig('--y', help='Y HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2831 Sig('ekiekiekifekang', help='EKI HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2832 Sig('bar', help='BAR HELP'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2833 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2834 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2835 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2836 usage: USAGE |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2837 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2838 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2839 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2840 DESCRIPTION |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2841 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2842 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2843 ekiekiekifekang EKI HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2844 bar BAR HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2845 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2846 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2847 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2848 -x X HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2849 --y Y Y HELP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2850 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2851 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2852 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2853 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2854 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2855 class TestHelpReformatting(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2856 """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
|
2857 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2858 parser_signature = Sig( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2859 prog='PROG', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2860 description=' oddly formatted\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2861 'description\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2862 '\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2863 'that is so long that it should go onto multiple ' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2864 'lines when wrapped') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2865 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2866 Sig('-x', metavar='XX', help='oddly\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2867 ' formatted -x help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2868 Sig('y', metavar='yyy', help='normal y help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2869 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2870 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2871 (Sig('title', description='\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2872 ' oddly formatted group\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2873 '\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2874 'description'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2875 [Sig('-a', action='store_true', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2876 help=' oddly \n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2877 'formatted -a help \n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2878 ' again, so long that it should be wrapped over ' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2879 'multiple lines')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2880 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2881 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2882 usage: PROG [-h] [-x XX] [-a] yyy |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2883 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2884 help = usage + '''\ |
|
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 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
|
2887 multiple |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2888 lines when wrapped |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2889 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2890 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2891 yyy normal y help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2892 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2893 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2894 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2895 -x XX oddly formatted -x help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2896 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2897 title: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2898 oddly formatted group description |
|
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 -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
|
2901 be wrapped |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2902 over multiple lines |
|
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 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2905 |
|
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 class TestHelpWrappingShortNames(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2908 """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
|
2909 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2910 parser_signature = Sig(prog='PROG', description= 'D\nD' * 30) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2911 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2912 Sig('-x', metavar='XX', help='XHH HX' * 20), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2913 Sig('y', metavar='yyy', help='YH YH' * 20), |
|
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 (Sig('ALPHAS'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2917 Sig('-a', action='store_true', help='AHHH HHA' * 10)]), |
|
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 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2920 usage: PROG [-h] [-x XX] [-a] yyy |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2921 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2922 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2923 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2924 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
|
2925 DD DD DD |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2926 DD DD DD DD D |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2927 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2928 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2929 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
|
2930 YHYH YHYH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2931 YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH |
|
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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2934 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2935 -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
|
2936 HXXHH HXXHH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2937 HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX |
|
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 ALPHAS: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2940 -a AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2941 HHAAHHH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2942 HHAAHHH HHAAHHH HHA |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2943 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2944 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2945 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2946 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2947 class TestHelpWrappingLongNames(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2948 """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
|
2949 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2950 parser_signature = Sig(usage='USAGE', description= 'D D' * 30, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2951 version='V V'*30) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2952 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2953 Sig('-x', metavar='X' * 25, help='XH XH' * 20), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2954 Sig('y', metavar='y' * 25, help='YH YH' * 20), |
|
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 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2957 (Sig('ALPHAS'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2958 Sig('-a', metavar='A' * 25, help='AH AH' * 20), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2959 Sig('z', metavar='z' * 25, help='ZH ZH' * 20)]), |
|
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 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2962 usage: USAGE |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2963 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2964 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2965 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2966 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
|
2967 DD DD DD |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2968 DD DD DD DD D |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2969 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2970 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2971 yyyyyyyyyyyyyyyyyyyyyyyyy |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2972 YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2973 YHYH YHYH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2974 YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH |
|
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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2977 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2978 -v, --version show program's version number and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2979 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2980 XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2981 XHXH XHXH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2982 XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH |
|
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 ALPHAS: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2985 -a AAAAAAAAAAAAAAAAAAAAAAAAA |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2986 AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2987 AHAH AHAH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2988 AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2989 zzzzzzzzzzzzzzzzzzzzzzzzz |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2990 ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2991 ZHZH ZHZH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2992 ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2993 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2994 version = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2995 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
|
2996 VV VV VV |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2997 VV VV VV VV V |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
2998 ''' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3001 class TestHelpUsage(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3002 """Test basic usage messages""" |
|
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 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3005 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3006 Sig('-w', nargs='+', help='w'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3007 Sig('-x', nargs='*', help='x'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3008 Sig('a', help='a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3009 Sig('b', help='b', nargs=2), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3010 Sig('c', help='c', nargs='?'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3011 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3012 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3013 (Sig('group'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3014 Sig('-y', nargs='?', help='y'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3015 Sig('-z', nargs=3, help='z'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3016 Sig('d', help='d', nargs='*'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3017 Sig('e', help='e', nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3018 ]) |
|
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 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3021 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
|
3022 a b b [c] [d [d ...]] e [e ...] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3023 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3024 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3025 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3026 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3027 a a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3028 b b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3029 c c |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3030 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3031 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3032 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3033 -w W [W ...] w |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3034 -x [X [X ...]] x |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3035 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3036 group: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3037 -y [Y] y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3038 -z Z Z Z z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3039 d d |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3040 e e |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3041 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3042 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3043 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3044 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3045 class TestHelpOnlyUserGroups(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3046 """Test basic usage messages""" |
|
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 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3049 argument_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3050 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3051 (Sig('xxxx'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3052 Sig('-x', help='x'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3053 Sig('a', help='a'), |
|
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 (Sig('yyyy'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3056 Sig('b', help='b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3057 Sig('-y', help='y'), |
|
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 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3060 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3061 usage: PROG [-x X] [-y Y] a b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3062 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3063 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3064 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3065 xxxx: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3066 -x X x |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3067 a a |
|
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 yyyy: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3070 b b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3071 -y Y y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3072 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3073 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3074 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3075 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3076 class TestHelpUsageLongProg(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3077 """Test usage messages where the prog is long""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3078 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3079 parser_signature = Sig(prog='P' * 60) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3080 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3081 Sig('-w', metavar='W'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3082 Sig('-x', metavar='X'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3083 Sig('a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3084 Sig('b'), |
|
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 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3087 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3088 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3089 [-h] [-w W] [-x X] a b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3090 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3091 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3092 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3093 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3094 a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3095 b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3096 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3097 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3098 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3099 -w W |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3100 -x X |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3101 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3102 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3103 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3104 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3105 class TestHelpUsageLongProgOptionsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3106 """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
|
3107 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3108 parser_signature = Sig(prog='P' * 60) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3109 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3110 Sig('-w', metavar='W' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3111 Sig('-x', metavar='X' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3112 Sig('-y', metavar='Y' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3113 Sig('-z', metavar='Z' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3114 Sig('a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3115 Sig('b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3116 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3117 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3118 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3119 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3120 [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3121 [-x XXXXXXXXXXXXXXXXXXXXXXXXX] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3122 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3123 a b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3124 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3125 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3126 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3127 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3128 a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3129 b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3130 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3131 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3132 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3133 -w WWWWWWWWWWWWWWWWWWWWWWWWW |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3134 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3135 -y YYYYYYYYYYYYYYYYYYYYYYYYY |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3136 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ |
|
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 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3139 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3140 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3141 class TestHelpUsageLongProgPositionalsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3142 """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
|
3143 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3144 parser_signature = Sig(prog='P' * 60, add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3145 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3146 Sig('a' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3147 Sig('b' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3148 Sig('c' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3149 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3150 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3151 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3152 usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3153 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3154 ccccccccccccccccccccccccc |
|
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 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3157 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3158 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3159 aaaaaaaaaaaaaaaaaaaaaaaaa |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3160 bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3161 ccccccccccccccccccccccccc |
|
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 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3164 |
|
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 class TestHelpUsageOptionalsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3167 """Test usage messages where the optionals wrap""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3168 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3169 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3170 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3171 Sig('-w', metavar='W' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3172 Sig('-x', metavar='X' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3173 Sig('-y', metavar='Y' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3174 Sig('-z', metavar='Z' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3175 Sig('a'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3176 Sig('b'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3177 Sig('c'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3178 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3179 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3180 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3181 usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3182 [-x XXXXXXXXXXXXXXXXXXXXXXXXX] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3183 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3184 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3185 a b c |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3186 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3187 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3188 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3189 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3190 a |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3191 b |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3192 c |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3193 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3194 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3195 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3196 -w WWWWWWWWWWWWWWWWWWWWWWWWW |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3197 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3198 -y YYYYYYYYYYYYYYYYYYYYYYYYY |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3199 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3200 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3201 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3202 |
|
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 class TestHelpUsagePositionalsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3205 """Test usage messages where the positionals wrap""" |
|
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 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3208 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3209 Sig('-x'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3210 Sig('-y'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3211 Sig('-z'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3212 Sig('a' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3213 Sig('b' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3214 Sig('c' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3215 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3216 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3217 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3218 usage: PROG [-h] [-x X] [-y Y] [-z Z] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3219 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3220 ccccccccccccccccccccccccc |
|
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 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3223 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3224 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3225 aaaaaaaaaaaaaaaaaaaaaaaaa |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3226 bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3227 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3228 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3229 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3230 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3231 -x X |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3232 -y Y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3233 -z Z |
|
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 TestHelpUsageOptionalsPositionalsWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3239 """Test usage messages where the optionals and positionals wrap""" |
|
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='PROG') |
|
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('-x', metavar='X' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3244 Sig('-y', metavar='Y' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3245 Sig('-z', metavar='Z' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3246 Sig('a' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3247 Sig('b' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3248 Sig('c' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3249 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3250 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3251 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3252 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3253 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3254 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3255 aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3256 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3257 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3258 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3259 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3260 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3261 aaaaaaaaaaaaaaaaaaaaaaaaa |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3262 bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3263 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3264 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3265 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3266 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3267 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3268 -y YYYYYYYYYYYYYYYYYYYYYYYYY |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3269 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3270 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3271 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3272 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3273 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3274 class TestHelpUsageOptionalsOnlyWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3275 """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
|
3276 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3277 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3278 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3279 Sig('-x', metavar='X' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3280 Sig('-y', metavar='Y' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3281 Sig('-z', metavar='Z' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3282 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3283 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3284 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3285 usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3286 [-y YYYYYYYYYYYYYYYYYYYYYYYYY] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3287 [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ] |
|
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 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3290 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3291 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3292 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3293 -x XXXXXXXXXXXXXXXXXXXXXXXXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3294 -y YYYYYYYYYYYYYYYYYYYYYYYYY |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3295 -z ZZZZZZZZZZZZZZZZZZZZZZZZZ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3296 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3297 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3298 |
|
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 class TestHelpUsagePositionalsOnlyWrap(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3301 """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
|
3302 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3303 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3304 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3305 Sig('a' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3306 Sig('b' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3307 Sig('c' * 25), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3308 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3309 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3310 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3311 usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3312 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3313 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3314 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3315 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3316 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3317 aaaaaaaaaaaaaaaaaaaaaaaaa |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3318 bbbbbbbbbbbbbbbbbbbbbbbbb |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3319 ccccccccccccccccccccccccc |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3320 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3321 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3322 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3323 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3324 class TestHelpVariableExpansion(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3325 """Test that variables are expanded properly in help messages""" |
|
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 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3328 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3329 Sig('-x', type=int, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3330 help='x %(prog)s %(default)s %(type)s %%'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3331 Sig('-y', action='store_const', default=42, const='XXX', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3332 help='y %(prog)s %(default)s %(const)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3333 Sig('--foo', choices='abc', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3334 help='foo %(prog)s %(default)s %(choices)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3335 Sig('--bar', default='baz', choices=[1, 2], metavar='BBB', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3336 help='bar %(prog)s %(default)s %(dest)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3337 Sig('spam', help='spam %(prog)s %(default)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3338 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
|
3339 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3340 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3341 (Sig('group'), [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3342 Sig('-a', help='a %(prog)s %(default)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3343 Sig('-b', default=-1, help='b %(prog)s %(default)s'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3344 ]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3345 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3346 usage = ('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3347 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
|
3348 spam badger |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3349 ''') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3350 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3351 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3352 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3353 spam spam PROG None |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3354 badger badger PROG 0.5 |
|
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 -x X x PROG None int % |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3359 -y y PROG 42 XXX |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3360 --foo {a,b,c} foo PROG None a, b, c |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3361 --bar BBB bar PROG baz bar |
|
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 group: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3364 -a A a PROG None |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3365 -b B b PROG -1 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3366 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3367 version = '' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3370 class TestHelpVariableExpansionUsageSupplied(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3371 """Test that variables are expanded properly when usage= is present""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3372 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3373 parser_signature = Sig(prog='PROG', usage='%(prog)s FOO') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3374 argument_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3375 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3376 usage = ('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3377 usage: PROG FOO |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3378 ''') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3379 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3380 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3381 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3382 -h, --help show this help message and exit |
|
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 version = '' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3387 class TestHelpVariableExpansionNoArguments(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3388 """Test that variables are expanded properly with no arguments""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3389 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3390 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3391 argument_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3392 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3393 usage = ('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3394 usage: PROG |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3395 ''') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3396 help = usage |
|
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 TestHelpSuppressUsage(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3401 """Test that items can be suppressed in usage messages""" |
|
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', usage=argparse.SUPPRESS) |
|
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('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3406 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3407 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3408 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3409 help = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3410 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3411 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3412 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3413 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3414 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3415 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3416 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3417 usage = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3418 version = '' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3421 class TestHelpSuppressOptional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3422 """Test that optional arguments can be suppressed in help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3423 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3424 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3425 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3426 Sig('--foo', help=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3427 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3428 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3429 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3430 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3431 usage: PROG spam |
|
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 help = usage + '''\ |
|
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 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3436 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3437 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3438 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3439 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3440 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3441 class TestHelpSuppressOptionalGroup(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3442 """Test that optional groups can be suppressed in help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3443 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3444 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3445 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3446 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3447 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3448 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3449 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3450 (Sig('group'), [Sig('--bar', help=argparse.SUPPRESS)]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3451 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3452 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3453 usage: PROG [-h] [--foo FOO] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3454 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3455 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3456 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3457 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3458 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3459 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3460 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3461 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3462 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3463 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3464 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3465 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3466 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3467 class TestHelpSuppressPositional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3468 """Test that positional arguments can be suppressed in help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3469 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3470 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3471 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3472 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3473 Sig('spam', help=argparse.SUPPRESS), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3474 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3475 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3476 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3477 usage: PROG [-h] [--foo FOO] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3478 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3479 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3480 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3481 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3482 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3483 --foo FOO foo help |
|
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 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3486 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3487 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3488 class TestHelpRequiredOptional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3489 """Test that required options don't look optional""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3490 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3491 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3492 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3493 Sig('--foo', required=True, help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3494 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3495 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3496 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3497 usage: PROG [-h] --foo FOO |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3498 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3499 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3500 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3501 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3502 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3503 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3504 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3505 version = '' |
|
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 class TestHelpAlternatePrefixChars(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3509 """Test that options display with different prefix characters""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3510 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3511 parser_signature = Sig(prog='PROG', prefix_chars='^;', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3512 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3513 Sig('^^foo', action='store_true', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3514 Sig(';b', ';;bar', help='bar help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3515 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3516 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3517 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3518 usage: PROG [^^foo] [;b BAR] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3519 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3520 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3521 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3522 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3523 ^^foo foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3524 ;b BAR, ;;bar BAR bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3525 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3526 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3527 |
|
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 class TestHelpNoHelpOptional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3530 """Test that the --help argument can be suppressed help messages""" |
|
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 parser_signature = Sig(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3533 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3534 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3535 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3536 ] |
|
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 FOO] spam |
|
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 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3544 spam spam help |
|
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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3547 --foo FOO foo help |
|
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 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3550 |
|
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 class TestHelpVersionOptional(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3553 """Test that the --version argument can be suppressed help messages""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3554 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3555 parser_signature = Sig(prog='PROG', version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3556 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3557 Sig('--foo', help='foo help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3558 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3559 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3560 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3561 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3562 usage: PROG [-h] [-v] [--foo FOO] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3563 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3564 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3565 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3566 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3567 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3568 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3569 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3570 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3571 -v, --version show program's version number and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3572 --foo FOO foo help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3573 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3574 version = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3575 1.0 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3576 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3577 |
|
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 class TestHelpNone(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3580 """Test that no errors occur if no help is specified""" |
|
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 parser_signature = Sig(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3583 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3584 Sig('--foo'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3585 Sig('spam'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3586 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3587 argument_group_signatures = [] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3588 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3589 usage: PROG [-h] [--foo FOO] spam |
|
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 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3592 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3593 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3594 spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3595 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3596 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3597 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3598 --foo FOO |
|
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 TestHelpTupleMetavar(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3604 """Test specifying metavar as a tuple""" |
|
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('-w', help='w', nargs='+', metavar=('W1', 'W2')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3609 Sig('-x', help='x', nargs='*', metavar=('X1', 'X2')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3610 Sig('-y', help='y', nargs=3, metavar=('Y1', 'Y2', 'Y3')), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3611 Sig('-z', help='z', nargs='?', metavar=('Z1', )), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3612 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3613 argument_group_signatures = [] |
|
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] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] \ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3616 [-z [Z1]] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3617 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3618 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3619 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3620 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3621 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3622 -w W1 [W2 ...] w |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3623 -x [X1 [X2 ...]] x |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3624 -y Y1 Y2 Y3 y |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3625 -z [Z1] z |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3626 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3627 version = '' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3630 class TestHelpRawText(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3631 """Test the RawTextHelpFormatter""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3632 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3633 parser_signature = Sig( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3634 prog='PROG', formatter_class=argparse.RawTextHelpFormatter, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3635 description='Keep the formatting\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3636 ' exactly as it is written\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3637 '\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3638 'here\n') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3639 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3640 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3641 Sig('--foo', help=' foo help should also\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3642 'appear as given here'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3643 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3644 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3645 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3646 (Sig('title', description=' This text\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3647 ' should be indented\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3648 ' exactly like it is here\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3649 [Sig('--bar', help='bar help')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3650 ] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3651 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3652 usage: PROG [-h] [--foo FOO] [--bar BAR] spam |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3653 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3654 help = usage + '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3655 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3656 Keep the formatting |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3657 exactly as it is written |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3658 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3659 here |
|
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 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3662 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3663 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3664 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3665 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3666 --foo FOO foo help should also |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3667 appear as given here |
|
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 title: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3670 This text |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3671 should be indented |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3672 exactly like it is here |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3673 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3674 --bar BAR bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3675 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3676 version = '' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3679 class TestHelpRawDescription(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3680 """Test the RawTextHelpFormatter""" |
|
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 parser_signature = Sig( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3683 prog='PROG', formatter_class=argparse.RawDescriptionHelpFormatter, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3684 description='Keep the formatting\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3685 ' exactly as it is written\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3686 '\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3687 'here\n') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3688 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3689 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3690 Sig('--foo', help=' foo help should not\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3691 ' retain this odd formatting'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3692 Sig('spam', help='spam help'), |
|
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 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3695 (Sig('title', description=' This text\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3696 ' should be indented\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3697 ' exactly like it is here\n'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3698 [Sig('--bar', help='bar help')]), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3699 ] |
|
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 [-h] [--foo FOO] [--bar BAR] 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 Keep the formatting |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3706 exactly as it is written |
|
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 here |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3709 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3710 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3711 spam spam help |
|
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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3714 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3715 --foo FOO foo help should not retain this odd formatting |
|
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 title: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3718 This text |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3719 should be indented |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3720 exactly like it is here |
|
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 --bar BAR bar help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3723 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3724 version = '' |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3727 class TestHelpArgumentDefaults(HelpTestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3728 """Test the ArgumentDefaultsHelpFormatter""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3729 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3730 parser_signature = Sig( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3731 prog='PROG', formatter_class=argparse.ArgumentDefaultsHelpFormatter, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3732 description='description') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3733 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3734 argument_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3735 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
|
3736 Sig('--bar', action='store_true', help='bar help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3737 Sig('spam', help='spam help'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3738 Sig('badger', nargs='?', default='wooden', help='badger help'), |
|
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 argument_group_signatures = [ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3741 (Sig('title', description='description'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3742 [Sig('--baz', type=int, default=42, help='baz help')]), |
|
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 usage = '''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3745 usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3746 ''' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3747 help = usage + '''\ |
|
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 description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3750 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3751 positional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3752 spam spam help |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3753 badger badger help (default: wooden) |
|
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 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3756 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3757 --foo FOO foo help - oh and by the way, None |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3758 --bar bar help (default: False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3759 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3760 title: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3761 description |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3762 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3763 --baz BAZ baz help (default: 42) |
|
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 version = '' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3766 |
|
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
|
3767 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
|
3768 """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
|
3769 |
|
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
|
3770 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
|
3771 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
|
3772 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
|
3773 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
|
3774 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
|
3775 ''' |
|
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
|
3776 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
|
3777 |
|
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
|
3778 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
|
3779 |
|
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
|
3780 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
|
3781 -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
|
3782 -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
|
3783 ''' |
|
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
|
3784 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
|
3785 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3786 # ===================================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3787 # Optional/Positional constructor tests |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3790 class TestInvalidArgumentConstructors(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3791 """Test a bunch of invalid Argument constructors""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3792 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3793 def assertTypeError(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3794 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3795 self.assertRaises(TypeError, parser.add_argument, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3796 *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3797 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3798 def assertValueError(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3799 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3800 self.assertRaises(ValueError, parser.add_argument, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3801 *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3802 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3803 def test_invalid_keyword_arguments(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3804 self.assertTypeError('-x', bar=None) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3805 self.assertTypeError('-y', callback='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3806 self.assertTypeError('-y', callback_args=()) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3807 self.assertTypeError('-y', callback_kwargs={}) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3808 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3809 def test_missing_destination(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3810 self.assertTypeError() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3811 for action in ['append', 'store']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3812 self.assertTypeError(action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3813 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3814 def test_invalid_option_strings(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3815 self.assertValueError('--') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3816 self.assertValueError('---') |
|
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 def test_invalid_type(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3819 self.assertValueError('--foo', type='int') |
|
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 def test_invalid_action(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3822 self.assertValueError('-x', action='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3823 self.assertValueError('foo', action='baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3824 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3825 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3826 parser.add_argument("--foo", action="store-true") |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3827 except ValueError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3828 e = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3829 expected = 'unknown action' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3830 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
|
3831 self.assertTrue(expected in str(e), msg) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3832 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3833 def test_multiple_dest(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3834 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3835 parser.add_argument(dest='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3836 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3837 parser.add_argument('bar', dest='baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3838 except ValueError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3839 e = sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3840 expected = 'dest supplied twice for positional argument' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3841 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
|
3842 self.assertTrue(expected in str(e), msg) |
|
59267
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 def test_no_argument_actions(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3845 for action in ['store_const', 'store_true', 'store_false', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3846 'append_const', 'count']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3847 for attrs in [dict(type=int), dict(nargs='+'), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3848 dict(choices='ab')]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3849 self.assertTypeError('-x', action=action, **attrs) |
|
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 def test_no_argument_no_const_actions(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3852 # options with zero arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3853 for action in ['store_true', 'store_false', 'count']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3854 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3855 # const is always disallowed |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3856 self.assertTypeError('-x', const='foo', action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3857 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3858 # nargs is always disallowed |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3859 self.assertTypeError('-x', nargs='*', action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3860 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3861 def test_more_than_one_argument_actions(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3862 for action in ['store', 'append']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3863 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3864 # nargs=0 is disallowed |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3865 self.assertValueError('-x', nargs=0, action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3866 self.assertValueError('spam', nargs=0, action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3867 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3868 # const is disallowed with non-optional arguments |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3869 for nargs in [1, '*', '+']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3870 self.assertValueError('-x', const='foo', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3871 nargs=nargs, action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3872 self.assertValueError('spam', const='foo', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3873 nargs=nargs, action=action) |
|
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 def test_required_const_actions(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3876 for action in ['store_const', 'append_const']: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3877 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3878 # nargs is always disallowed |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3879 self.assertTypeError('-x', nargs='+', action=action) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3880 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3881 def test_parsers_action_missing_params(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3882 self.assertTypeError('command', action='parsers') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3883 self.assertTypeError('command', action='parsers', prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3884 self.assertTypeError('command', action='parsers', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3885 parser_class=argparse.ArgumentParser) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3886 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3887 def test_required_positional(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3888 self.assertTypeError('foo', required=True) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3889 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3890 def test_user_defined_action(self): |
|
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 class Success(Exception): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3893 pass |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3894 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3895 class Action(object): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3896 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3897 def __init__(self, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3898 option_strings, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3899 dest, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3900 const, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3901 default, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3902 required=False): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3903 if dest == 'spam': |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3904 if const is Success: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3905 if default is Success: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3906 raise Success() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3907 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3908 def __call__(self, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3909 pass |
|
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 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3912 self.assertRaises(Success, parser.add_argument, '--spam', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3913 action=Action, default=Success, const=Success) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3914 self.assertRaises(Success, parser.add_argument, 'spam', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3915 action=Action, default=Success, const=Success) |
|
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 # ================================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3918 # Actions returned by add_argument |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3919 # ================================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3920 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3921 class TestActionsReturned(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3922 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3923 def test_dest(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3924 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3925 action = parser.add_argument('--foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3926 self.assertEqual(action.dest, 'foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3927 action = parser.add_argument('-b', '--bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3928 self.assertEqual(action.dest, 'bar') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3929 action = parser.add_argument('-x', '-y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3930 self.assertEqual(action.dest, 'x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3931 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3932 def test_misc(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3933 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3934 action = parser.add_argument('--foo', nargs='?', const=42, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3935 default=84, type=int, choices=[1, 2], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3936 help='FOO', metavar='BAR', dest='baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3937 self.assertEqual(action.nargs, '?') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3938 self.assertEqual(action.const, 42) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3939 self.assertEqual(action.default, 84) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3940 self.assertEqual(action.type, int) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3941 self.assertEqual(action.choices, [1, 2]) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3942 self.assertEqual(action.help, 'FOO') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3943 self.assertEqual(action.metavar, 'BAR') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3944 self.assertEqual(action.dest, 'baz') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3945 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3946 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3947 # ================================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3948 # Argument conflict handling tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3949 # ================================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3950 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3951 class TestConflictHandling(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3952 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3953 def test_bad_type(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3954 self.assertRaises(ValueError, argparse.ArgumentParser, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3955 conflict_handler='foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3956 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3957 def test_conflict_error(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3958 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3959 parser.add_argument('-x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3960 self.assertRaises(argparse.ArgumentError, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3961 parser.add_argument, '-x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3962 parser.add_argument('--spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3963 self.assertRaises(argparse.ArgumentError, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3964 parser.add_argument, '--spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3965 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3966 def test_resolve_error(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3967 get_parser = argparse.ArgumentParser |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3968 parser = get_parser(prog='PROG', conflict_handler='resolve') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3969 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3970 parser.add_argument('-x', help='OLD X') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3971 parser.add_argument('-x', help='NEW X') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3972 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3973 usage: PROG [-h] [-x X] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3974 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3975 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3976 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3977 -x X NEW X |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3978 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3979 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3980 parser.add_argument('--spam', metavar='OLD_SPAM') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3981 parser.add_argument('--spam', metavar='NEW_SPAM') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3982 self.assertEqual(parser.format_help(), textwrap.dedent('''\ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3983 usage: PROG [-h] [-x X] [--spam NEW_SPAM] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3984 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3985 optional arguments: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3986 -h, --help show this help message and exit |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3987 -x X NEW X |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3988 --spam NEW_SPAM |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3989 ''')) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3990 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3991 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3992 # ============================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3993 # Help and Version option tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3994 # ============================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3995 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3996 class TestOptionalsHelpVersionActions(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3997 """Test the help and version actions""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3998 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
3999 def _get_error(self, func, *args, **kwargs): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4000 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4001 func(*args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4002 except ArgumentParserError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4003 return sys.exc_info()[1] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4004 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4005 self.assertRaises(ArgumentParserError, func, *args, **kwargs) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4006 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4007 def assertPrintHelpExit(self, parser, args_str): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4008 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4009 parser.format_help(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4010 self._get_error(parser.parse_args, args_str.split()).stdout) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4011 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4012 def assertPrintVersionExit(self, parser, args_str): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4013 self.assertEqual( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4014 parser.format_version(), |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4015 self._get_error(parser.parse_args, args_str.split()).stderr) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4016 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4017 def assertArgumentParserError(self, parser, *args): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4018 self.assertRaises(ArgumentParserError, parser.parse_args, args) |
|
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 def test_version(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4021 parser = ErrorRaisingArgumentParser(version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4022 self.assertPrintHelpExit(parser, '-h') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4023 self.assertPrintHelpExit(parser, '--help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4024 self.assertPrintVersionExit(parser, '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4025 self.assertPrintVersionExit(parser, '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4026 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4027 def test_version_format(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4028 parser = ErrorRaisingArgumentParser(prog='PPP', version='%(prog)s 3.5') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4029 msg = self._get_error(parser.parse_args, ['-v']).stderr |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4030 self.assertEqual('PPP 3.5\n', msg) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4031 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4032 def test_version_no_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4033 parser = ErrorRaisingArgumentParser(add_help=False, version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4034 self.assertArgumentParserError(parser, '-h') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4035 self.assertArgumentParserError(parser, '--help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4036 self.assertPrintVersionExit(parser, '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4037 self.assertPrintVersionExit(parser, '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4038 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4039 def test_version_action(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4040 parser = ErrorRaisingArgumentParser(prog='XXX') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4041 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
|
4042 msg = self._get_error(parser.parse_args, ['-V']).stderr |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4043 self.assertEqual('XXX 3.7\n', msg) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4044 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4045 def test_no_help(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4046 parser = ErrorRaisingArgumentParser(add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4047 self.assertArgumentParserError(parser, '-h') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4048 self.assertArgumentParserError(parser, '--help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4049 self.assertArgumentParserError(parser, '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4050 self.assertArgumentParserError(parser, '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4051 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4052 def test_alternate_help_version(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4053 parser = ErrorRaisingArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4054 parser.add_argument('-x', action='help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4055 parser.add_argument('-y', action='version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4056 self.assertPrintHelpExit(parser, '-x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4057 self.assertPrintVersionExit(parser, '-y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4058 self.assertArgumentParserError(parser, '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4059 self.assertArgumentParserError(parser, '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4060 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4061 def test_help_version_extra_arguments(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4062 parser = ErrorRaisingArgumentParser(version='1.0') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4063 parser.add_argument('-x', action='store_true') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4064 parser.add_argument('y') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4065 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4066 # try all combinations of valid prefixes and suffixes |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4067 valid_prefixes = ['', '-x', 'foo', '-x bar', 'baz -x'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4068 valid_suffixes = valid_prefixes + ['--bad-option', 'foo bar baz'] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4069 for prefix in valid_prefixes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4070 for suffix in valid_suffixes: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4071 format = '%s %%s %s' % (prefix, suffix) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4072 self.assertPrintHelpExit(parser, format % '-h') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4073 self.assertPrintHelpExit(parser, format % '--help') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4074 self.assertPrintVersionExit(parser, format % '-v') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4075 self.assertPrintVersionExit(parser, format % '--version') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4076 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4077 |
|
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 # str() and repr() tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4080 # ====================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4081 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4082 class TestStrings(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4083 """Test str() and repr() on Optionals and Positionals""" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4084 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4085 def assertStringEqual(self, obj, result_string): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4086 for func in [str, repr]: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4087 self.assertEqual(func(obj), result_string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4088 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4089 def test_optional(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4090 option = argparse.Action( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4091 option_strings=['--foo', '-a', '-b'], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4092 dest='b', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4093 type='int', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4094 nargs='+', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4095 default=42, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4096 choices=[1, 2, 3], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4097 help='HELP', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4098 metavar='METAVAR') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4099 string = ( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4100 "Action(option_strings=['--foo', '-a', '-b'], dest='b', " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4101 "nargs='+', const=None, default=42, type='int', " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4102 "choices=[1, 2, 3], help='HELP', metavar='METAVAR')") |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4103 self.assertStringEqual(option, string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4104 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4105 def test_argument(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4106 argument = argparse.Action( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4107 option_strings=[], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4108 dest='x', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4109 type=float, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4110 nargs='?', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4111 default=2.5, |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4112 choices=[0.5, 1.5, 2.5], |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4113 help='H HH H', |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4114 metavar='MV MV MV') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4115 string = ( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4116 "Action(option_strings=[], dest='x', nargs='?', " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4117 "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
|
4118 "help='H HH H', metavar='MV MV MV')" % float) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4119 self.assertStringEqual(argument, string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4120 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4121 def test_namespace(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4122 ns = argparse.Namespace(foo=42, bar='spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4123 string = "Namespace(bar='spam', foo=42)" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4124 self.assertStringEqual(ns, string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4125 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4126 def test_parser(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4127 parser = argparse.ArgumentParser(prog='PROG') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4128 string = ( |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4129 "ArgumentParser(prog='PROG', usage=None, description=None, " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4130 "version=None, formatter_class=%r, conflict_handler='error', " |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4131 "add_help=True)" % argparse.HelpFormatter) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4132 self.assertStringEqual(parser, string) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4133 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4134 # =============== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4135 # Namespace tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4136 # =============== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4137 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4138 class TestNamespace(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4139 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4140 def test_constructor(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4141 ns = argparse.Namespace() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4142 self.assertRaises(AttributeError, getattr, ns, 'x') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4143 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4144 ns = argparse.Namespace(a=42, b='spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4145 self.assertEqual(ns.a, 42) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4146 self.assertEqual(ns.b, 'spam') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4147 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4148 def test_equality(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4149 ns1 = argparse.Namespace(a=1, b=2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4150 ns2 = argparse.Namespace(b=2, a=1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4151 ns3 = argparse.Namespace(a=1) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4152 ns4 = argparse.Namespace(b=2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4153 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4154 self.assertEqual(ns1, ns2) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4155 self.assertNotEqual(ns1, ns3) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4156 self.assertNotEqual(ns1, ns4) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4157 self.assertNotEqual(ns2, ns3) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4158 self.assertNotEqual(ns2, ns4) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4159 self.assertTrue(ns1 != ns3) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4160 self.assertTrue(ns1 != ns4) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4161 self.assertTrue(ns2 != ns3) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4162 self.assertTrue(ns2 != ns4) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4163 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4164 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4165 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4166 # File encoding tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4167 # =================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4168 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4169 class TestEncoding(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4170 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4171 def _test_module_encoding(self, path): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4172 path, _ = os.path.splitext(path) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4173 path += ".py" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4174 codecs.open(path, 'r', 'utf8').read() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4175 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4176 def test_argparse_module_encoding(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4177 self._test_module_encoding(argparse.__file__) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4178 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4179 def test_test_argparse_module_encoding(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4180 self._test_module_encoding(__file__) |
|
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 # ArgumentError 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 TestArgumentError(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_argument_error(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4189 msg = "my error here" |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4190 error = argparse.ArgumentError(None, msg) |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4191 self.assertEqual(str(error), msg) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4192 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4193 # ======================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4194 # ArgumentTypeError tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4195 # ======================= |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4196 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4197 class TestArgumentError(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4198 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4199 def test_argument_type_error(self): |
|
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 spam(string): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4202 raise argparse.ArgumentTypeError('spam!') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4203 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4204 parser = ErrorRaisingArgumentParser(prog='PROG', add_help=False) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4205 parser.add_argument('x', type=spam) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4206 try: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4207 parser.parse_args(['XXX']) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4208 except ArgumentParserError: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4209 expected = 'usage: PROG x\nPROG: error: argument x: spam!\n' |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4210 msg = sys.exc_info()[1].stderr |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4211 self.assertEqual(expected, msg) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4212 else: |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4213 self.fail() |
|
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 # ====================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4216 # parse_known_args tests |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4217 # ====================== |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4218 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4219 class TestParseKnownArgs(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4220 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4221 def test_optionals(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4222 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4223 parser.add_argument('--foo') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4224 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
|
4225 self.assertEqual(NS(foo='F'), args) |
|
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4226 self.assertEqual(['--bar', '--baz'], extras) |
|
59267
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 def test_mixed(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4229 parser = argparse.ArgumentParser() |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4230 parser.add_argument('-v', nargs='?', const=1, type=int) |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4231 parser.add_argument('--spam', action='store_false') |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4232 parser.add_argument('badger') |
|
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 argv = ["B", "C", "--foo", "-v", "3", "4"] |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4235 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
|
4236 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
|
4237 self.assertEqual(["C", "--foo", "4"], extras) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4238 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4239 # ============================ |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4240 # from argparse import * tests |
|
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 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4243 class TestImportStar(TestCase): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4244 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4245 def test(self): |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4246 for name in argparse.__all__: |
|
59273
83e7ee185162
convert deprecated fail* methods to assert* variants
Benjamin Peterson <benjamin@python.org>
parents:
59272
diff
changeset
|
4247 self.assertTrue(hasattr(argparse, name)) |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4248 |
|
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
|
4249 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
|
4250 # 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
|
4251 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
|
4252 ('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
|
4253 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
|
4254 ('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
|
4255 DeprecationWarning)): |
|
59271
4b7b6953cd06
prevent warning filter adjustment from altering other tests
Benjamin Peterson <benjamin@python.org>
parents:
59270
diff
changeset
|
4256 test_support.run_unittest(__name__) |
| 59284 | 4257 # Remove global references to avoid looking like we have refleaks. |
| 4258 RFile.seen = {} | |
| 4259 WFile.seen = set() | |
| 4260 | |
|
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
|
4261 |
|
59267
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4262 |
|
4ca83c5b8551
set svn:eol-style
Benjamin Peterson <benjamin@python.org>
parents:
59257
diff
changeset
|
4263 if __name__ == '__main__': |
|
59272
137a21fcd385
use test_main() in __main__ section
Benjamin Peterson <benjamin@python.org>
parents:
59271
diff
changeset
|
4264 test_main() |
