raises(ValueError, "c.a = ['192.168.1.1']")
+def test_consistency_network_netmask_multi_slave_default():
+ a = NetworkOption('a', '', multi=True, properties=('mandatory',))
+ b = NetmaskOption('b', '', default_multi=u'255.255.255.0', multi=True, properties=('mandatory',))
+ od = OptionDescription('a', '', [a, b])
+ od.impl_set_group_type(groups.master)
+ b.impl_add_consistency('network_netmask', a)
+ c = Config(od)
+ c.read_write()
+ c.cfgimpl_get_settings().remove('cache')
+ assert c.a == []
+ assert c.b == []
+ c.a.append(u'192.168.1.0')
+ c.read_only()
+ assert c.a == [u'192.168.1.0']
+ assert c.b == [u'255.255.255.0']
+
+
def test_consistency_ip_netmask_multi_master():
a = IPOption('a', '', multi=True)
b = NetmaskOption('b', '', multi=True)
def getitem(self, values, opt, path, validate, force_permissive,
force_properties, validate_properties, slave_path=undefined,
- slave_value=undefined):
+ slave_value=undefined, setting_properties=undefined):
if self.is_master(opt):
return self._getmaster(values, opt, path, validate,
force_permissive, force_properties,
validate_properties, slave_path,
- slave_value)
+ slave_value, setting_properties)
else:
return self._getslave(values, opt, path, validate,
force_permissive, force_properties,
- validate_properties)
+ validate_properties, setting_properties)
def _getmaster(self, values, opt, path, validate, force_permissive,
force_properties, validate_properties, c_slave_path,
- c_slave_value):
+ c_slave_value, setting_properties):
value = values._get_validated_value(opt, path, validate,
force_permissive,
force_properties,
- validate_properties)
+ validate_properties,
+ setting_properties=setting_properties)
if validate is True:
masterlen = len(value)
for slave in self.getslaves(opt):
False,
False,
None, False,
- None) # not undefined
+ None,
+ setting_properties=setting_properties)
slavelen = len(slave_value)
self.validate_slave_length(masterlen, slavelen, slave.impl_getname(), opt)
except ConfigError: # pragma: optional cover
return value
def _getslave(self, values, opt, path, validate, force_permissive,
- force_properties, validate_properties):
+ force_properties, validate_properties, setting_properties):
"""
if master has length 0:
return []
list is greater than master: raise SlaveError
"""
master = self.getmaster(opt)
- masterp = master.impl_getpath(values._getcontext())
+ context = values._getcontext()
+ masterp = master.impl_getpath(context)
masterlen = self.get_length(values, opt, validate, undefined,
undefined, force_permissive,
master=master)
value = values._get_validated_value(opt, path, validate,
force_permissive,
force_properties,
- validate_properties,
+ False,
None, # not undefined
- with_meta=master_is_meta)
+ with_meta=master_is_meta,
+ setting_properties=setting_properties)
#if slave, had values until master's one
- path = opt.impl_getpath(values._getcontext())
+ path = opt.impl_getpath(context)
valuelen = len(value)
if validate:
self.validate_slave_length(masterlen, valuelen,
index = valuelen + num
value.append(values._get_validated_value(opt, path, True,
False, None,
- validate_properties,
+ validate_properties=False,
with_meta=master_is_meta,
- index=index),
+ index=index,
+ setting_properties=setting_properties),
setitem=False,
force=True)
+ if validate_properties:
+ context.cfgimpl_get_settings().validate_properties(opt, False,
+ False,
+ value=value,
+ path=path,
+ force_permissive=force_permissive,
+ force_properties=force_properties,
+ self_properties=setting_properties)
return value
def setitem(self, values, opt, value, path):