empty follower without empty property is valid
This commit is contained in:
parent
fb93c0cf6f
commit
0cb69f7a85
2 changed files with 14 additions and 1 deletions
|
@ -470,7 +470,9 @@ def test_mandatory_follower():
|
|||
cfg = Config(descr)
|
||||
cfg.property.read_only()
|
||||
assert cfg.option('ip_admin_eth0.ip_admin_eth0').value.get() == []
|
||||
#
|
||||
assert cfg.value.dict() == {'ip_admin_eth0.ip_admin_eth0': [],
|
||||
'ip_admin_eth0.netmask_admin_eth0': []}
|
||||
|
||||
cfg.property.read_write()
|
||||
cfg.option('ip_admin_eth0.ip_admin_eth0').value.set(['ip'])
|
||||
cfg.property.read_only()
|
||||
|
@ -488,6 +490,8 @@ def test_mandatory_follower():
|
|||
cfg.property.read_only()
|
||||
assert cfg.option('ip_admin_eth0.ip_admin_eth0').value.get() == ['ip']
|
||||
assert cfg.option('ip_admin_eth0.netmask_admin_eth0', 0).value.get() == 'ip'
|
||||
assert cfg.value.dict() == {'ip_admin_eth0.ip_admin_eth0': ['ip'],
|
||||
'ip_admin_eth0.netmask_admin_eth0': ['ip']}
|
||||
|
||||
|
||||
def test_mandatory_warnings_follower():
|
||||
|
|
|
@ -54,9 +54,13 @@ permissive
|
|||
mandatory
|
||||
should set value for option with this properties if 'mandatory' is set in
|
||||
config
|
||||
example: 'a', ['a'], [None] are valid
|
||||
None, [] are not valid
|
||||
|
||||
empty
|
||||
raise mandatory PropertiesOptionError if multi or leader have empty value
|
||||
example: ['a'] is valid
|
||||
[None] is not valid
|
||||
|
||||
unique
|
||||
raise ValueError if a value is set twice or more in a multi Option
|
||||
|
@ -702,10 +706,15 @@ class Settings(object):
|
|||
option_bag):
|
||||
if 'mandatory' in option_bag.config_bag.properties:
|
||||
values = option_bag.config_bag.context.cfgimpl_get_values()
|
||||
if option_bag.option.impl_is_follower():
|
||||
force_allow_empty_list = True
|
||||
else:
|
||||
force_allow_empty_list = False
|
||||
if not ('permissive' in option_bag.config_bag.properties and
|
||||
'mandatory' in option_bag.config_bag.permissives) and \
|
||||
'mandatory' in option_bag.properties and values.isempty(option_bag.option,
|
||||
value,
|
||||
force_allow_empty_list=force_allow_empty_list,
|
||||
index=option_bag.index):
|
||||
raise PropertiesOptionError(option_bag,
|
||||
['mandatory'],
|
||||
|
|
Loading…
Reference in a new issue