correction on test test_multi.py

This commit is contained in:
Emmanuel Garette 2017-12-05 21:49:19 +01:00
parent 924ac4e597
commit 48e172a59a
2 changed files with 49 additions and 37 deletions

View File

@ -586,41 +586,49 @@ class Settings(object):
# validate properties
def validate_properties(self,
opt_or_descr,
opt,
path,
setting_properties,
index=None,
force_permissive=False):
"""
validation upon the properties related to `opt_or_descr`
validation upon the properties related to `opt`
:param opt_or_descr: an option or an option description object
:param opt: an option or an option description object
:param force_permissive: behaves as if the permissive property
was present
"""
# opt properties
properties = self.getproperties(opt_or_descr,
self_properties = self.getproperties(opt,
path,
setting_properties=setting_properties,
index=index)
# calc properties
properties &= setting_properties - set(['frozen'])
if not opt_or_descr.impl_is_optiondescription():
properties = self_properties & setting_properties - set(['frozen'])
if not opt.impl_is_optiondescription():
#mandatory
if 'mandatory' in properties or 'empty' in properties:
value = 'pouet'
if self.validate_mandatory(opt_or_descr,
value = self._getcontext().cfgimpl_get_values().get_cached_value(opt,
path=path,
validate=False,
setting_properties=setting_properties,
self_properties=self_properties,
index=index)
if not self.validate_mandatory(opt,
index,
value,
setting_properties,
properties):
properties += set(['mandatory']) - set(['empty'])
properties -= set(['mandatory'])
else:
properties -= set(['mandatory', 'empty'])
properties |= set(['mandatory'])
properties -= set(['empty'])
opt_type = 'option'
else:
opt_type = 'optiondescription'
# remove permissive properties
if force_permissive is True and properties:
# remove global permissive if need
@ -628,7 +636,7 @@ class Settings(object):
# at this point an option should not remain in properties
if properties != frozenset():
datas = {'opt': opt_or_descr,
datas = {'opt': opt,
'path': path,
'setting_properties': setting_properties,
'index': index,

View File

@ -70,16 +70,7 @@ class Values(object):
self_properties=undefined,
index=None,
display_warnings=True):
context = self._getcontext()
settings = context.cfgimpl_get_settings()
if path is None:
path = opt.impl_getpath(context)
ntime = None
if self_properties is undefined:
self_properties = settings.getproperties(opt,
path,
setting_properties=setting_properties,
index=index)
if 'cache' in setting_properties and self._p_.hascache(path, index):
if 'expire' in setting_properties:
ntime = int(time())
@ -113,7 +104,7 @@ class Values(object):
path,
validate,
setting_properties,
self_properties=None,
self_properties=undefined,
index=None,
display_warnings=True,
force_permissive=False):
@ -181,6 +172,12 @@ class Values(object):
:param opt: the `option.Option()` object
:returns: the option's value (or the default value if not set)
"""
if self_properties is undefined:
settings = self._getcontext().cfgimpl_get_settings()
self_properties = settings.getproperties(opt,
path,
setting_properties=setting_properties,
index=index)
force_default = 'frozen' in self_properties and \
'force_default_on_freeze' in self_properties
# not default value
@ -243,9 +240,13 @@ class Values(object):
context.cfgimpl_reset_cache(opt=opt,
path=path)
if opt.impl_is_master_slaves('slave'):
index_ = index
else:
index_ = None
if self._is_meta(opt,
path,
index,
index_,
setting_properties,
force_permissive=force_permissive):
meta = context.cfgimpl_get_meta()
@ -344,10 +345,7 @@ class Values(object):
else:
allow_empty_list = opt.impl_allow_empty_list()
if allow_empty_list is undefined:
if opt.impl_is_master_slaves('slave'):
allow_empty_list = True
else:
allow_empty_list = False
allow_empty_list = opt.impl_is_master_slaves('slave')
isempty = value is None or (not allow_empty_list and value == []) or \
None in value or empty in value
else:
@ -744,7 +742,8 @@ class Values(object):
#______________________________________________________________________
# mandatory warnings
def mandatory_warnings(self, force_permissive=True):
def mandatory_warnings(self,
force_permissive=True):
"""convenience function to trace Options that are mandatory and
where no value has been set
@ -776,10 +775,14 @@ class Values(object):
if opt.impl_is_optiondescription():
#FIXME ?
if not settings.validate_properties(opt, True, False, path=path,
if not settings.validate_properties(opt,
True,
False,
path=path,
force_permissive=True,
setting_properties=setting_properties):
for path in _mandatory_warnings(opt, currpath + [name]):
for path in _mandatory_warnings(opt,
currpath + [name]):
yield path
else:
if opt.impl_is_symlinkoption():
@ -788,7 +791,8 @@ class Values(object):
path,
setting_properties=setting_properties)
if 'mandatory' in self_properties or 'empty' in self_properties:
err = self.get_cached_value(opt, path=path,
err = self.get_cached_value(opt,
path=path,
trusted_cached_properties=False,
force_permissive=True,
setting_properties=setting_properties,