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

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 33bdd0a985b9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1 #
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
2 # Test suite for Optik. Supplied by Johannes Gijsbers
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
3 # (taradino@softhome.net) -- translated from the original Optik
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
4 # test suite to this PyUnit-based version.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
5 #
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
6 # $Id$
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
7 #
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
8
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
9 import sys
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
10 import os
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
11 import re
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
12 import copy
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
13 import unittest
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
14
42501
f6069f9dd52d SF patch# 1770008 by Christian Heimes (plus some extras).
Guido van Rossum <guido@python.org>
parents: 42161
diff changeset
15 from io import StringIO
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
16 from test import support
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
17
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
18
59615
b93cfafcdcad Merged revisions 78093 via svnmerge from
Georg Brandl <georg@python.org>
parents: 59613
diff changeset
19 from optparse import make_option, Option, \
b93cfafcdcad Merged revisions 78093 via svnmerge from
Georg Brandl <georg@python.org>
parents: 59613
diff changeset
20 TitledHelpFormatter, OptionParser, OptionGroup, \
b93cfafcdcad Merged revisions 78093 via svnmerge from
Georg Brandl <georg@python.org>
parents: 59613
diff changeset
21 SUPPRESS_USAGE, OptionError, OptionConflictError, \
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
22 BadOptionError, OptionValueError, Values
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
23 from optparse import _match_abbrev
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
24 from optparse import _parse_num
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
25
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
26 retype = type(re.compile(''))
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
27
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
28 class InterceptedError(Exception):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
29 def __init__(self,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
30 error_message=None,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
31 exit_status=None,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
32 exit_message=None):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
33 self.error_message = error_message
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
34 self.exit_status = exit_status
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
35 self.exit_message = exit_message
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
36
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
37 def __str__(self):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
38 return self.error_message or self.exit_message or "intercepted error"
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
39
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
40 class InterceptingOptionParser(OptionParser):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
41 def exit(self, status=0, msg=None):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
42 raise InterceptedError(exit_status=status, exit_message=msg)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
43
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
44 def error(self, msg):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
45 raise InterceptedError(error_message=msg)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
46
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
47
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
48 class BaseTest(unittest.TestCase):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
49 def assertParseOK(self, args, expected_opts, expected_positional_args):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
50 """Assert the options are what we expected when parsing arguments.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
51
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
52 Otherwise, fail with a nicely formatted message.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
53
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
54 Keyword arguments:
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
55 args -- A list of arguments to parse with OptionParser.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
56 expected_opts -- The options expected.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
57 expected_positional_args -- The positional arguments expected.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
58
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
59 Returns the options and positional args for further testing.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
60 """
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
61
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
62 (options, positional_args) = self.parser.parse_args(args)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
63 optdict = vars(options)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
64
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
65 self.assertEqual(optdict, expected_opts,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
66 """
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
67 Options are %(optdict)s.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
68 Should be %(expected_opts)s.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
69 Args were %(args)s.""" % locals())
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
70
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
71 self.assertEqual(positional_args, expected_positional_args,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
72 """
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
73 Positional arguments are %(positional_args)s.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
74 Should be %(expected_positional_args)s.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
75 Args were %(args)s.""" % locals ())
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
76
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
77 return (options, positional_args)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
78
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
79 def assertRaises(self,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
80 func,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
81 args,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
82 kwargs,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
83 expected_exception,
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
84 expected_message):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
85 """
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
86 Assert that the expected exception is raised when calling a
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
87 function, and that the right error message is included with
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
88 that exception.
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
89
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
90 Arguments:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
91 func -- the function to call
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
92 args -- positional arguments to `func`
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
93 kwargs -- keyword arguments to `func`
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
94 expected_exception -- exception that should be raised
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
95 expected_message -- expected exception message (or pattern
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
96 if a compiled regex object)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
97
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
98 Returns the exception raised for further testing.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
99 """
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
100 if args is None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
101 args = ()
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
102 if kwargs is None:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
103 kwargs = {}
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
104
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
105 try:
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
106 func(*args, **kwargs)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
107 except expected_exception as err:
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
108 actual_message = str(err)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
109 if isinstance(expected_message, retype):
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
110 self.assertTrue(expected_message.search(actual_message),
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
111 """\
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
112 expected exception message pattern:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
113 /%s/
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
114 actual exception message:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
115 '''%s'''
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
116 """ % (expected_message.pattern, actual_message))
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
117 else:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
118 self.assertEqual(actual_message,
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
119 expected_message,
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
120 """\
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
121 expected exception message:
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
122 '''%s'''
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
123 actual exception message:
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
124 '''%s'''
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
125 """ % (expected_message, actual_message))
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
126
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
127 return err
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
128 else:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
129 self.fail("""expected exception %(expected_exception)s not raised
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
130 called %(func)r
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
131 with args %(args)r
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
132 and kwargs %(kwargs)r
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
133 """ % locals ())
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
134
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
135
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
136 # -- Assertions used in more than one class --------------------
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
137
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
138 def assertParseFail(self, cmdline_args, expected_output):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
139 """
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
140 Assert the parser fails with the expected message. Caller
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
141 must ensure that self.parser is an InterceptingOptionParser.
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
142 """
32872
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
143 try:
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
144 self.parser.parse_args(cmdline_args)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
145 except InterceptedError as err:
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
146 self.assertEqual(err.error_message, expected_output)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
147 else:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
148 self.assertFalse("expected parse failure")
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
149
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
150 def assertOutput(self,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
151 cmdline_args,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
152 expected_output,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
153 expected_status=0,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
154 expected_error=None):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
155 """Assert the parser prints the expected output on stdout."""
32872
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
156 save_stdout = sys.stdout
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
157 try:
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
158 try:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
159 sys.stdout = StringIO()
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
160 self.parser.parse_args(cmdline_args)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
161 finally:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
162 output = sys.stdout.getvalue()
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
163 sys.stdout = save_stdout
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
164
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 39442
diff changeset
165 except InterceptedError as err:
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
166 self.assertTrue(
41986
6464cc638faa Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
167 isinstance(output, str),
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
168 "expected output to be an ordinary string, not %r"
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
169 % type(output))
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
170
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
171 if output != expected_output:
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
172 self.fail("expected: \n'''\n" + expected_output +
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
173 "'''\nbut got \n'''\n" + output + "'''")
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
174 self.assertEqual(err.exit_status, expected_status)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
175 self.assertEqual(err.exit_message, expected_error)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
176 else:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
177 self.assertFalse("expected parser.exit()")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
178
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
179 def assertTypeError(self, func, expected_message, *args):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
180 """Assert that TypeError is raised when executing func."""
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
181 self.assertRaises(func, args, None, TypeError, expected_message)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
182
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
183 def assertHelp(self, parser, expected_help):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
184 actual_help = parser.format_help()
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
185 if actual_help != expected_help:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
186 raise self.failureException(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
187 'help text failure; expected:\n"' +
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
188 expected_help + '"; got:\n"' +
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
189 actual_help + '"\n')
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
190
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
191 # -- Test make_option() aka Option -------------------------------------
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
192
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
193 # It's not necessary to test correct options here. All the tests in the
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
194 # parser.parse_args() section deal with those, because they're needed
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
195 # there.
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
196
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
197 class TestOptionChecks(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
198 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
199 self.parser = OptionParser(usage=SUPPRESS_USAGE)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
200
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
201 def assertOptionError(self, expected_message, args=[], kwargs={}):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
202 self.assertRaises(make_option, args, kwargs,
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
203 OptionError, expected_message)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
204
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
205 def test_opt_string_empty(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
206 self.assertTypeError(make_option,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
207 "at least one option string must be supplied")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
208
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
209 def test_opt_string_too_short(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
210 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
211 "invalid option string 'b': must be at least two characters long",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
212 ["b"])
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
213
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
214 def test_opt_string_short_invalid(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
215 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
216 "invalid short option string '--': must be "
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
217 "of the form -x, (x any non-dash char)",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
218 ["--"])
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
219
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
220 def test_opt_string_long_invalid(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
221 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
222 "invalid long option string '---': "
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
223 "must start with --, followed by non-dash",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
224 ["---"])
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
225
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
226 def test_attr_invalid(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
227 self.assertOptionError(
38464
e989ee5d404a ("Forward-port" of r46506)
Armin Rigo <arigo@tunes.org>
parents: 37929
diff changeset
228 "option -b: invalid keyword arguments: bar, foo",
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
229 ["-b"], {'foo': None, 'bar': None})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
230
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
231 def test_action_invalid(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
232 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
233 "option -b: invalid action: 'foo'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
234 ["-b"], {'action': 'foo'})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
235
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
236 def test_type_invalid(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
237 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
238 "option -b: invalid option type: 'foo'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
239 ["-b"], {'type': 'foo'})
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
240 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
241 "option -b: invalid option type: 'tuple'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
242 ["-b"], {'type': tuple})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
243
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
244 def test_no_type_for_action(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
245 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
246 "option -b: must not supply a type for action 'count'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
247 ["-b"], {'action': 'count', 'type': 'int'})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
248
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
249 def test_no_choices_list(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
250 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
251 "option -b/--bad: must supply a list of "
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
252 "choices for type 'choice'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
253 ["-b", "--bad"], {'type': "choice"})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
254
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
255 def test_bad_choices_list(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
256 typename = type('').__name__
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
257 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
258 "option -b/--bad: choices must be a list of "
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
259 "strings ('%s' supplied)" % typename,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
260 ["-b", "--bad"],
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
261 {'type': "choice", 'choices':"bad choices"})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
262
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
263 def test_no_choices_for_type(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
264 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
265 "option -b: must not supply choices for type 'int'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
266 ["-b"], {'type': 'int', 'choices':"bad"})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
267
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
268 def test_no_const_for_action(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
269 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
270 "option -b: 'const' must not be supplied for action 'store'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
271 ["-b"], {'action': 'store', 'const': 1})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
272
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
273 def test_no_nargs_for_action(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
274 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
275 "option -b: 'nargs' must not be supplied for action 'count'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
276 ["-b"], {'action': 'count', 'nargs': 2})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
277
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
278 def test_callback_not_callable(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
279 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
280 "option -b: callback not callable: 'foo'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
281 ["-b"], {'action': 'callback',
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
282 'callback': 'foo'})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
283
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
284 def dummy(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
285 pass
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
286
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
287 def test_callback_args_no_tuple(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
288 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
289 "option -b: callback_args, if supplied, "
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
290 "must be a tuple: not 'foo'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
291 ["-b"], {'action': 'callback',
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
292 'callback': self.dummy,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
293 'callback_args': 'foo'})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
294
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
295 def test_callback_kwargs_no_dict(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
296 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
297 "option -b: callback_kwargs, if supplied, "
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
298 "must be a dict: not 'foo'",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
299 ["-b"], {'action': 'callback',
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
300 'callback': self.dummy,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
301 'callback_kwargs': 'foo'})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
302
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
303 def test_no_callback_for_action(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
304 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
305 "option -b: callback supplied ('foo') for non-callback option",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
306 ["-b"], {'action': 'store',
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
307 'callback': 'foo'})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
308
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
309 def test_no_callback_args_for_action(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
310 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
311 "option -b: callback_args supplied for non-callback option",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
312 ["-b"], {'action': 'store',
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
313 'callback_args': 'foo'})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
314
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
315 def test_no_callback_kwargs_for_action(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
316 self.assertOptionError(
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
317 "option -b: callback_kwargs supplied for non-callback option",
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
318 ["-b"], {'action': 'store',
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
319 'callback_kwargs': 'foo'})
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
320
78124
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
321 def test_no_single_dash(self):
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
322 self.assertOptionError(
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
323 "invalid long option string '-debug': "
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
324 "must start with --, followed by non-dash",
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
325 ["-debug"])
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
326
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
327 self.assertOptionError(
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
328 "option -d: invalid long option string '-debug': must start with"
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
329 " --, followed by non-dash",
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
330 ["-d", "-debug"])
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
331
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
332 self.assertOptionError(
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
333 "invalid long option string '-debug': "
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
334 "must start with --, followed by non-dash",
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
335 ["-debug", "--debug"])
844bb753570f #4640: Add optparse tests for '-xxx' invalid when defining options.
R David Murray <rdmurray@bitdance.com>
parents: 71103
diff changeset
336
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
337 class TestOptionParser(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
338 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
339 self.parser = OptionParser()
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
340 self.parser.add_option("-v", "--verbose", "-n", "--noisy",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
341 action="store_true", dest="verbose")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
342 self.parser.add_option("-q", "--quiet", "--silent",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
343 action="store_false", dest="verbose")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
344
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
345 def test_add_option_no_Option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
346 self.assertTypeError(self.parser.add_option,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
347 "not an Option instance: None", None)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
348
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
349 def test_add_option_invalid_arguments(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
350 self.assertTypeError(self.parser.add_option,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
351 "invalid arguments", None, None)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
352
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
353 def test_get_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
354 opt1 = self.parser.get_option("-v")
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55593
diff changeset
355 self.assertIsInstance(opt1, Option)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
356 self.assertEqual(opt1._short_opts, ["-v", "-n"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
357 self.assertEqual(opt1._long_opts, ["--verbose", "--noisy"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
358 self.assertEqual(opt1.action, "store_true")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
359 self.assertEqual(opt1.dest, "verbose")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
360
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
361 def test_get_option_equals(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
362 opt1 = self.parser.get_option("-v")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
363 opt2 = self.parser.get_option("--verbose")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
364 opt3 = self.parser.get_option("-n")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
365 opt4 = self.parser.get_option("--noisy")
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
366 self.assertTrue(opt1 is opt2 is opt3 is opt4)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
367
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
368 def test_has_option(self):
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
369 self.assertTrue(self.parser.has_option("-v"))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
370 self.assertTrue(self.parser.has_option("--verbose"))
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
371
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
372 def assertTrueremoved(self):
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
373 self.assertTrue(self.parser.get_option("-v") is None)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
374 self.assertTrue(self.parser.get_option("--verbose") is None)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
375 self.assertTrue(self.parser.get_option("-n") is None)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
376 self.assertTrue(self.parser.get_option("--noisy") is None)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
377
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
378 self.assertFalse(self.parser.has_option("-v"))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
379 self.assertFalse(self.parser.has_option("--verbose"))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
380 self.assertFalse(self.parser.has_option("-n"))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
381 self.assertFalse(self.parser.has_option("--noisy"))
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
382
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
383 self.assertTrue(self.parser.has_option("-q"))
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
384 self.assertTrue(self.parser.has_option("--silent"))
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
385
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
386 def test_remove_short_opt(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
387 self.parser.remove_option("-n")
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
388 self.assertTrueremoved()
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
389
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
390 def test_remove_long_opt(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
391 self.parser.remove_option("--verbose")
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
392 self.assertTrueremoved()
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
393
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
394 def test_remove_nonexistent(self):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
395 self.assertRaises(self.parser.remove_option, ('foo',), None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
396 ValueError, "no such option 'foo'")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
397
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
398 def test_refleak(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
399 # If an OptionParser is carrying around a reference to a large
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
400 # object, various cycles can prevent it from being GC'd in
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
401 # a timely fashion. destroy() breaks the cycles to ensure stuff
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
402 # can be cleaned up.
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
403 big_thing = [42]
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
404 refcount = sys.getrefcount(big_thing)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
405 parser = OptionParser()
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
406 parser.add_option("-a", "--aaarggh")
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
407 parser.big_thing = big_thing
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
408
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
409 parser.destroy()
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
410 #self.assertEqual(refcount, sys.getrefcount(big_thing))
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
411 del parser
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
412 self.assertEqual(refcount, sys.getrefcount(big_thing))
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
413
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
414
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
415 class TestOptionValues(BaseTest):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
416 def setUp(self):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
417 pass
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
418
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
419 def test_basics(self):
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
420 values = Values()
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
421 self.assertEqual(vars(values), {})
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
422 self.assertEqual(values, {})
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
423 self.assertNotEqual(values, {"foo": "bar"})
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
424 self.assertNotEqual(values, "")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
425
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
426 dict = {"foo": "bar", "baz": 42}
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
427 values = Values(defaults=dict)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
428 self.assertEqual(vars(values), dict)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
429 self.assertEqual(values, dict)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
430 self.assertNotEqual(values, {"foo": "bar"})
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
431 self.assertNotEqual(values, {})
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
432 self.assertNotEqual(values, "")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
433 self.assertNotEqual(values, [])
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
434
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
435
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
436 class TestTypeAliases(BaseTest):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
437 def setUp(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
438 self.parser = OptionParser()
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
439
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
440 def test_str_aliases_string(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
441 self.parser.add_option("-s", type="str")
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 63446
diff changeset
442 self.assertEqual(self.parser.get_option("-s").type, "string")
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
443
41986
6464cc638faa Merged revisions 55795-55816 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41969
diff changeset
444 def test_type_object(self):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
445 self.parser.add_option("-s", type=str)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 63446
diff changeset
446 self.assertEqual(self.parser.get_option("-s").type, "string")
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
447 self.parser.add_option("-x", type=int)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 63446
diff changeset
448 self.assertEqual(self.parser.get_option("-x").type, "int")
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
449
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
450
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
451 # Custom type for testing processing of default values.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
452 _time_units = { 's' : 1, 'm' : 60, 'h' : 60*60, 'd' : 60*60*24 }
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
453
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
454 def _check_duration(option, opt, value):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
455 try:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
456 if value[-1].isdigit():
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
457 return int(value)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
458 else:
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
459 return int(value[:-1]) * _time_units[value[-1]]
59613
77c71f258df7 Merged revisions 78018,78035-78040,78042-78043,78046,78048-78052,78054,78059,78075-78080 via svnmerge from
Georg Brandl <georg@python.org>
parents: 59521
diff changeset
460 except (ValueError, IndexError):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
461 raise OptionValueError(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
462 'option %s: invalid duration: %r' % (opt, value))
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
463
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
464 class DurationOption(Option):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
465 TYPES = Option.TYPES + ('duration',)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
466 TYPE_CHECKER = copy.copy(Option.TYPE_CHECKER)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
467 TYPE_CHECKER['duration'] = _check_duration
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
468
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
469 class TestDefaultValues(BaseTest):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
470 def setUp(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
471 self.parser = OptionParser()
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
472 self.parser.add_option("-v", "--verbose", default=True)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
473 self.parser.add_option("-q", "--quiet", dest='verbose')
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
474 self.parser.add_option("-n", type="int", default=37)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
475 self.parser.add_option("-m", type="int")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
476 self.parser.add_option("-s", default="foo")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
477 self.parser.add_option("-t")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
478 self.parser.add_option("-u", default=None)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
479 self.expected = { 'verbose': True,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
480 'n': 37,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
481 'm': None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
482 's': "foo",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
483 't': None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
484 'u': None }
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
485
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
486 def test_basic_defaults(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
487 self.assertEqual(self.parser.get_default_values(), self.expected)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
488
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
489 def test_mixed_defaults_post(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
490 self.parser.set_defaults(n=42, m=-100)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
491 self.expected.update({'n': 42, 'm': -100})
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
492 self.assertEqual(self.parser.get_default_values(), self.expected)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
493
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
494 def test_mixed_defaults_pre(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
495 self.parser.set_defaults(x="barf", y="blah")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
496 self.parser.add_option("-x", default="frob")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
497 self.parser.add_option("-y")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
498
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
499 self.expected.update({'x': "frob", 'y': "blah"})
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
500 self.assertEqual(self.parser.get_default_values(), self.expected)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
501
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
502 self.parser.remove_option("-y")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
503 self.parser.add_option("-y", default=None)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
504 self.expected.update({'y': None})
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
505 self.assertEqual(self.parser.get_default_values(), self.expected)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
506
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
507 def test_process_default(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
508 self.parser.option_class = DurationOption
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
509 self.parser.add_option("-d", type="duration", default=300)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
510 self.parser.add_option("-e", type="duration", default="6m")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
511 self.parser.set_defaults(n="42")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
512 self.expected.update({'d': 300, 'e': 360, 'n': 42})
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
513 self.assertEqual(self.parser.get_default_values(), self.expected)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
514
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
515 self.parser.set_process_default_values(False)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
516 self.expected.update({'d': 300, 'e': "6m", 'n': "42"})
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
517 self.assertEqual(self.parser.get_default_values(), self.expected)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
518
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
519
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
520 class TestProgName(BaseTest):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
521 """
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
522 Test that %prog expands to the right thing in usage, version,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
523 and help strings.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
524 """
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
525
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
526 def assertUsage(self, parser, expected_usage):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
527 self.assertEqual(parser.get_usage(), expected_usage)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
528
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
529 def assertVersion(self, parser, expected_version):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
530 self.assertEqual(parser.get_version(), expected_version)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
531
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
532
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
533 def test_default_progname(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
534 # Make sure that program name taken from sys.argv[0] by default.
32872
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
535 save_argv = sys.argv[:]
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
536 try:
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
537 sys.argv[0] = os.path.join("foo", "bar", "baz.py")
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
538 parser = OptionParser("%prog ...", version="%prog 1.2")
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
539 expected_usage = "Usage: baz.py ...\n"
32872
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
540 self.assertUsage(parser, expected_usage)
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
541 self.assertVersion(parser, "baz.py 1.2")
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
542 self.assertHelp(parser,
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
543 expected_usage + "\n" +
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
544 "Options:\n"
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
545 " --version show program's version number and exit\n"
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
546 " -h, --help show this help message and exit\n")
32872
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
547 finally:
d013393c7d98 Be more careful about reverting mutuations to system-wide (sys) variables.
Tim Peters <tim.peters@gmail.com>
parents: 32870
diff changeset
548 sys.argv[:] = save_argv
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
549
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
550 def test_custom_progname(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
551 parser = OptionParser(prog="thingy",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
552 version="%prog 0.1",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
553 usage="%prog arg arg")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
554 parser.remove_option("-h")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
555 parser.remove_option("--version")
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
556 expected_usage = "Usage: thingy arg arg\n"
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
557 self.assertUsage(parser, expected_usage)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
558 self.assertVersion(parser, "thingy 0.1")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
559 self.assertHelp(parser, expected_usage + "\n")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
560
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
561
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
562 class TestExpandDefaults(BaseTest):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
563 def setUp(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
564 self.parser = OptionParser(prog="test")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
565 self.help_prefix = """\
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
566 Usage: test [options]
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
567
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
568 Options:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
569 -h, --help show this help message and exit
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
570 """
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
571 self.file_help = "read from FILE [default: %default]"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
572 self.expected_help_file = self.help_prefix + \
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
573 " -f FILE, --file=FILE read from FILE [default: foo.txt]\n"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
574 self.expected_help_none = self.help_prefix + \
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
575 " -f FILE, --file=FILE read from FILE [default: none]\n"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
576
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
577 def test_option_default(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
578 self.parser.add_option("-f", "--file",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
579 default="foo.txt",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
580 help=self.file_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
581 self.assertHelp(self.parser, self.expected_help_file)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
582
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
583 def test_parser_default_1(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
584 self.parser.add_option("-f", "--file",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
585 help=self.file_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
586 self.parser.set_default('file', "foo.txt")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
587 self.assertHelp(self.parser, self.expected_help_file)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
588
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
589 def test_parser_default_2(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
590 self.parser.add_option("-f", "--file",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
591 help=self.file_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
592 self.parser.set_defaults(file="foo.txt")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
593 self.assertHelp(self.parser, self.expected_help_file)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
594
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
595 def test_no_default(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
596 self.parser.add_option("-f", "--file",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
597 help=self.file_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
598 self.assertHelp(self.parser, self.expected_help_none)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
599
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
600 def test_default_none_1(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
601 self.parser.add_option("-f", "--file",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
602 default=None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
603 help=self.file_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
604 self.assertHelp(self.parser, self.expected_help_none)
33848
3398c5ce8b7a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 33846
diff changeset
605
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
606 def test_default_none_2(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
607 self.parser.add_option("-f", "--file",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
608 help=self.file_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
609 self.parser.set_defaults(file=None)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
610 self.assertHelp(self.parser, self.expected_help_none)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
611
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
612 def test_float_default(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
613 self.parser.add_option(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
614 "-p", "--prob",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
615 help="blow up with probability PROB [default: %default]")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
616 self.parser.set_defaults(prob=0.43)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
617 expected_help = self.help_prefix + \
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
618 " -p PROB, --prob=PROB blow up with probability PROB [default: 0.43]\n"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
619 self.assertHelp(self.parser, expected_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
620
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
621 def test_alt_expand(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
622 self.parser.add_option("-f", "--file",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
623 default="foo.txt",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
624 help="read from FILE [default: *DEFAULT*]")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
625 self.parser.formatter.default_tag = "*DEFAULT*"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
626 self.assertHelp(self.parser, self.expected_help_file)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
627
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
628 def test_no_expand(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
629 self.parser.add_option("-f", "--file",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
630 default="foo.txt",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
631 help="read from %default file")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
632 self.parser.formatter.default_tag = None
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
633 expected_help = self.help_prefix + \
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
634 " -f FILE, --file=FILE read from %default file\n"
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
635 self.assertHelp(self.parser, expected_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
636
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
637
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
638 # -- Test parser.parse_args() ------------------------------------------
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
639
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
640 class TestStandard(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
641 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
642 options = [make_option("-a", type="string"),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
643 make_option("-b", "--boo", type="int", dest='boo'),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
644 make_option("--foo", action="append")]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
645
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
646 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
647 option_list=options)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
648
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
649 def test_required_value(self):
68767
4a5782a2b074 Use proper gettext plural forms in optparse (closes #4391).
Éric Araujo <merwok@netwok.org>
parents: 68257
diff changeset
650 self.assertParseFail(["-a"], "-a option requires 1 argument")
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
651
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
652 def test_invalid_integer(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
653 self.assertParseFail(["-b", "5x"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
654 "option -b: invalid integer value: '5x'")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
655
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
656 def test_no_such_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
657 self.assertParseFail(["--boo13"], "no such option: --boo13")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
658
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
659 def test_long_invalid_integer(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
660 self.assertParseFail(["--boo=x5"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
661 "option --boo: invalid integer value: 'x5'")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
662
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
663 def test_empty(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
664 self.assertParseOK([], {'a': None, 'boo': None, 'foo': None}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
665
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
666 def test_shortopt_empty_longopt_append(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
667 self.assertParseOK(["-a", "", "--foo=blah", "--foo="],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
668 {'a': "", 'boo': None, 'foo': ["blah", ""]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
669 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
670
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
671 def test_long_option_append(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
672 self.assertParseOK(["--foo", "bar", "--foo", "", "--foo=x"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
673 {'a': None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
674 'boo': None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
675 'foo': ["bar", "", "x"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
676 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
677
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
678 def test_option_argument_joined(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
679 self.assertParseOK(["-abc"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
680 {'a': "bc", 'boo': None, 'foo': None},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
681 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
682
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
683 def test_option_argument_split(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
684 self.assertParseOK(["-a", "34"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
685 {'a': "34", 'boo': None, 'foo': None},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
686 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
687
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
688 def test_option_argument_joined_integer(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
689 self.assertParseOK(["-b34"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
690 {'a': None, 'boo': 34, 'foo': None},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
691 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
692
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
693 def test_option_argument_split_negative_integer(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
694 self.assertParseOK(["-b", "-5"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
695 {'a': None, 'boo': -5, 'foo': None},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
696 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
697
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
698 def test_long_option_argument_joined(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
699 self.assertParseOK(["--boo=13"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
700 {'a': None, 'boo': 13, 'foo': None},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
701 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
702
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
703 def test_long_option_argument_split(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
704 self.assertParseOK(["--boo", "111"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
705 {'a': None, 'boo': 111, 'foo': None},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
706 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
707
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
708 def test_long_option_short_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
709 self.assertParseOK(["--foo=bar", "-axyz"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
710 {'a': 'xyz', 'boo': None, 'foo': ["bar"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
711 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
712
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
713 def test_abbrev_long_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
714 self.assertParseOK(["--f=bar", "-axyz"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
715 {'a': 'xyz', 'boo': None, 'foo': ["bar"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
716 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
717
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
718 def test_defaults(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
719 (options, args) = self.parser.parse_args([])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
720 defaults = self.parser.get_default_values()
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
721 self.assertEqual(vars(defaults), vars(options))
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
722
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
723 def test_ambiguous_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
724 self.parser.add_option("--foz", action="store",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
725 type="string", dest="foo")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
726 self.assertParseFail(["--f=bar"],
38464
e989ee5d404a ("Forward-port" of r46506)
Armin Rigo <arigo@tunes.org>
parents: 37929
diff changeset
727 "ambiguous option: --f (--foo, --foz?)")
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
728
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
729
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
730 def test_short_and_long_option_split(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
731 self.assertParseOK(["-a", "xyz", "--foo", "bar"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
732 {'a': 'xyz', 'boo': None, 'foo': ["bar"]},
82958
33bdd0a985b9 Issue #17516: do not create useless tuple: remove dummy commas in tests
Victor Stinner <victor.stinner@gmail.com>
parents: 78124
diff changeset
733 [])
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
734
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
735 def test_short_option_split_long_option_append(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
736 self.assertParseOK(["--foo=bar", "-b", "123", "--foo", "baz"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
737 {'a': None, 'boo': 123, 'foo': ["bar", "baz"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
738 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
739
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
740 def test_short_option_split_one_positional_arg(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
741 self.assertParseOK(["-a", "foo", "bar"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
742 {'a': "foo", 'boo': None, 'foo': None},
82958
33bdd0a985b9 Issue #17516: do not create useless tuple: remove dummy commas in tests
Victor Stinner <victor.stinner@gmail.com>
parents: 78124
diff changeset
743 ["bar"])
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
744
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
745 def test_short_option_consumes_separator(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
746 self.assertParseOK(["-a", "--", "foo", "bar"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
747 {'a': "--", 'boo': None, 'foo': None},
82958
33bdd0a985b9 Issue #17516: do not create useless tuple: remove dummy commas in tests
Victor Stinner <victor.stinner@gmail.com>
parents: 78124
diff changeset
748 ["foo", "bar"])
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
749 self.assertParseOK(["-a", "--", "--foo", "bar"],
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
750 {'a': "--", 'boo': None, 'foo': ["bar"]},
82958
33bdd0a985b9 Issue #17516: do not create useless tuple: remove dummy commas in tests
Victor Stinner <victor.stinner@gmail.com>
parents: 78124
diff changeset
751 [])
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
752
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
753 def test_short_option_joined_and_separator(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
754 self.assertParseOK(["-ab", "--", "--foo", "bar"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
755 {'a': "b", 'boo': None, 'foo': None},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
756 ["--foo", "bar"]),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
757
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
758 def test_hyphen_becomes_positional_arg(self):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
759 self.assertParseOK(["-ab", "-", "--foo", "bar"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
760 {'a': "b", 'boo': None, 'foo': ["bar"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
761 ["-"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
762
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
763 def test_no_append_versus_append(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
764 self.assertParseOK(["-b3", "-b", "5", "--foo=bar", "--foo", "baz"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
765 {'a': None, 'boo': 5, 'foo': ["bar", "baz"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
766 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
767
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
768 def test_option_consumes_optionlike_string(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
769 self.assertParseOK(["-a", "-b3"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
770 {'a': "-b3", 'boo': None, 'foo': None},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
771 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
772
62507
a456b00c3b75 Merged revisions 82234 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 55593
diff changeset
773 def test_combined_single_invalid_option(self):
a456b00c3b75 Merged revisions 82234 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 55593
diff changeset
774 self.parser.add_option("-t", action="store_true")
a456b00c3b75 Merged revisions 82234 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 55593
diff changeset
775 self.assertParseFail(["-test"],
62515
1dcae52c495c Merged revisions 82244 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 62507
diff changeset
776 "no such option: -e")
62507
a456b00c3b75 Merged revisions 82234 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 55593
diff changeset
777
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
778 class TestBool(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
779 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
780 options = [make_option("-v",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
781 "--verbose",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
782 action="store_true",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
783 dest="verbose",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
784 default=''),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
785 make_option("-q",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
786 "--quiet",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
787 action="store_false",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
788 dest="verbose")]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
789 self.parser = OptionParser(option_list = options)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
790
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
791 def test_bool_default(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
792 self.assertParseOK([],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
793 {'verbose': ''},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
794 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
795
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
796 def test_bool_false(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
797 (options, args) = self.assertParseOK(["-q"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
798 {'verbose': 0},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
799 [])
63446
0dcae455ec07 Merged revisions 83352,83355-83358,83362,83366,83368-83369 via svnmerge from
Georg Brandl <georg@python.org>
parents: 62515
diff changeset
800 self.assertTrue(options.verbose is False)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
801
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
802 def test_bool_true(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
803 (options, args) = self.assertParseOK(["-v"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
804 {'verbose': 1},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
805 [])
63446
0dcae455ec07 Merged revisions 83352,83355-83358,83362,83366,83368-83369 via svnmerge from
Georg Brandl <georg@python.org>
parents: 62515
diff changeset
806 self.assertTrue(options.verbose is True)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
807
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
808 def test_bool_flicker_on_and_off(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
809 self.assertParseOK(["-qvq", "-q", "-v"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
810 {'verbose': 1},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
811 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
812
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
813 class TestChoice(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
814 def setUp(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
815 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
816 self.parser.add_option("-c", action="store", type="choice",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
817 dest="choice", choices=["one", "two", "three"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
818
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
819 def test_valid_choice(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
820 self.assertParseOK(["-c", "one", "xyz"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
821 {'choice': 'one'},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
822 ["xyz"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
823
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
824 def test_invalid_choice(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
825 self.assertParseFail(["-c", "four", "abc"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
826 "option -c: invalid choice: 'four' "
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
827 "(choose from 'one', 'two', 'three')")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
828
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
829 def test_add_choice_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
830 self.parser.add_option("-d", "--default",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
831 choices=["four", "five", "six"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
832 opt = self.parser.get_option("-d")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
833 self.assertEqual(opt.type, "choice")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
834 self.assertEqual(opt.action, "store")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
835
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
836 class TestCount(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
837 def setUp(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
838 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
839 self.v_opt = make_option("-v", action="count", dest="verbose")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
840 self.parser.add_option(self.v_opt)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
841 self.parser.add_option("--verbose", type="int", dest="verbose")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
842 self.parser.add_option("-q", "--quiet",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
843 action="store_const", dest="verbose", const=0)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
844
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
845 def test_empty(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
846 self.assertParseOK([], {'verbose': None}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
847
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
848 def test_count_one(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
849 self.assertParseOK(["-v"], {'verbose': 1}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
850
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
851 def test_count_three(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
852 self.assertParseOK(["-vvv"], {'verbose': 3}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
853
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
854 def test_count_three_apart(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
855 self.assertParseOK(["-v", "-v", "-v"], {'verbose': 3}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
856
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
857 def test_count_override_amount(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
858 self.assertParseOK(["-vvv", "--verbose=2"], {'verbose': 2}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
859
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
860 def test_count_override_quiet(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
861 self.assertParseOK(["-vvv", "--verbose=2", "-q"], {'verbose': 0}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
862
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
863 def test_count_overriding(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
864 self.assertParseOK(["-vvv", "--verbose=2", "-q", "-v"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
865 {'verbose': 1}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
866
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
867 def test_count_interspersed_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
868 self.assertParseOK(["--quiet", "3", "-v"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
869 {'verbose': 1},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
870 ["3"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
871
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
872 def test_count_no_interspersed_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
873 self.parser.disable_interspersed_args()
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
874 self.assertParseOK(["--quiet", "3", "-v"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
875 {'verbose': 0},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
876 ["3", "-v"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
877
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
878 def test_count_no_such_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
879 self.assertParseFail(["-q3", "-v"], "no such option: -3")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
880
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
881 def test_count_option_no_value(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
882 self.assertParseFail(["--quiet=3", "-v"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
883 "--quiet option does not take a value")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
884
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
885 def test_count_with_default(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
886 self.parser.set_default('verbose', 0)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
887 self.assertParseOK([], {'verbose':0}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
888
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
889 def test_count_overriding_default(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
890 self.parser.set_default('verbose', 0)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
891 self.assertParseOK(["-vvv", "--verbose=2", "-q", "-v"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
892 {'verbose': 1}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
893
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
894 class TestMultipleArgs(BaseTest):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
895 def setUp(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
896 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
897 self.parser.add_option("-p", "--point",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
898 action="store", nargs=3, type="float", dest="point")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
899
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
900 def test_nargs_with_positional_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
901 self.assertParseOK(["foo", "-p", "1", "2.5", "-4.3", "xyz"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
902 {'point': (1.0, 2.5, -4.3)},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
903 ["foo", "xyz"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
904
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
905 def test_nargs_long_opt(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
906 self.assertParseOK(["--point", "-1", "2.5", "-0", "xyz"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
907 {'point': (-1.0, 2.5, -0.0)},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
908 ["xyz"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
909
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
910 def test_nargs_invalid_float_value(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
911 self.assertParseFail(["-p", "1.0", "2x", "3.5"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
912 "option -p: "
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
913 "invalid floating-point value: '2x'")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
914
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
915 def test_nargs_required_values(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
916 self.assertParseFail(["--point", "1.0", "3.5"],
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
917 "--point option requires 3 arguments")
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
918
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
919 class TestMultipleArgsAppend(BaseTest):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
920 def setUp(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
921 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
922 self.parser.add_option("-p", "--point", action="store", nargs=3,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
923 type="float", dest="point")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
924 self.parser.add_option("-f", "--foo", action="append", nargs=2,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
925 type="int", dest="foo")
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
926 self.parser.add_option("-z", "--zero", action="append_const",
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
927 dest="foo", const=(0, 0))
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
928
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
929 def test_nargs_append(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
930 self.assertParseOK(["-f", "4", "-3", "blah", "--foo", "1", "666"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
931 {'point': None, 'foo': [(4, -3), (1, 666)]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
932 ["blah"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
933
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
934 def test_nargs_append_required_values(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
935 self.assertParseFail(["-f4,3"],
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
936 "-f option requires 2 arguments")
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
937
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
938 def test_nargs_append_simple(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
939 self.assertParseOK(["--foo=3", "4"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
940 {'point': None, 'foo':[(3, 4)]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
941 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
942
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
943 def test_nargs_append_const(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
944 self.assertParseOK(["--zero", "--foo", "3", "4", "-z"],
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
945 {'point': None, 'foo':[(0, 0), (3, 4), (0, 0)]},
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
946 [])
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
947
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
948 class TestVersion(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
949 def test_version(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
950 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
951 version="%prog 0.1")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
952 save_argv = sys.argv[:]
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
953 try:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
954 sys.argv[0] = os.path.join(os.curdir, "foo", "bar")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
955 self.assertOutput(["--version"], "bar 0.1\n")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
956 finally:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
957 sys.argv[:] = save_argv
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
958
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
959 def test_no_version(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
960 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
961 self.assertParseFail(["--version"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
962 "no such option: --version")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
963
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
964 # -- Test conflicting default values and parser.parse_args() -----------
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
965
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
966 class TestConflictingDefaults(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
967 """Conflicting default values: the last one should win."""
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
968 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
969 self.parser = OptionParser(option_list=[
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
970 make_option("-v", action="store_true", dest="verbose", default=1)])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
971
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
972 def test_conflict_default(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
973 self.parser.add_option("-q", action="store_false", dest="verbose",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
974 default=0)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
975 self.assertParseOK([], {'verbose': 0}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
976
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
977 def test_conflict_default_none(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
978 self.parser.add_option("-q", action="store_false", dest="verbose",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
979 default=None)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
980 self.assertParseOK([], {'verbose': None}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
981
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
982 class TestOptionGroup(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
983 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
984 self.parser = OptionParser(usage=SUPPRESS_USAGE)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
985
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
986 def test_option_group_create_instance(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
987 group = OptionGroup(self.parser, "Spam")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
988 self.parser.add_option_group(group)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
989 group.add_option("--spam", action="store_true",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
990 help="spam spam spam spam")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
991 self.assertParseOK(["--spam"], {'spam': 1}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
992
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
993 def test_add_group_no_group(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
994 self.assertTypeError(self.parser.add_option_group,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
995 "not an OptionGroup instance: None", None)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
996
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
997 def test_add_group_invalid_arguments(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
998 self.assertTypeError(self.parser.add_option_group,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
999 "invalid arguments", None, None)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1000
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1001 def test_add_group_wrong_parser(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1002 group = OptionGroup(self.parser, "Spam")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1003 group.parser = OptionParser()
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1004 self.assertRaises(self.parser.add_option_group, (group,), None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1005 ValueError, "invalid OptionGroup (wrong parser)")
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1006
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1007 def test_group_manipulate(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1008 group = self.parser.add_option_group("Group 2",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1009 description="Some more options")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1010 group.set_title("Bacon")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1011 group.add_option("--bacon", type="int")
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1012 self.assertTrue(self.parser.get_option_group("--bacon"), group)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1013
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1014 # -- Test extending and parser.parse_args() ----------------------------
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1015
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1016 class TestExtendAddTypes(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1017 def setUp(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1018 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1019 option_class=self.MyOption)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1020 self.parser.add_option("-a", None, type="string", dest="a")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1021 self.parser.add_option("-f", "--file", type="file", dest="file")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1022
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1023 def tearDown(self):
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1024 if os.path.isdir(support.TESTFN):
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1025 os.rmdir(support.TESTFN)
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1026 elif os.path.isfile(support.TESTFN):
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1027 os.unlink(support.TESTFN)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1028
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1029 class MyOption (Option):
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1030 def check_file(option, opt, value):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1031 if not os.path.exists(value):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1032 raise OptionValueError("%s: file does not exist" % value)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1033 elif not os.path.isfile(value):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1034 raise OptionValueError("%s: not a regular file" % value)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1035 return value
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1036
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1037 TYPES = Option.TYPES + ("file",)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1038 TYPE_CHECKER = copy.copy(Option.TYPE_CHECKER)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1039 TYPE_CHECKER["file"] = check_file
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1040
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1041 def test_filetype_ok(self):
71103
0c49260e85a0 Issue #12451: Add support.create_empty_file()
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68767
diff changeset
1042 support.create_empty_file(support.TESTFN)
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1043 self.assertParseOK(["--file", support.TESTFN, "-afoo"],
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1044 {'file': support.TESTFN, 'a': 'foo'},
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1045 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1046
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1047 def test_filetype_noexist(self):
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1048 self.assertParseFail(["--file", support.TESTFN, "-afoo"],
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1049 "%s: file does not exist" %
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1050 support.TESTFN)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1051
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1052 def test_filetype_notfile(self):
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1053 os.mkdir(support.TESTFN)
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1054 self.assertParseFail(["--file", support.TESTFN, "-afoo"],
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1055 "%s: not a regular file" %
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1056 support.TESTFN)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1057
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1058
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1059 class TestExtendAddActions(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1060 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1061 options = [self.MyOption("-a", "--apple", action="extend",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1062 type="string", dest="apple")]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1063 self.parser = OptionParser(option_list=options)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1064
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1065 class MyOption (Option):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1066 ACTIONS = Option.ACTIONS + ("extend",)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1067 STORE_ACTIONS = Option.STORE_ACTIONS + ("extend",)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1068 TYPED_ACTIONS = Option.TYPED_ACTIONS + ("extend",)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1069
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1070 def take_action(self, action, dest, opt, value, values, parser):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1071 if action == "extend":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1072 lvalue = value.split(",")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1073 values.ensure_value(dest, []).extend(lvalue)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1074 else:
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1075 Option.take_action(self, action, dest, opt, parser, value,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1076 values)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1077
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1078 def test_extend_add_action(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1079 self.assertParseOK(["-afoo,bar", "--apple=blah"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1080 {'apple': ["foo", "bar", "blah"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1081 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1082
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1083 def test_extend_add_action_normal(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1084 self.assertParseOK(["-a", "foo", "-abar", "--apple=x,y"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1085 {'apple': ["foo", "bar", "x", "y"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1086 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1087
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1088 # -- Test callbacks and parser.parse_args() ----------------------------
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1089
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1090 class TestCallback(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1091 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1092 options = [make_option("-x",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1093 None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1094 action="callback",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1095 callback=self.process_opt),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1096 make_option("-f",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1097 "--file",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1098 action="callback",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1099 callback=self.process_opt,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1100 type="string",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1101 dest="filename")]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1102 self.parser = OptionParser(option_list=options)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1103
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1104 def process_opt(self, option, opt, value, parser_):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1105 if opt == "-x":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1106 self.assertEqual(option._short_opts, ["-x"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1107 self.assertEqual(option._long_opts, [])
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1108 self.assertTrue(parser_ is self.parser)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1109 self.assertTrue(value is None)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1110 self.assertEqual(vars(parser_.values), {'filename': None})
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1111
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1112 parser_.values.x = 42
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1113 elif opt == "--file":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1114 self.assertEqual(option._short_opts, ["-f"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1115 self.assertEqual(option._long_opts, ["--file"])
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1116 self.assertTrue(parser_ is self.parser)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1117 self.assertEqual(value, "foo")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1118 self.assertEqual(vars(parser_.values), {'filename': None, 'x': 42})
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1119
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1120 setattr(parser_.values, option.dest, value)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1121 else:
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1122 self.fail("Unknown option %r in process_opt." % opt)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1123
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1124 def test_callback(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1125 self.assertParseOK(["-x", "--file=foo"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1126 {'filename': "foo", 'x': 42},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1127 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1128
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1129 def test_callback_help(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1130 # This test was prompted by SF bug #960515 -- the point is
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1131 # not to inspect the help text, just to make sure that
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1132 # format_help() doesn't crash.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1133 parser = OptionParser(usage=SUPPRESS_USAGE)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1134 parser.remove_option("-h")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1135 parser.add_option("-t", "--test", action="callback",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1136 callback=lambda: None, type="string",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1137 help="foo")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1138
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1139 expected_help = ("Options:\n"
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1140 " -t TEST, --test=TEST foo\n")
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1141 self.assertHelp(parser, expected_help)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1142
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1143
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1144 class TestCallbackExtraArgs(BaseTest):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1145 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1146 options = [make_option("-p", "--point", action="callback",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1147 callback=self.process_tuple,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1148 callback_args=(3, int), type="string",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1149 dest="points", default=[])]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1150 self.parser = OptionParser(option_list=options)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1151
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1152 def process_tuple(self, option, opt, value, parser_, len, type):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1153 self.assertEqual(len, 3)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1154 self.assertTrue(type is int)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1155
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1156 if opt == "-p":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1157 self.assertEqual(value, "1,2,3")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1158 elif opt == "--point":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1159 self.assertEqual(value, "4,5,6")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1160
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1161 value = tuple(map(type, value.split(",")))
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1162 getattr(parser_.values, option.dest).append(value)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1163
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1164 def test_callback_extra_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1165 self.assertParseOK(["-p1,2,3", "--point", "4,5,6"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1166 {'points': [(1,2,3), (4,5,6)]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1167 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1168
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1169 class TestCallbackMeddleArgs(BaseTest):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1170 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1171 options = [make_option(str(x), action="callback",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1172 callback=self.process_n, dest='things')
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1173 for x in range(-1, -6, -1)]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1174 self.parser = OptionParser(option_list=options)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1175
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1176 # Callback that meddles in rargs, largs
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1177 def process_n(self, option, opt, value, parser_):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1178 # option is -3, -5, etc.
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1179 nargs = int(opt[1:])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1180 rargs = parser_.rargs
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1181 if len(rargs) < nargs:
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1182 self.fail("Expected %d arguments for %s option." % (nargs, opt))
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1183 dest = parser_.values.ensure_value(option.dest, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1184 dest.append(tuple(rargs[0:nargs]))
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1185 parser_.largs.append(nargs)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1186 del rargs[0:nargs]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1187
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1188 def test_callback_meddle_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1189 self.assertParseOK(["-1", "foo", "-3", "bar", "baz", "qux"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1190 {'things': [("foo",), ("bar", "baz", "qux")]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1191 [1, 3])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1192
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1193 def test_callback_meddle_args_separator(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1194 self.assertParseOK(["-2", "foo", "--"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1195 {'things': [('foo', '--')]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1196 [2])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1197
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1198 class TestCallbackManyArgs(BaseTest):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1199 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1200 options = [make_option("-a", "--apple", action="callback", nargs=2,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1201 callback=self.process_many, type="string"),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1202 make_option("-b", "--bob", action="callback", nargs=3,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1203 callback=self.process_many, type="int")]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1204 self.parser = OptionParser(option_list=options)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1205
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1206 def process_many(self, option, opt, value, parser_):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1207 if opt == "-a":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1208 self.assertEqual(value, ("foo", "bar"))
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1209 elif opt == "--apple":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1210 self.assertEqual(value, ("ding", "dong"))
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1211 elif opt == "-b":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1212 self.assertEqual(value, (1, 2, 3))
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1213 elif opt == "--bob":
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1214 self.assertEqual(value, (-666, 42, 0))
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1215
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1216 def test_many_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1217 self.assertParseOK(["-a", "foo", "bar", "--apple", "ding", "dong",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1218 "-b", "1", "2", "3", "--bob", "-666", "42",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1219 "0"],
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1220 {"apple": None, "bob": None},
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1221 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1222
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1223 class TestCallbackCheckAbbrev(BaseTest):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1224 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1225 self.parser = OptionParser()
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1226 self.parser.add_option("--foo-bar", action="callback",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1227 callback=self.check_abbrev)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1228
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1229 def check_abbrev(self, option, opt, value, parser):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1230 self.assertEqual(opt, "--foo-bar")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1231
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1232 def test_abbrev_callback_expansion(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1233 self.assertParseOK(["--foo"], {}, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1234
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1235 class TestCallbackVarArgs(BaseTest):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1236 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1237 options = [make_option("-a", type="int", nargs=2, dest="a"),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1238 make_option("-b", action="store_true", dest="b"),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1239 make_option("-c", "--callback", action="callback",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1240 callback=self.variable_args, dest="c")]
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1241 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1242 option_list=options)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1243
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1244 def variable_args(self, option, opt, value, parser):
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1245 self.assertTrue(value is None)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1246 value = []
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1247 rargs = parser.rargs
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1248 while rargs:
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1249 arg = rargs[0]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1250 if ((arg[:2] == "--" and len(arg) > 2) or
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1251 (arg[:1] == "-" and len(arg) > 1 and arg[1] != "-")):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1252 break
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1253 else:
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1254 value.append(arg)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1255 del rargs[0]
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1256 setattr(parser.values, option.dest, value)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1257
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1258 def test_variable_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1259 self.assertParseOK(["-a3", "-5", "--callback", "foo", "bar"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1260 {'a': (3, -5), 'b': None, 'c': ["foo", "bar"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1261 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1262
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1263 def test_consume_separator_stop_at_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1264 self.assertParseOK(["-c", "37", "--", "xxx", "-b", "hello"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1265 {'a': None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1266 'b': True,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1267 'c': ["37", "--", "xxx"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1268 ["hello"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1269
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1270 def test_positional_arg_and_variable_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1271 self.assertParseOK(["hello", "-c", "foo", "-", "bar"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1272 {'a': None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1273 'b': None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1274 'c':["foo", "-", "bar"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1275 ["hello"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1276
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1277 def test_stop_at_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1278 self.assertParseOK(["-c", "foo", "-b"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1279 {'a': None, 'b': True, 'c': ["foo"]},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1280 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1281
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1282 def test_stop_at_invalid_option(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1283 self.assertParseFail(["-c", "3", "-5", "-a"], "no such option: -5")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1284
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1285
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1286 # -- Test conflict handling and parser.parse_args() --------------------
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1287
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1288 class ConflictBase(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1289 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1290 options = [make_option("-v", "--verbose", action="count",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1291 dest="verbose", help="increment verbosity")]
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1292 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1293 option_list=options)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1294
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1295 def show_version(self, option, opt, value, parser):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1296 parser.values.show_version = 1
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1297
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1298 class TestConflict(ConflictBase):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1299 """Use the default conflict resolution for Optik 1.2: error."""
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1300 def assertTrueconflict_error(self, func):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1301 err = self.assertRaises(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1302 func, ("-v", "--version"), {'action' : "callback",
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1303 'callback' : self.show_version,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1304 'help' : "show version"},
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1305 OptionConflictError,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1306 "option -v/--version: conflicting option string(s): -v")
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1307
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1308 self.assertEqual(err.msg, "conflicting option string(s): -v")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1309 self.assertEqual(err.option_id, "-v/--version")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1310
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1311 def test_conflict_error(self):
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1312 self.assertTrueconflict_error(self.parser.add_option)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1313
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1314 def test_conflict_error_group(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1315 group = OptionGroup(self.parser, "Group 1")
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1316 self.assertTrueconflict_error(group.add_option)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1317
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1318 def test_no_such_conflict_handler(self):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1319 self.assertRaises(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1320 self.parser.set_conflict_handler, ('foo',), None,
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1321 ValueError, "invalid conflict_resolution value 'foo'")
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1322
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1323
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1324 class TestConflictResolve(ConflictBase):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1325 def setUp(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1326 ConflictBase.setUp(self)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1327 self.parser.set_conflict_handler("resolve")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1328 self.parser.add_option("-v", "--version", action="callback",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1329 callback=self.show_version, help="show version")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1330
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1331 def test_conflict_resolve(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1332 v_opt = self.parser.get_option("-v")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1333 verbose_opt = self.parser.get_option("--verbose")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1334 version_opt = self.parser.get_option("--version")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1335
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1336 self.assertTrue(v_opt is version_opt)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 53646
diff changeset
1337 self.assertTrue(v_opt is not verbose_opt)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1338 self.assertEqual(v_opt._long_opts, ["--version"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1339 self.assertEqual(version_opt._short_opts, ["-v"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1340 self.assertEqual(version_opt._long_opts, ["--version"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1341 self.assertEqual(verbose_opt._short_opts, [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1342 self.assertEqual(verbose_opt._long_opts, ["--verbose"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1343
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1344 def test_conflict_resolve_help(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1345 self.assertOutput(["-h"], """\
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1346 Options:
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1347 --verbose increment verbosity
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1348 -h, --help show this help message and exit
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1349 -v, --version show version
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1350 """)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1351
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1352 def test_conflict_resolve_short_opt(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1353 self.assertParseOK(["-v"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1354 {'verbose': None, 'show_version': 1},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1355 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1356
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1357 def test_conflict_resolve_long_opt(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1358 self.assertParseOK(["--verbose"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1359 {'verbose': 1},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1360 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1361
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1362 def test_conflict_resolve_long_opts(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1363 self.assertParseOK(["--verbose", "--version"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1364 {'verbose': 1, 'show_version': 1},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1365 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1366
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1367 class TestConflictOverride(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1368 def setUp(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1369 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1370 self.parser.set_conflict_handler("resolve")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1371 self.parser.add_option("-n", "--dry-run",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1372 action="store_true", dest="dry_run",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1373 help="don't do anything")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1374 self.parser.add_option("--dry-run", "-n",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1375 action="store_const", const=42, dest="dry_run",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1376 help="dry run mode")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1377
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1378 def test_conflict_override_opts(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1379 opt = self.parser.get_option("--dry-run")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1380 self.assertEqual(opt._short_opts, ["-n"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1381 self.assertEqual(opt._long_opts, ["--dry-run"])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1382
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1383 def test_conflict_override_help(self):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1384 self.assertOutput(["-h"], """\
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1385 Options:
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1386 -h, --help show this help message and exit
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1387 -n, --dry-run dry run mode
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1388 """)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1389
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1390 def test_conflict_override_args(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1391 self.assertParseOK(["-n"],
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1392 {'dry_run': 42},
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1393 [])
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1394
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1395 # -- Other testing. ----------------------------------------------------
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1396
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1397 _expected_help_basic = """\
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1398 Usage: bar.py [options]
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1399
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1400 Options:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1401 -a APPLE throw APPLEs at basket
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1402 -b NUM, --boo=NUM shout "boo!" NUM times (in order to frighten away all the
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1403 evil spirits that cause trouble and mayhem)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1404 --foo=FOO store FOO in the foo list for later fooing
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1405 -h, --help show this help message and exit
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1406 """
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1407
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1408 _expected_help_long_opts_first = """\
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1409 Usage: bar.py [options]
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1410
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1411 Options:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1412 -a APPLE throw APPLEs at basket
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1413 --boo=NUM, -b NUM shout "boo!" NUM times (in order to frighten away all the
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1414 evil spirits that cause trouble and mayhem)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1415 --foo=FOO store FOO in the foo list for later fooing
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1416 --help, -h show this help message and exit
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1417 """
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1418
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1419 _expected_help_title_formatter = """\
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1420 Usage
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1421 =====
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1422 bar.py [options]
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1423
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1424 Options
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1425 =======
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1426 -a APPLE throw APPLEs at basket
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1427 --boo=NUM, -b NUM shout "boo!" NUM times (in order to frighten away all the
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1428 evil spirits that cause trouble and mayhem)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1429 --foo=FOO store FOO in the foo list for later fooing
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1430 --help, -h show this help message and exit
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1431 """
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1432
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1433 _expected_help_short_lines = """\
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1434 Usage: bar.py [options]
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1435
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1436 Options:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1437 -a APPLE throw APPLEs at basket
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1438 -b NUM, --boo=NUM shout "boo!" NUM times (in order to
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1439 frighten away all the evil spirits
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1440 that cause trouble and mayhem)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1441 --foo=FOO store FOO in the foo list for later
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1442 fooing
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1443 -h, --help show this help message and exit
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1444 """
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1445
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1446 class TestHelp(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1447 def setUp(self):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1448 self.parser = self.make_parser(80)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1449
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1450 def make_parser(self, columns):
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1451 options = [
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1452 make_option("-a", type="string", dest='a',
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1453 metavar="APPLE", help="throw APPLEs at basket"),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1454 make_option("-b", "--boo", type="int", dest='boo',
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1455 metavar="NUM",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1456 help=
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1457 "shout \"boo!\" NUM times (in order to frighten away "
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1458 "all the evil spirits that cause trouble and mayhem)"),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1459 make_option("--foo", action="append", type="string", dest='foo',
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1460 help="store FOO in the foo list for later fooing"),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1461 ]
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1462
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1463 # We need to set COLUMNS for the OptionParser constructor, but
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1464 # we must restore its original value -- otherwise, this test
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1465 # screws things up for other tests when it's part of the Python
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1466 # test suite.
53496
c42b7dd15505 test_support was renamed to support on py3k.
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53492
diff changeset
1467 with support.EnvironmentVarGuard() as env:
53646
5c55b9c80846 Merged revisions 72167 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 53496
diff changeset
1468 env['COLUMNS'] = str(columns)
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1469 return InterceptingOptionParser(option_list=options)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1470
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1471 def assertHelpEquals(self, expected_output):
33846
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1472 save_argv = sys.argv[:]
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1473 try:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1474 # Make optparse believe bar.py is being executed.
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1475 sys.argv[0] = os.path.join("foo", "bar.py")
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1476 self.assertOutput(["-h"], expected_output)
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1477 finally:
79bcad14e96a Update optparse module and test suite to Optik 1.5a2.
Greg Ward <gward@python.net>
parents: 33387
diff changeset
1478 sys.argv[:] = save_argv
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1479
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1480 def test_help(self):
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1481 self.assertHelpEquals(_expected_help_basic)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1482
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1483 def test_help_old_usage(self):
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1484 self.parser.set_usage("Usage: %prog [options]")
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1485 self.assertHelpEquals(_expected_help_basic)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1486
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1487 def test_help_long_opts_first(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1488 self.parser.formatter.short_first = 0
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1489 self.assertHelpEquals(_expected_help_long_opts_first)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1490
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1491 def test_help_title_formatter(self):
53496
c42b7dd15505 test_support was renamed to support on py3k.
Hirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
parents: 53492
diff changeset
1492 with support.EnvironmentVarGuard() as env:
53646
5c55b9c80846 Merged revisions 72167 via svnmerge from
Walter Dörwald <walter@livinglogic.de>
parents: 53496
diff changeset
1493 env["COLUMNS"] = "80"
40643
47f9efdc0855 Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40626
diff changeset
1494 self.parser.formatter = TitledHelpFormatter()
47f9efdc0855 Merged revisions 53304-53433,53435-53450 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 40626
diff changeset
1495 self.assertHelpEquals(_expected_help_title_formatter)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1496
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1497 def test_wrap_columns(self):
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1498 # Ensure that wrapping respects $COLUMNS environment variable.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1499 # Need to reconstruct the parser, since that's the only time
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1500 # we look at $COLUMNS.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1501 self.parser = self.make_parser(60)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1502 self.assertHelpEquals(_expected_help_short_lines)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1503
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1504 def test_help_unicode(self):
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1505 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE)
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
1506 self.parser.add_option("-a", action="store_true", help="ol\u00E9!")
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
1507 expect = """\
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1508 Options:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1509 -h, --help show this help message and exit
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1510 -a ol\u00E9!
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1511 """
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1512 self.assertHelpEquals(expect)
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1513
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1514 def test_help_unicode_description(self):
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1515 self.parser = InterceptingOptionParser(usage=SUPPRESS_USAGE,
41575
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
1516 description="ol\u00E9!")
beacf40b5960 Rip out all the u"..." literals and calls to unicode().
Guido van Rossum <guido@python.org>
parents: 41554
diff changeset
1517 expect = """\
39442
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1518 ol\u00E9!
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1519
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1520 Options:
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1521 -h, --help show this help message and exit
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1522 """
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1523 self.assertHelpEquals(expect)
654c380cf8b9 Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents: 38464
diff changeset
1524
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1525 def test_help_description_groups(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1526 self.parser.set_description(
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1527 "This is the program description for %prog. %prog has "
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1528 "an option group as well as single options.")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1529
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1530 group = OptionGroup(
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1531 self.parser, "Dangerous Options",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1532 "Caution: use of these options is at your own risk. "
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1533 "It is believed that some of them bite.")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1534 group.add_option("-g", action="store_true", help="Group option.")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1535 self.parser.add_option_group(group)
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1536
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1537 expect = """\
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1538 Usage: bar.py [options]
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1539
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1540 This is the program description for bar.py. bar.py has an option group as
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1541 well as single options.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1542
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1543 Options:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1544 -a APPLE throw APPLEs at basket
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1545 -b NUM, --boo=NUM shout "boo!" NUM times (in order to frighten away all the
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1546 evil spirits that cause trouble and mayhem)
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1547 --foo=FOO store FOO in the foo list for later fooing
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1548 -h, --help show this help message and exit
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1549
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1550 Dangerous Options:
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1551 Caution: use of these options is at your own risk. It is believed
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1552 that some of them bite.
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1553
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1554 -g Group option.
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1555 """
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1556
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1557 self.assertHelpEquals(expect)
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1558
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1559 self.parser.epilog = "Please report bugs to /dev/null."
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1560 self.assertHelpEquals(expect + "\nPlease report bugs to /dev/null.\n")
33848
3398c5ce8b7a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 33846
diff changeset
1561
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1562
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1563 class TestMatchAbbrev(BaseTest):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1564 def test_match_abbrev(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1565 self.assertEqual(_match_abbrev("--f",
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1566 {"--foz": None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1567 "--foo": None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1568 "--fie": None,
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1569 "--f": None}),
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1570 "--f")
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1571
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1572 def test_match_abbrev_error(self):
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1573 s = "--f"
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1574 wordmap = {"--foz": None, "--foo": None, "--fie": None}
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1575 self.assertRaises(
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1576 _match_abbrev, (s, wordmap), None,
38464
e989ee5d404a ("Forward-port" of r46506)
Armin Rigo <arigo@tunes.org>
parents: 37929
diff changeset
1577 BadOptionError, "ambiguous option: --f (--fie, --foo, --foz?)")
32870
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1578
195655299ed3 Upgrade optparse module and tests to Optik 1.5a1:
Greg Ward <gward@python.net>
parents: 31858
diff changeset
1579
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1580 class TestParseNumber(BaseTest):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1581 def setUp(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1582 self.parser = InterceptingOptionParser()
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1583 self.parser.add_option("-n", type=int)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40643
diff changeset
1584 self.parser.add_option("-l", type=int)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1585
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1586 def test_parse_num_fail(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1587 self.assertRaises(
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1588 _parse_num, ("", int), {},
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1589 ValueError,
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1590 re.compile(r"invalid literal for int().*: '?'?"))
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1591 self.assertRaises(
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40643
diff changeset
1592 _parse_num, ("0xOoops", int), {},
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1593 ValueError,
42161
0eb840f2dafa Make test_optparse pass.
Guido van Rossum <guido@python.org>
parents: 41986
diff changeset
1594 re.compile(r"invalid literal for int().*: s?'?0xOoops'?"))
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1595
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1596 def test_parse_num_ok(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1597 self.assertEqual(_parse_num("0", int), 0)
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1598 self.assertEqual(_parse_num("0x10", int), 16)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40643
diff changeset
1599 self.assertEqual(_parse_num("0XA", int), 10)
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40643
diff changeset
1600 self.assertEqual(_parse_num("010", int), 8)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1601 self.assertEqual(_parse_num("0b11", int), 3)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 40643
diff changeset
1602 self.assertEqual(_parse_num("0b", int), 0)
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1603
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1604 def test_numeric_options(self):
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1605 self.assertParseOK(["-n", "42", "-l", "0x20"],
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1606 { "n": 42, "l": 0x20 }, [])
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1607 self.assertParseOK(["-n", "0b0101", "-l010"],
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1608 { "n": 5, "l": 8 }, [])
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1609 self.assertParseFail(["-n008"],
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1610 "option -n: invalid integer value: '008'")
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1611 self.assertParseFail(["-l0b0123"],
40626
4aee3f672f77 Merged the int/long unification branch, by very crude means (sorry Thomas!).
Guido van Rossum <guido@python.org>
parents: 40587
diff changeset
1612 "option -l: invalid integer value: '0b0123'")
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1613 self.assertParseFail(["-l", "0x12x"],
40626
4aee3f672f77 Merged the int/long unification branch, by very crude means (sorry Thomas!).
Guido van Rossum <guido@python.org>
parents: 40587
diff changeset
1614 "option -l: invalid integer value: '0x12x'")
37929
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1615
88da84776119 Update optparse to Optik 1.5.1.
Greg Ward <gward@python.net>
parents: 37549
diff changeset
1616
28917
1741af48fd9f Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents: 28706
diff changeset
1617 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
1618 support.run_unittest(__name__)
28706
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1619
52930be9dfea Test suite for optparse. This is a slightly-edited copy of
Greg Ward <gward@python.net>
parents:
diff changeset
1620 if __name__ == '__main__':
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40644
diff changeset
1621 test_main()