[pypy-svn] r32826 - in pypy/dist/pypy/config: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Mon Oct 2 17:17:35 CEST 2006
Author: cfbolz
Date: Mon Oct 2 17:17:34 2006
New Revision: 32826
Modified:
pypy/dist/pypy/config/config.py
pypy/dist/pypy/config/test/test_config.py
Log:
for every boolean option add an equivalent --no-... option. The help for it is
a bit strange still.
Modified: pypy/dist/pypy/config/config.py
==============================================================================
--- pypy/dist/pypy/config/config.py (original)
+++ pypy/dist/pypy/config/config.py Mon Oct 2 17:17:34 2006
@@ -193,7 +193,20 @@
parser.add_option(help=self.doc,
action='callback',
callback=_callback, *argnames)
-
+ no_argnames = ["--no-" + argname.lstrip("-") for argname in argnames
+ if argname.startswith("--")]
+ if len(no_argnames) == 0:
+ no_argnames = ["--no-" + argname.lstrip("-")
+ for argname in argnames]
+ def _callback(option, opt_str, value, parser, *args, **kwargs):
+ try:
+ config.setoption(self._name, False, who='cmdline')
+ except ValueError, e:
+ raise optparse.OptionValueError(e.args[0])
+ parser.add_option(help="unset option set by %s" % (argnames[0], ),
+ action='callback',
+ callback=_callback, *no_argnames)
+
class IntOption(Option):
def __init__(self, name, doc, default=0, cmdline=DEFAULT_OPTION_NAME):
super(IntOption, self).__init__(name, doc, cmdline)
Modified: pypy/dist/pypy/config/test/test_config.py
==============================================================================
--- pypy/dist/pypy/config/test/test_config.py (original)
+++ pypy/dist/pypy/config/test/test_config.py Mon Oct 2 17:17:34 2006
@@ -131,24 +131,28 @@
assert config.int == 2
assert config.float == 0.1
- py.test.raises(SystemExit,
+ py.test.raises(SystemExit,
"(options, args) = parser.parse_args(args=['--int=foo', '-f bar'])")
def test_to_optparse_bool():
- booloption = BoolOption('bool', 'Boolean option test', default=False,
- cmdline='--bool -b')
- descr = OptionDescription('test', '', [booloption])
+ booloption1 = BoolOption('bool1', 'Boolean option test', default=False,
+ cmdline='--bool1 -b')
+ booloption2 = BoolOption('bool2', 'Boolean option test', default=True,
+ cmdline='--bool2 -c')
+ descr = OptionDescription('test', '', [booloption1, booloption2])
config = Config(descr)
- parser = to_optparse(config, ['bool'])
+ parser = to_optparse(config, ['bool1', 'bool2'])
(options, args) = parser.parse_args(args=['-b'])
- assert config.bool
+ assert config.bool1
+ assert config.bool2
config = Config(descr)
- parser = to_optparse(config, ['bool'])
- (options, args) = parser.parse_args(args=[])
- assert not config.bool
+ parser = to_optparse(config, ['bool1', 'bool2'])
+ (options, args) = parser.parse_args(args=['--no-bool2'])
+ assert not config.bool1
+ assert not config.bool2
py.test.raises(SystemExit,
"(options, args) = parser.parse_args(args=['-bfoo'])")
More information about the pypy-svn
mailing list