add symlink test
authorEmmanuel Garette <egarette@cadoles.com>
Thu, 13 Jun 2013 20:07:58 +0000 (22:07 +0200)
committerEmmanuel Garette <egarette@cadoles.com>
Thu, 13 Jun 2013 20:07:58 +0000 (22:07 +0200)
test/test_symlink.py [new file with mode: 0644]

diff --git a/test/test_symlink.py b/test/test_symlink.py
new file mode 100644 (file)
index 0000000..e858a53
--- /dev/null
@@ -0,0 +1,116 @@
+import autopath
+
+from tiramisu.option import BoolOption, StrOption, SymLinkOption, \
+    OptionDescription
+from tiramisu.config import Config
+from tiramisu.error import PropertiesOptionError
+from tiramisu.setting import groups, owners
+
+from py.test import raises
+
+
+#____________________________________________________________
+def test_symlink_option():
+    boolopt = BoolOption("b", "", default=False)
+    linkopt = SymLinkOption("c", boolopt)
+    descr = OptionDescription("opt", "",
+                              [linkopt, OptionDescription("s1", "", [boolopt])])
+    config = Config(descr)
+    setattr(config, "s1.b", True)
+    setattr(config, "s1.b", False)
+    assert config.s1.b is False
+    assert config.c is False
+    config.c = True
+    assert config.s1.b is True
+    assert config.c is True
+    config.c = False
+    assert config.s1.b is False
+    assert config.c is False
+
+
+def test_symlink_requires():
+    boolopt = BoolOption('b', '', default=True)
+    stropt = StrOption('s', '', requires=[(boolopt, False, 'disabled')])
+    linkopt = SymLinkOption("c", stropt)
+    descr = OptionDescription('opt', '', [boolopt, stropt, linkopt])
+    config = Config(descr)
+    config.read_write()
+    assert config.b is True
+    assert config.s is None
+    assert config.c is None
+    config.b = False
+    #
+    props = []
+    try:
+        config.s
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+    #
+    props = []
+    try:
+        config.c
+    except PropertiesOptionError, err:
+        props = err.proptype
+    assert props == ['disabled']
+
+
+def test_symlink_multi():
+    boolopt = BoolOption("b", "", default=[False], multi=True)
+    linkopt = SymLinkOption("c", boolopt)
+    descr = OptionDescription("opt", "",
+                              [linkopt, OptionDescription("s1", "", [boolopt])])
+    config = Config(descr)
+    assert config.s1.b == [False]
+    assert config.c == [False]
+    config.c = [True]
+    assert config.s1.b == [True]
+    assert config.c == [True]
+    config.c = [False]
+    assert config.s1.b == [False]
+    assert config.c == [False]
+    config.c.append(True)
+    assert config.s1.b == [False, True]
+    assert config.c == [False, True]
+    assert boolopt.impl_is_multi() is True
+    assert linkopt.impl_is_multi() is True
+
+
+def test_symlink_owner():
+    boolopt = BoolOption("b", "", default=False)
+    linkopt = SymLinkOption("c", boolopt)
+    descr = OptionDescription("opt", "",
+                              [linkopt, OptionDescription("s1", "", [boolopt])])
+    config = Config(descr)
+    assert config.getowner('s1.b') == owners.default
+    assert config.getowner('c') == owners.default
+    config.c = True
+    assert config.getowner('s1.b') != owners.default
+    assert config.getowner('c') != owners.default
+
+
+def test_symlink_get_information():
+    boolopt = BoolOption("b", "", default=False)
+    linkopt = SymLinkOption("c", boolopt)
+    boolopt.impl_set_information('test', 'test')
+    assert boolopt.impl_get_information('test') == 'test'
+    assert linkopt.impl_get_information('test') == 'test'
+    boolopt.impl_set_information('test', 'test2')
+    assert boolopt.impl_get_information('test') == 'test2'
+    assert linkopt.impl_get_information('test') == 'test2'
+
+
+def test_symlink_master():
+    a = StrOption('a', "", multi=True)
+    ip_admin_eth0 = SymLinkOption('ip_admin_eth0', a)
+    netmask_admin_eth0 = StrOption('netmask_admin_eth0', "", multi=True)
+    interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
+    raises(ValueError, 'interface1.impl_set_group_type(groups.master)')
+
+
+def test_symlink_slaves():
+    a = StrOption('a', "", multi=True)
+    ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True)
+    netmask_admin_eth0 = SymLinkOption('netmask_admin_eth0', a)
+    interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
+    raises(ValueError, 'interface1.impl_set_group_type(groups.master)')