~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_config.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-08-12 07:57:38 UTC
  • mfrom: (6059.1.5 invalid-config-value)
  • Revision ID: pqm@pqm.ubuntu.com-20110812075738-z6kjnvy20806946j
(vila) Allow option to require a warning or error when an invalid value is
 found in a config file. (Vincent Ladeuil)

Show diffs side-by-side

added added

removed removed

Lines of Context:
2964
2964
        self.overrideAttr(config, 'option_registry', config.OptionRegistry())
2965
2965
        self.registry = config.option_registry
2966
2966
 
2967
 
    def register_bool_option(self, name, default):
 
2967
    def register_bool_option(self, name, default, invalid=None):
2968
2968
        b = config.Option(name, default=default, help='A boolean.',
2969
 
                          from_unicode=config.bool_from_store)
 
2969
                          from_unicode=config.bool_from_store,
 
2970
                          invalid=invalid)
2970
2971
        self.registry.register(b)
2971
2972
 
2972
2973
    def test_get_with_bool_not_defined_default_true(self):
2987
2988
        self.conf.store._load_from_string('foo=not-a-boolean')
2988
2989
        self.assertEquals(False, self.conf.get('foo'))
2989
2990
 
 
2991
    def test_get_invalid_warns(self):
 
2992
        self.register_bool_option('foo', False, invalid='warning')
 
2993
        self.conf.store._load_from_string('foo=not-a-boolean')
 
2994
        warnings = []
 
2995
        def warning(*args):
 
2996
            warnings.append(args[0] % args[1:])
 
2997
        self.overrideAttr(trace, 'warning', warning)
 
2998
        self.assertEquals(False, self.conf.get('foo'))
 
2999
        self.assertLength(1, warnings)
 
3000
        self.assertEquals('Value "not-a-boolean" is not valid for "foo"',
 
3001
                          warnings[0])
 
3002
 
 
3003
    def test_get_invalid_errors(self):
 
3004
        self.register_bool_option('foo', False, invalid='error')
 
3005
        self.conf.store._load_from_string('foo=not-a-boolean')
 
3006
        self.assertRaises(errors.ConfigOptionValueError, self.conf.get, 'foo')
 
3007
 
2990
3008
 
2991
3009
class TestStackSet(TestStackWithTransport):
2992
3010