python 3.5 support
[tiramisu.git] / test / test_option_consistency.py
index dca3e9a..3761cf2 100644 (file)
@@ -1,4 +1,4 @@
-from autopath import do_autopath
+from .autopath import do_autopath
 do_autopath()
 
 from py.test import raises
 do_autopath()
 
 from py.test import raises
@@ -6,11 +6,15 @@ from py.test import raises
 from tiramisu.setting import owners, groups
 from tiramisu.config import Config
 from tiramisu.option import IPOption, NetworkOption, NetmaskOption, IntOption,\
 from tiramisu.setting import owners, groups
 from tiramisu.config import Config
 from tiramisu.option import IPOption, NetworkOption, NetmaskOption, IntOption,\
-    BroadcastOption, SymLinkOption, OptionDescription, submulti
+    BroadcastOption, StrOption, SymLinkOption, OptionDescription, submulti
 from tiramisu.error import ConfigError, ValueWarning, PropertiesOptionError
 import warnings
 
 
 from tiramisu.error import ConfigError, ValueWarning, PropertiesOptionError
 import warnings
 
 
+def return_value(value=None):
+    return value
+
+
 def test_consistency():
     a = IntOption('a', '')
     b = IntOption('b', '')
 def test_consistency():
     a = IntOption('a', '')
     b = IntOption('b', '')
@@ -67,9 +71,15 @@ def test_consistency_warnings_only_more_option():
     with warnings.catch_warnings(record=True) as w:
         c.b = 1
     assert w != []
     with warnings.catch_warnings(record=True) as w:
         c.b = 1
     assert w != []
+    assert len(w) == 1
+    with warnings.catch_warnings(record=True) as w:
+        c.d
+    assert w != []
+    assert len(w) == 1
     with warnings.catch_warnings(record=True) as w:
         c.d = 1
     assert w != []
     with warnings.catch_warnings(record=True) as w:
         c.d = 1
     assert w != []
+    assert len(w) == 1
 
 
 def test_consistency_not_equal():
 
 
 def test_consistency_not_equal():
@@ -231,6 +241,13 @@ def test_consistency_not_equal_masterslave():
     c.a = [1]
     raises(ValueError, "c.b = [1]")
     c.b = [2]
     c.a = [1]
     raises(ValueError, "c.b = [1]")
     c.b = [2]
+    del(c.a)
+    c.a.append(1)
+    c.make_dict()
+    c.b[0] = 3
+    c.a.append(2)
+    c.b[0] = 3
+    raises(ValueError, "c.b[1] = 3")
 
 
 def test_consistency_not_equal_masterslaves_default():
 
 
 def test_consistency_not_equal_masterslaves_default():
@@ -743,3 +760,15 @@ def test_consistency_warnings_error():
     with warnings.catch_warnings(record=True) as w:
         raises(ValueError, "cfg.a = 1")
     assert w == []
     with warnings.catch_warnings(record=True) as w:
         raises(ValueError, "cfg.a = 1")
     assert w == []
+
+
+def test_consistency_network_netmask_mandatory():
+    a = NetworkOption('a', '', multi=True, properties=('mandatory',), default=[u'0.0.0.0'])
+    b = NetmaskOption('b', '', multi=True, properties=('mandatory',), default_multi=u'0.0.0.0')
+    od = OptionDescription('a', '', [a, b])
+    od.impl_set_group_type(groups.master)
+    b.impl_add_consistency('network_netmask', a)
+    c = Config(od)
+    c.read_only()
+    c.cfgimpl_get_settings().remove('mandatory')
+    c.make_dict()