add global 'empty' property, this property raise mandatory PropertiesOptionError if multi or master have empty value

This commit is contained in:
2015-07-26 18:55:21 +02:00
parent 1da83edfba
commit 8e7a32de08
7 changed files with 145 additions and 22 deletions

View File

@ -1,12 +1,13 @@
# coding: utf-8
from autopath import do_autopath
do_autopath()
from time import sleep
#from py.test import raises
from py.test import raises
from tiramisu.config import Config
from tiramisu.option import StrOption, UnicodeOption, OptionDescription
from tiramisu.error import PropertiesOptionError
from tiramisu.setting import groups
def make_description():
@ -316,3 +317,87 @@ def test_mandatory_warnings_frozen():
config.read_only()
assert config.cfgimpl_get_values().mandatory_warnings() == ['str', 'str1', 'unicode2', 'str3']
sleep(.1)
def test_mandatory_master():
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True,
properties=('mandatory', ))
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-réseau",
multi=True)
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
interface1.impl_set_group_type(groups.master)
o = OptionDescription('o', '', [interface1])
config = Config(o)
config.read_only()
raises(PropertiesOptionError, 'config.ip_admin_eth0.ip_admin_eth0')
raises(PropertiesOptionError, 'config.ip_admin_eth0.netmask_admin_eth0')
def test_mandatory_master_empty():
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True)
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-réseau",
multi=True)
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
interface1.impl_set_group_type(groups.master)
o = OptionDescription('o', '', [interface1])
config = Config(o)
config.read_write()
assert config.ip_admin_eth0.ip_admin_eth0 == []
assert config.ip_admin_eth0.netmask_admin_eth0 == []
#
config.ip_admin_eth0.ip_admin_eth0.append()
assert config.ip_admin_eth0.ip_admin_eth0 == [None]
assert config.ip_admin_eth0.netmask_admin_eth0 == [None]
config.read_only()
raises(PropertiesOptionError, "config.ip_admin_eth0.ip_admin_eth0")
raises(PropertiesOptionError, "config.ip_admin_eth0.netmask_admin_eth0")
config.read_write()
del(config.ip_admin_eth0.ip_admin_eth0)
del(config.ip_admin_eth0.netmask_admin_eth0)
assert config.ip_admin_eth0.ip_admin_eth0 == []
assert config.ip_admin_eth0.netmask_admin_eth0 == []
#
config.ip_admin_eth0.ip_admin_eth0.append('')
assert config.ip_admin_eth0.ip_admin_eth0 == ['']
assert config.ip_admin_eth0.netmask_admin_eth0 == [None]
config.read_only()
raises(PropertiesOptionError, "config.ip_admin_eth0.ip_admin_eth0")
raises(PropertiesOptionError, "config.ip_admin_eth0.netmask_admin_eth0")
config.read_write()
#
config.read_write()
config.ip_admin_eth0.ip_admin_eth0 = ['ip']
config.read_only()
assert config.ip_admin_eth0.ip_admin_eth0 == ['ip']
assert config.ip_admin_eth0.netmask_admin_eth0 == [None]
def test_mandatory_slave():
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True)
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "masque du sous-réseau",
multi=True, properties=('mandatory', ))
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
interface1.impl_set_group_type(groups.master)
o = OptionDescription('o', '', [interface1])
config = Config(o)
config.read_only()
assert config.ip_admin_eth0.ip_admin_eth0 == []
assert config.ip_admin_eth0.netmask_admin_eth0 == []
#
config.read_write()
config.ip_admin_eth0.ip_admin_eth0.append('ip')
config.read_only()
assert config.ip_admin_eth0.ip_admin_eth0 == ['ip']
raises(PropertiesOptionError, 'config.ip_admin_eth0.netmask_admin_eth0')
#
config.read_write()
config.ip_admin_eth0.netmask_admin_eth0 = ['']
config.read_only()
assert config.ip_admin_eth0.ip_admin_eth0 == ['ip']
raises(PropertiesOptionError, 'config.ip_admin_eth0.netmask_admin_eth0')
#
config.read_write()
config.ip_admin_eth0.netmask_admin_eth0 = ['ip']
config.read_only()
assert config.ip_admin_eth0.ip_admin_eth0 == ['ip']
assert config.ip_admin_eth0.netmask_admin_eth0 == ['ip']