valid default/callback value in consistencies

This commit is contained in:
2015-03-08 12:03:49 +01:00
parent 85297d8c4d
commit c566ad1111
4 changed files with 61 additions and 11 deletions

View File

@ -454,18 +454,32 @@ class Option(OnlyOption):
elif self.impl_is_submulti():
try:
all_cons_vals.append(opt_value[index][submulti_index])
except IndexError:
except IndexError, err:
log.debug('indexerror in submulti opt in _launch_consistency: {0}'.format(err))
#value is not already set, could be higher index
#so return if no value
return
else:
try:
all_cons_vals.append(opt_value[index])
except IndexError:
except IndexError, err:
log.debug('indexerror in _launch_consistency: {0}'.format(err))
#value is not already set, could be higher index
#so return if no value
return
#so return if no value and not default_value
if context is not undefined:
if isinstance(opt, DynSymLinkOption):
path = opt.impl_getpath(context)
else:
path = descr.impl_get_path_by_opt(opt)
default_value = context.cfgimpl_get_values()._getvalue(opt, path, True, index=index)
else:
default_value = opt.impl_getdefault_multi()
if default_value is not None:
all_cons_vals.append(default_value)
else:
return
except PropertiesOptionError as err:
log.debug('propertyerror in _launch_consistency: {0}'.format(err))
if transitive:
raise err
else:

View File

@ -333,9 +333,8 @@ class Values(object):
setting_properties = context.cfgimpl_get_settings()._getproperties()
opt.impl_validate(value, context,
'validator' in setting_properties)
if opt.impl_is_multi():
if opt.impl_is_master_slaves():
opt.impl_get_master_slaves().setitem(self, opt, value, path)
if opt.impl_is_master_slaves():
opt.impl_get_master_slaves().setitem(self, opt, value, path)
self._setvalue(opt, path, value, force_permissive=force_permissive,
is_write=is_write,
setting_properties=setting_properties)
@ -631,10 +630,9 @@ class Multi(list):
"""the list value can be updated (appened)
only if the option is a master
"""
if not force:
if self.opt.impl_is_master_slaves('slave'): # pragma: optional cover
raise SlaveError(_("cannot append a value on a multi option {0}"
" which is a slave").format(self.opt.impl_getname()))
if not force and self.opt.impl_is_master_slaves('slave'): # pragma: optional cover
raise SlaveError(_("cannot append a value on a multi option {0}"
" which is a slave").format(self.opt.impl_getname()))
index = self.__len__()
if value is undefined:
try: