allow None in requirement
authorEmmanuel Garette <egarette@cadoles.com>
Thu, 13 Jun 2013 10:15:46 +0000 (12:15 +0200)
committerEmmanuel Garette <egarette@cadoles.com>
Thu, 13 Jun 2013 10:15:46 +0000 (12:15 +0200)
test/test_requires.py
tiramisu/option.py

index 3cb9c67..5fdcbdd 100644 (file)
@@ -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
index 20135d2..f392b07 100644 (file)
@@ -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: