diff --git a/test/test_requires.py b/test/test_requires.py index 3cb9c67..5fdcbdd 100644 --- a/test/test_requires.py +++ b/test/test_requires.py @@ -131,3 +131,20 @@ def test_requires_not_transitive(): assert props == ['disabled'] # c.ip_address_service_web + + +def test_requires_None(): + a = BoolOption('activate_service', '') + b = IPOption('ip_address_service', '', + requires=[(a, None, 'disabled')]) + od = OptionDescription('service', '', [a, b]) + c = Config(od) + c.read_write() + props = [] + try: + c.ip_address_service + except PropertiesOptionError, err: + props = err.proptype + assert props == ['disabled'] + c.activate_service = False + c.ip_address_service diff --git a/tiramisu/option.py b/tiramisu/option.py index 20135d2..f392b07 100644 --- a/tiramisu/option.py +++ b/tiramisu/option.py @@ -814,7 +814,7 @@ def validate_requires_arg(requires, name): if req[0].impl_is_multi(): raise ValueError(_('malformed requirements option {0} ' 'should not be a multi').format(name)) - if not req[0]._validate(req[1]): + if req[1] is not None and not req[0]._validate(req[1]): raise ValueError(_('malformed requirements second argument ' 'must be valid for option {0}').format(name)) if len(req) == 3: