slave with requires could not raise

This commit is contained in:
Emmanuel Garette 2016-10-12 20:49:56 +02:00
parent 6d71749014
commit 071035854b
3 changed files with 34 additions and 4 deletions

View file

@ -246,14 +246,27 @@ def test_multi_with_requires_that_is_masterslave_master():
raises(ValueError, "Config(descr)")
def test_multi_with_requires_that_is_masterslave2():
def test_multi_with_requires_that_is_masterslave_slave():
b = IntOption('int', 'Test int option', default=[0], multi=True)
c = StrOption('str', 'Test string option', multi=True)
d = StrOption('str1', 'Test string option', requires=[{'option': c, 'expected': '1', 'action': 'hidden'}], multi=True)
descr = OptionDescription("int", "", [b, c, d])
descr.impl_set_group_type(groups.master)
Config(descr)
config = Config(descr)
config.read_write()
assert config.int == [0]
assert config.str == [None]
assert config.str1 == [None]
config.int = [0, 1]
assert config.int == [0, 1]
assert config.str == [None, None]
assert config.str1 == [None, None]
config.str = [None, '1']
config.read_only()
assert config.str1 == [None, None]
config.read_write()
assert config.str1[0] is None
raises(PropertiesOptionError, 'config.str1[1]')
def test_multi_with_requires_that_is_not_same_masterslave():
b = IntOption('int', 'Test int option', default=[0], multi=True)

View file

@ -644,6 +644,12 @@ def test_master_slave_requires():
cfg.ip_admin_eth0.ip_admin_eth0.append('192.168.1.1')
assert cfg.ip_admin_eth0.netmask_admin_eth0[0] is None
raises(PropertiesOptionError, "cfg.ip_admin_eth0.netmask_admin_eth0[1]")
cfg.ip_admin_eth0.ip_admin_eth0[1] = '192.168.1.2'
assert cfg.ip_admin_eth0.netmask_admin_eth0[1] is None
cfg.ip_admin_eth0.netmask_admin_eth0[1] = '255.255.255.255'
assert cfg.ip_admin_eth0.netmask_admin_eth0[1] == '255.255.255.255'
cfg.ip_admin_eth0.ip_admin_eth0[1] = '192.168.1.1'
raises(PropertiesOptionError, "cfg.ip_admin_eth0.netmask_admin_eth0[1]")
def test_master_slave_requires_no_master():
@ -668,3 +674,11 @@ def test_master_slave_requires_no_master():
raises(PropertiesOptionError, "cfg.ip_admin_eth0.netmask_admin_eth0")
raises(PropertiesOptionError, "cfg.ip_admin_eth0.netmask_admin_eth0[0]")
raises(PropertiesOptionError, "cfg.ip_admin_eth0.netmask_admin_eth0[1]")
cfg.activate = True
assert cfg.ip_admin_eth0.netmask_admin_eth0 == [None, None]
cfg.ip_admin_eth0.netmask_admin_eth0 = [None, '255.255.255.255']
assert cfg.ip_admin_eth0.netmask_admin_eth0[1] == '255.255.255.255'
cfg.activate = False
raises(PropertiesOptionError, "cfg.ip_admin_eth0.netmask_admin_eth0")
raises(PropertiesOptionError, "cfg.ip_admin_eth0.netmask_admin_eth0[0]")
raises(PropertiesOptionError, "cfg.ip_admin_eth0.netmask_admin_eth0[1]")

View file

@ -230,10 +230,13 @@ class MasterSlaves(object):
multi.append_properties_error(value)
else:
return value
else:
elif index is None:
multi.append(value, setitem=False, force=True, validate=validate,
force_permissive=force_permissive)
one_has_value = True
else:
multi = value
one_has_value = True
if not one_has_value:
#raise last err
if returns_raise: