|
|
|
@ -11,7 +11,6 @@ from tiramisu import BoolOption, StrOption, ChoiceOption, IPOption, \
|
|
|
|
|
Config, getapi
|
|
|
|
|
from tiramisu.error import PropertiesOptionError, ConfigError, ConflictError
|
|
|
|
|
from tiramisu.storage import delete_session
|
|
|
|
|
#from .test_state import _diff_opts, _diff_conf
|
|
|
|
|
|
|
|
|
|
from py.test import raises
|
|
|
|
|
|
|
|
|
@ -37,48 +36,43 @@ def return_list(val=None, suffix=None):
|
|
|
|
|
return ['val1', 'val2']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def return_same_list():
|
|
|
|
|
def return_same_list(suffix):
|
|
|
|
|
return ['val1', 'val1']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def return_wrong_list():
|
|
|
|
|
def return_wrong_list(*args, **kwargs):
|
|
|
|
|
return ['---', ' ']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def return_raise():
|
|
|
|
|
def return_raise(suffix):
|
|
|
|
|
raise Exception('error')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_build_dyndescription():
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# cfg = Config(od)
|
|
|
|
|
# assert str(cfg) == """[dodval1]
|
|
|
|
|
#[dodval2]"""
|
|
|
|
|
# assert str(cfg.dodval1) == "stval1 = None"
|
|
|
|
|
# assert str(cfg.dodval2) == "stval2 = None"
|
|
|
|
|
def test_build_dyndescription():
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
cfg = Config(od1)
|
|
|
|
|
api = getapi(cfg)
|
|
|
|
|
assert api.option.make_dict() == {'dodval1.stval1': None, 'dodval2.stval2': None}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_build_dyndescription_raise():
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_raise)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# cfg = Config(od)
|
|
|
|
|
# raises(ConfigError, "str(cfg)")
|
|
|
|
|
def test_build_dyndescription_raise():
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_raise)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
cfg = Config(od1)
|
|
|
|
|
api = getapi(cfg)
|
|
|
|
|
raises(ConfigError, "api.option.make_dict()")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_subpath_dyndescription():
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# assert str(cfg) == "[od]"
|
|
|
|
|
# assert str(cfg.od) == """[dodval1]
|
|
|
|
|
#[dodval2]"""
|
|
|
|
|
# assert str(cfg.od.dodval1) == "stval1 = None"
|
|
|
|
|
# assert str(cfg.od.dodval2) == "stval2 = None"
|
|
|
|
|
def test_subpath_dyndescription():
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
assert api.option.make_dict() == {'od.dodval1.stval1': None, 'od.dodval2.stval2': None}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_dyndescription():
|
|
|
|
@ -99,36 +93,23 @@ def test_unknown_dyndescription():
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval3').value.get()")
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval1.novalue').value.get()")
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval1.stnoval1').value.get()")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_getdoc_dyndescription():
|
|
|
|
|
# st = StrOption('st', 'doc1')
|
|
|
|
|
# dod = DynOptionDescription('dod', 'doc2', [st], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# stval1 = cfg.unwrap_from_path('od.dodval1.stval1')
|
|
|
|
|
# stval2 = cfg.unwrap_from_path('od.dodval2.stval2')
|
|
|
|
|
# dodval1 = cfg.unwrap_from_path('od.dodval1')
|
|
|
|
|
# dodval2 = cfg.unwrap_from_path('od.dodval2')
|
|
|
|
|
# assert stval1.impl_getname() == 'stval1'
|
|
|
|
|
# assert stval2.impl_getname() == 'stval2'
|
|
|
|
|
# assert dodval1.impl_getname() == 'dodval1'
|
|
|
|
|
# assert dodval2.impl_getname() == 'dodval2'
|
|
|
|
|
# assert stval1.impl_getdoc() == 'doc1'
|
|
|
|
|
# assert stval2.impl_getdoc() == 'doc1'
|
|
|
|
|
# assert dodval1.impl_getdoc() == 'doc2'
|
|
|
|
|
# assert dodval2.impl_getdoc() == 'doc2'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_getpaths_dyndescription():
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# assert cfg.cfgimpl_get_description().impl_getpaths() == ['od.dodval1.stval1', 'od.dodval2.stval2']
|
|
|
|
|
# assert cfg.cfgimpl_get_description().impl_getpaths(include_groups=True) == ['od', 'od.dodval1', 'od.dodval1.stval1', 'od.dodval2', 'od.dodval2.stval2']
|
|
|
|
|
def test_getdoc_dyndescription():
|
|
|
|
|
st1 = StrOption('st', 'doc1')
|
|
|
|
|
dod = DynOptionDescription('dod', 'doc2', [st1], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
assert api.option('od.dodval1.stval1').option.name() == 'stval1'
|
|
|
|
|
assert api.option('od.dodval2.stval2').option.name() == 'stval2'
|
|
|
|
|
assert api.option('od.dodval1').option.name() == 'dodval1'
|
|
|
|
|
assert api.option('od.dodval2').option.name() == 'dodval2'
|
|
|
|
|
assert api.option('od.dodval1.stval1').option.doc() == 'doc1'
|
|
|
|
|
assert api.option('od.dodval2.stval2').option.doc() == 'doc1'
|
|
|
|
|
assert api.option('od.dodval1').option.doc() == 'doc2'
|
|
|
|
|
assert api.option('od.dodval2').option.doc() == 'doc2'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_mod_dyndescription():
|
|
|
|
@ -191,7 +172,6 @@ def test_multi_dyndescription():
|
|
|
|
|
api.option('od.dodval2.stval2').value.set(['no'])
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() == ['no']
|
|
|
|
|
#assert cfg.getowner(st) == owners.default
|
|
|
|
|
assert api.option('od.dodval1.stval1').owner.get() == owner
|
|
|
|
|
assert api.option('od.dodval2.stval2').owner.get() == owner
|
|
|
|
|
api.option('od.dodval1.stval1').value.set(['yes', 'yes'])
|
|
|
|
@ -294,34 +274,24 @@ def test_mandatory_dyndescription():
|
|
|
|
|
assert list(api.value.mandatory_warnings()) == ['od.dodval1.stval1', 'od.dodval2.stval2']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_build_dyndescription_context():
|
|
|
|
|
# val1 = StrOption('val1', '', ['val1', 'val2'], multi=True)
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_list, callback_params={'': ((val1, False),)})
|
|
|
|
|
# od = OptionDescription('od', '', [dod, val1])
|
|
|
|
|
# cfg = Config(od)
|
|
|
|
|
# cfg._impl_test = True
|
|
|
|
|
# assert str(cfg) == """[dodval1]
|
|
|
|
|
#[dodval2]
|
|
|
|
|
#val1 = ['val1', 'val2']"""
|
|
|
|
|
# assert str(cfg.dodval1) == "stval1 = None"
|
|
|
|
|
# assert str(cfg.dodval2) == "stval2 = None"
|
|
|
|
|
# cfg.unwrap_from_path('dodval2')
|
|
|
|
|
def test_build_dyndescription_context():
|
|
|
|
|
val1 = StrOption('val1', '', ['val1', 'val2'], multi=True)
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_list, callback_params={'': ((val1, False),)})
|
|
|
|
|
od1 = OptionDescription('od', '', [dod, val1])
|
|
|
|
|
cfg = Config(od1)
|
|
|
|
|
api = getapi(cfg)
|
|
|
|
|
assert api.option.make_dict() == {'dodval1.stval1': None, 'dodval2.stval2': None, 'val1': ['val1', 'val2']}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_subpath_dyndescription_context():
|
|
|
|
|
# val1 = StrOption('val1', '', ['val1', 'val2'], multi=True)
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_list, callback_params={'': ((val1, False),)})
|
|
|
|
|
# od = OptionDescription('od', '', [dod, val1])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# assert str(cfg) == "[od]"
|
|
|
|
|
# assert str(cfg.od) == """[dodval1]
|
|
|
|
|
#[dodval2]
|
|
|
|
|
#val1 = ['val1', 'val2']"""
|
|
|
|
|
# assert str(cfg.od.dodval1) == "stval1 = None"
|
|
|
|
|
# assert str(cfg.od.dodval2) == "stval2 = None"
|
|
|
|
|
def test_subpath_dyndescription_context():
|
|
|
|
|
val1 = StrOption('val1', '', ['val1', 'val2'], multi=True)
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_list, callback_params={'': ((val1, False),)})
|
|
|
|
|
od1 = OptionDescription('od', '', [dod, val1])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
assert api.option.make_dict() == {'od.dodval1.stval1': None, 'od.dodval2.stval2': None, 'od.val1': ['val1', 'val2']}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_dyndescription_context():
|
|
|
|
@ -356,7 +326,6 @@ def test_mod_dyndescription_context():
|
|
|
|
|
api.option('od.dodval2.stval2').value.set('no')
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() == 'yes'
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() == 'no'
|
|
|
|
|
#assert cfg.getowner(st) == owners.default
|
|
|
|
|
assert api.option('od.dodval1.stval1').owner.get() == owner
|
|
|
|
|
assert api.option('od.dodval2.stval2').owner.get() == owner
|
|
|
|
|
|
|
|
|
@ -397,7 +366,6 @@ def test_multi_dyndescription_context():
|
|
|
|
|
api.option('od.dodval2.stval2').value.set(['no'])
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() == ['no']
|
|
|
|
|
#assert cfg.getowner(st) == owners.default
|
|
|
|
|
assert api.option('od.dodval1.stval1').owner.get() == owner
|
|
|
|
|
assert api.option('od.dodval2.stval2').owner.get() == owner
|
|
|
|
|
api.option('od.dodval1.stval1').value.set(['yes', 'yes'])
|
|
|
|
@ -479,7 +447,7 @@ def test_increase_dyndescription_context():
|
|
|
|
|
api.property.read_write()
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval3').value.get()")
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval3.stval3').value.get()")
|
|
|
|
|
api.option('od.val1').value.set(['val1', 'val2', 'val3'])
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
@ -508,102 +476,103 @@ def test_decrease_dyndescription_context():
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval2').value.get()")
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval3').value.get()")
|
|
|
|
|
assert api.option('od.dodval1.stval1').owner.isdefault()
|
|
|
|
|
#FIXME
|
|
|
|
|
# raises(AttributeError, "cfg.getowner(stval2)")
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval2.stval2').owner.get()")
|
|
|
|
|
raises(AttributeError, "api.option('od.dodval2.stval2').value.get()")
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_requires_dyndescription():
|
|
|
|
|
# boolean = BoolOption('boolean', '', True)
|
|
|
|
|
# st = StrOption('st', '', requires=[{'option': boolean, 'expected': False,
|
|
|
|
|
# 'action': 'disabled'}])
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od, boolean])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# api.property.read_write()
|
|
|
|
|
# assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
# assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
# #
|
|
|
|
|
# cfg.boolean = False
|
|
|
|
|
# props = []
|
|
|
|
|
# try:
|
|
|
|
|
# cfg.od.dodval1.stval1
|
|
|
|
|
# except PropertiesOptionError as err:
|
|
|
|
|
# props = err.proptype
|
|
|
|
|
# assert props == ['disabled']
|
|
|
|
|
# props = []
|
|
|
|
|
# try:
|
|
|
|
|
# cfg.od.dodval2.stval2
|
|
|
|
|
# except PropertiesOptionError as err:
|
|
|
|
|
# props = err.proptype
|
|
|
|
|
# assert props == ['disabled']
|
|
|
|
|
# #
|
|
|
|
|
# cfg.boolean = True
|
|
|
|
|
# assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
# assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
# #transitive
|
|
|
|
|
# cfg.cfgimpl_get_settings()[boolean].append('disabled')
|
|
|
|
|
# props = []
|
|
|
|
|
# try:
|
|
|
|
|
# cfg.od.dodval1.stval1
|
|
|
|
|
# except PropertiesOptionError as err:
|
|
|
|
|
# props = err.proptype
|
|
|
|
|
# assert props == ['disabled']
|
|
|
|
|
# props = []
|
|
|
|
|
# try:
|
|
|
|
|
# cfg.od.dodval2.stval2
|
|
|
|
|
# except PropertiesOptionError as err:
|
|
|
|
|
# props = err.proptype
|
|
|
|
|
# assert props == ['disabled']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_requires_dyndescription2():
|
|
|
|
|
# boolean = BoolOption('boolean', '', True)
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_list,
|
|
|
|
|
# requires=[{'option': boolean, 'expected': False,
|
|
|
|
|
# 'action': 'disabled'}])
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od, boolean])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# api.property.read_write()
|
|
|
|
|
# assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
# assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
# #
|
|
|
|
|
# cfg.boolean = False
|
|
|
|
|
# props = []
|
|
|
|
|
# try:
|
|
|
|
|
# cfg.od.dodval1.stval1
|
|
|
|
|
# except PropertiesOptionError as err:
|
|
|
|
|
# props = err.proptype
|
|
|
|
|
# assert props == ['disabled']
|
|
|
|
|
# props = []
|
|
|
|
|
# try:
|
|
|
|
|
# cfg.od.dodval2.stval2
|
|
|
|
|
# except PropertiesOptionError as err:
|
|
|
|
|
# props = err.proptype
|
|
|
|
|
# assert props == ['disabled']
|
|
|
|
|
# #
|
|
|
|
|
# cfg.boolean = True
|
|
|
|
|
# assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
# assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
# #transitive
|
|
|
|
|
# cfg.cfgimpl_get_settings()[boolean].append('disabled')
|
|
|
|
|
# props = []
|
|
|
|
|
# try:
|
|
|
|
|
# cfg.od.dodval1.stval1
|
|
|
|
|
# except PropertiesOptionError as err:
|
|
|
|
|
# props = err.proptype
|
|
|
|
|
# assert props == ['disabled']
|
|
|
|
|
# props = []
|
|
|
|
|
# try:
|
|
|
|
|
# cfg.od.dodval2.stval2
|
|
|
|
|
# except PropertiesOptionError as err:
|
|
|
|
|
# props = err.proptype
|
|
|
|
|
# assert props == ['disabled']
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
def test_requires_dyndescription():
|
|
|
|
|
boolean = BoolOption('boolean', '', True)
|
|
|
|
|
st1 = StrOption('st', '', requires=[{'option': boolean, 'expected': False,
|
|
|
|
|
'action': 'disabled'}])
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1, boolean])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
api.property.read_write()
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
#
|
|
|
|
|
print('-----------------')
|
|
|
|
|
api.option('boolean').value.set(False)
|
|
|
|
|
print('-----------------')
|
|
|
|
|
props = []
|
|
|
|
|
try:
|
|
|
|
|
api.option('od.dodval1.stval1').value.get()
|
|
|
|
|
except PropertiesOptionError as err:
|
|
|
|
|
props = err.proptype
|
|
|
|
|
assert frozenset(props) == frozenset(['disabled'])
|
|
|
|
|
props = []
|
|
|
|
|
try:
|
|
|
|
|
api.option('od.dodval2.stval2').value.get()
|
|
|
|
|
except PropertiesOptionError as err:
|
|
|
|
|
props = err.proptype
|
|
|
|
|
assert frozenset(props) == frozenset(['disabled'])
|
|
|
|
|
#
|
|
|
|
|
api.option('boolean').value.set(True)
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
#transitive
|
|
|
|
|
api.option('boolean').property.add('disabled')
|
|
|
|
|
props = []
|
|
|
|
|
try:
|
|
|
|
|
api.option('od.dodval1.stval1').value.get()
|
|
|
|
|
except PropertiesOptionError as err:
|
|
|
|
|
props = err.proptype
|
|
|
|
|
assert frozenset(props) == frozenset(['disabled'])
|
|
|
|
|
props = []
|
|
|
|
|
try:
|
|
|
|
|
api.option('od.dodval2.stval2').value.get()
|
|
|
|
|
except PropertiesOptionError as err:
|
|
|
|
|
props = err.proptype
|
|
|
|
|
assert frozenset(props) == frozenset(['disabled'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_requires_dyndescription2():
|
|
|
|
|
boolean = BoolOption('boolean', '', True)
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_list,
|
|
|
|
|
requires=[{'option': boolean, 'expected': False,
|
|
|
|
|
'action': 'disabled'}])
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1, boolean])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
api.property.read_write()
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
#
|
|
|
|
|
api.option('boolean').value.set(False)
|
|
|
|
|
props = []
|
|
|
|
|
try:
|
|
|
|
|
api.option('od.dodval1.stval1').value.get()
|
|
|
|
|
except PropertiesOptionError as err:
|
|
|
|
|
props = err.proptype
|
|
|
|
|
assert frozenset(props) == frozenset(['disabled'])
|
|
|
|
|
props = []
|
|
|
|
|
try:
|
|
|
|
|
api.option('od.dodval2.stval2').value.get()
|
|
|
|
|
except PropertiesOptionError as err:
|
|
|
|
|
props = err.proptype
|
|
|
|
|
assert frozenset(props) == frozenset(['disabled'])
|
|
|
|
|
#
|
|
|
|
|
api.option('boolean').value.set(True)
|
|
|
|
|
assert api.option('od.dodval1.stval1').value.get() is None
|
|
|
|
|
assert api.option('od.dodval2.stval2').value.get() is None
|
|
|
|
|
#transitive
|
|
|
|
|
api.option('boolean').property.add('disabled')
|
|
|
|
|
props = []
|
|
|
|
|
try:
|
|
|
|
|
api.option('od.dodval1.stval1').value.get()
|
|
|
|
|
except PropertiesOptionError as err:
|
|
|
|
|
props = err.proptype
|
|
|
|
|
assert frozenset(props) == frozenset(['disabled'])
|
|
|
|
|
props = []
|
|
|
|
|
try:
|
|
|
|
|
api.option('od.dodval2.stval2').value.get()
|
|
|
|
|
except PropertiesOptionError as err:
|
|
|
|
|
props = err.proptype
|
|
|
|
|
assert frozenset(props) == frozenset(['disabled'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_validator_dyndescription():
|
|
|
|
|
val1 = StrOption('val1', '', ['val1', 'val2'], multi=True)
|
|
|
|
|
st = StrOption('st', '', validator=return_true, validator_params={'': ('yes',)}, default='val')
|
|
|
|
@ -649,28 +618,6 @@ def test_find_dyndescription_context():
|
|
|
|
|
raises(AttributeError, "api.option.find('strnotexists')")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_iter_all_dyndescription_context():
|
|
|
|
|
# val1 = StrOption('val1', '', ['val1', 'val2'], multi=True)
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod, val1])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# for it in cfg.iter_all():
|
|
|
|
|
# assert it[0] == 'od'
|
|
|
|
|
# assert str(it[1]) == str(cfg.od)
|
|
|
|
|
# #
|
|
|
|
|
# list_od = []
|
|
|
|
|
# for it in cfg.od.iter_all():
|
|
|
|
|
# list_od.append(it[0])
|
|
|
|
|
# assert list_od == ['dodval1', 'dodval2', 'val1']
|
|
|
|
|
# #
|
|
|
|
|
# list_od = []
|
|
|
|
|
# for it in cfg.od.dodval1:
|
|
|
|
|
# list_od.append(it[0])
|
|
|
|
|
# assert list_od == ['stval1']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_information_dyndescription_context():
|
|
|
|
|
val1 = StrOption('val1', '', ['val1', 'val2'], multi=True)
|
|
|
|
|
st = StrOption('st', '')
|
|
|
|
@ -686,25 +633,25 @@ def test_information_dyndescription_context():
|
|
|
|
|
assert api.option('od.dodval1.stval1').information.get('testst') == 'val2'
|
|
|
|
|
assert api.option('od.dodval2.stval2').information.get('testst') == 'val2'
|
|
|
|
|
assert api.information.get('testcfgod') == 'val3'
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_consistency_dyndescription():
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# st2 = StrOption('st2', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st, st2], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# st.impl_add_consistency('not_equal', st2)
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# api.option('od.dodval1.stval1').value.set('yes')
|
|
|
|
|
# raises(ValueError, "cfg.od.dodval1.st2val1 = 'yes'")
|
|
|
|
|
# api.option('od.dodval2.stval2').value.set('yes')
|
|
|
|
|
# raises(ValueError, "cfg.od.dodval2.st2val2 = 'yes'")
|
|
|
|
|
# raises(ValueError, "cfg.od.dodval1.st2val1 = 'yes'")
|
|
|
|
|
# del(cfg.od.dodval2.stval2)
|
|
|
|
|
# raises(ValueError, "cfg.od.dodval1.st2val1 = 'yes'")
|
|
|
|
|
# cfg.od.dodval2.st2val2 = 'yes'
|
|
|
|
|
# raises(ValueError, "api.option('od.dodval2.stval2').value.set('yes')")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_consistency_dyndescription():
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
st2 = StrOption('st2', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1, st2], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
st1.impl_add_consistency('not_equal', st2)
|
|
|
|
|
od2 = OptionDescription('od', '', [od1])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
api.option('od.dodval1.stval1').value.set('yes')
|
|
|
|
|
raises(ValueError, "api.option('od.dodval1.st2val1').value.set('yes')")
|
|
|
|
|
api.option('od.dodval2.stval2').value.set('yes')
|
|
|
|
|
raises(ValueError, "api.option('od.dodval2.st2val2').value.set('yes')")
|
|
|
|
|
raises(ValueError, "api.option('od.dodval1.st2val1').value.set('yes')")
|
|
|
|
|
api.option('od.dodval2.stval2').value.reset()
|
|
|
|
|
raises(ValueError, "api.option('od.dodval1.st2val1').value.set('yes')")
|
|
|
|
|
api.option('od.dodval2.st2val2').value.set('yes')
|
|
|
|
|
raises(ValueError, "api.option('od.dodval2.stval2').value.set('yes')")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_consistency_dyndescription_default():
|
|
|
|
@ -871,242 +818,169 @@ def test_all_dyndescription():
|
|
|
|
|
assert api.option('dodval2.urlval2').value.get() is None
|
|
|
|
|
assert api.option('dodval2.usernameval2').value.get() is None
|
|
|
|
|
assert api.option('dodval2.filenameval2').value.get() is None
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_consistency_ip_netmask_dyndescription():
|
|
|
|
|
# a = IPOption('a', '')
|
|
|
|
|
# b = NetmaskOption('b', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [a, b], callback=return_list)
|
|
|
|
|
# b.impl_add_consistency('ip_netmask', a)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# c = Config(od)
|
|
|
|
|
# c.dodval1.aval1 = '192.168.1.1'
|
|
|
|
|
# c.dodval1.bval1 = '255.255.255.0'
|
|
|
|
|
# c.dodval2.aval2 = '192.168.1.2'
|
|
|
|
|
# c.dodval2.bval2 = '255.255.255.255'
|
|
|
|
|
## c.dodval2.bval2 = '255.255.255.0'
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_consistency_ip_in_network_dyndescription():
|
|
|
|
|
# a = NetworkOption('a', '')
|
|
|
|
|
# b = NetmaskOption('b', '')
|
|
|
|
|
# c = IPOption('c', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [a, b, c], callback=return_list)
|
|
|
|
|
# c.impl_add_consistency('in_network', a, b)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# cfg = Config(od)
|
|
|
|
|
# cfg.dodval1.aval1 = '192.168.1.0'
|
|
|
|
|
# cfg.dodval1.bval1 = '255.255.255.0'
|
|
|
|
|
# cfg.dodval1.cval1 = '192.168.1.1'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_masterslaves_dyndescription():
|
|
|
|
|
# st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
# st2 = StrOption('st2', "", multi=True)
|
|
|
|
|
# stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
# #stm.impl_set_group_type(groups.master)
|
|
|
|
|
# st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [st])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# print('--------------- 1')
|
|
|
|
|
# owner = api.owner.get()
|
|
|
|
|
# print('--------------- 2')
|
|
|
|
|
# st1val1 = cfg.unwrap_from_path('od.stval1.st1val1.st1val1')
|
|
|
|
|
# print('--------------- 3')
|
|
|
|
|
# st2val1 = cfg.unwrap_from_path('od.stval1.st1val1.st2val1')
|
|
|
|
|
# print('--------------- 4')
|
|
|
|
|
# st1val2 = cfg.unwrap_from_path('od.stval2.st1val2.st1val2')
|
|
|
|
|
# print('--------------- 5')
|
|
|
|
|
# st2val2 = cfg.unwrap_from_path('od.stval2.st1val2.st2val2')
|
|
|
|
|
# print('--------------- 6')
|
|
|
|
|
# assert api.option.make_dict() == {'od.stval1.st1val1.st2val1': [], 'od.stval2.st1val2.st2val2': [], 'od.stval2.st1val2.st1val2': [], 'od.stval1.st1val1.st1val1': []}
|
|
|
|
|
# print('--------------- 7')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# print('--------------- 8')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# print('--------------- 9')
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# print('--------------- 10')
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# print('--------------- 11')
|
|
|
|
|
# assert cfg.getowner(st1val1) == owners.default
|
|
|
|
|
# print('--------------- 12')
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# print('--------------- 13')
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# print('--------------- 14')
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# print('--------------- 15')
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.append('yes')
|
|
|
|
|
# print('--------------- 16')
|
|
|
|
|
# assert api.option.make_dict() == {'od.stval1.st1val1.st2val1': [None], 'od.stval2.st1val2.st2val2': [], 'od.stval2.st1val2.st1val2': [], 'od.stval1.st1val1.st1val1': ['yes']}
|
|
|
|
|
# print('--------------- 17')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# print('--------------- 18')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == [None]
|
|
|
|
|
# print('--------------- 19')
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# print('--------------- 20')
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# print('--------------- 21')
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# print('--------------- 22')
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# print('--------------- 23')
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# print('--------------- 24')
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# print('--------------- 25')
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1 = ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == [None]
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1 = ['no']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == ['no']
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1, 0) == owner
|
|
|
|
|
## assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.pop(0)
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
## assert cfg.getowner(st2val1) == owner
|
|
|
|
|
## assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1 = ['yes']
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1 = ['yes']
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st2val1, 0) == owner
|
|
|
|
|
# del(cfg.od.stval1.st1val1.st2val1)
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
## assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
## assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1 = ['yes']
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1 = ['yes']
|
|
|
|
|
# del(cfg.od.stval1.st1val1.st1val1)
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_masterslaves_default_multi_dyndescription():
|
|
|
|
|
# st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
# st2 = StrOption('st2', "", multi=True, default_multi='no')
|
|
|
|
|
# stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
# #stm.impl_set_group_type(groups.master)
|
|
|
|
|
# st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [st])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# owner = api.owner.get()
|
|
|
|
|
# st1val1 = cfg.unwrap_from_path('od.stval1.st1val1.st1val1')
|
|
|
|
|
# st2val1 = cfg.unwrap_from_path('od.stval1.st1val1.st2val1')
|
|
|
|
|
# st1val2 = cfg.unwrap_from_path('od.stval2.st1val2.st1val2')
|
|
|
|
|
# st2val2 = cfg.unwrap_from_path('od.stval2.st1val2.st2val2')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.append('yes')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == ['no']
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_masterslaves_submulti_dyndescription():
|
|
|
|
|
# st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
# st2 = StrOption('st2', "", multi=submulti)
|
|
|
|
|
# stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
# #stm.impl_set_group_type(groups.master)
|
|
|
|
|
# st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [st])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# owner = api.owner.get()
|
|
|
|
|
# st1val1 = cfg.unwrap_from_path('od.stval1.st1val1.st1val1')
|
|
|
|
|
# st2val1 = cfg.unwrap_from_path('od.stval1.st1val1.st2val1')
|
|
|
|
|
# st1val2 = cfg.unwrap_from_path('od.stval2.st1val2.st1val2')
|
|
|
|
|
# st2val2 = cfg.unwrap_from_path('od.stval2.st1val2.st2val2')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.append('yes')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == [[]]
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1[0].append('no')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == [['no']]
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1, 0) == owner
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
def test_consistency_ip_netmask_dyndescription():
|
|
|
|
|
ipa = IPOption('a', '')
|
|
|
|
|
netb = NetmaskOption('b', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [ipa, netb], callback=return_list)
|
|
|
|
|
netb.impl_add_consistency('ip_netmask', ipa)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
cfg = Config(od1)
|
|
|
|
|
api = getapi(cfg)
|
|
|
|
|
api.option('dodval1.aval1').value.set('192.168.1.1')
|
|
|
|
|
api.option('dodval1.bval1').value.set('255.255.255.0')
|
|
|
|
|
api.option('dodval2.aval2').value.set('192.168.1.2')
|
|
|
|
|
api.option('dodval2.bval2').value.set('255.255.255.255')
|
|
|
|
|
api.option('dodval2.bval2').value.set('255.255.255.0')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_consistency_ip_in_network_dyndescription():
|
|
|
|
|
neta = NetworkOption('a', '')
|
|
|
|
|
netb = NetmaskOption('b', '')
|
|
|
|
|
ipc = IPOption('c', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [neta, netb, ipc], callback=return_list)
|
|
|
|
|
ipc.impl_add_consistency('in_network', neta, netb)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
cfg = Config(od1)
|
|
|
|
|
api = getapi(cfg)
|
|
|
|
|
api.option('dodval1.aval1').value.set('192.168.1.0')
|
|
|
|
|
api.option('dodval1.bval1').value.set('255.255.255.0')
|
|
|
|
|
api.option('dodval1.cval1').value.set('192.168.1.1')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_masterslaves_dyndescription():
|
|
|
|
|
st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
st2 = StrOption('st2', "", multi=True)
|
|
|
|
|
stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
od = OptionDescription('od', '', [st])
|
|
|
|
|
od2 = OptionDescription('od', '', [od])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
owner = api.owner.get()
|
|
|
|
|
#
|
|
|
|
|
assert api.option.make_dict() == {'od.stval1.st1val1.st2val1': [], 'od.stval2.st1val2.st2val2': [], 'od.stval2.st1val2.st1val2': [], 'od.stval1.st1val1.st1val1': []}
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
assert api.option.make_dict() == {'od.stval1.st1val1.st2val1': [None], 'od.stval2.st1val2.st2val2': [], 'od.stval2.st1val2.st1val2': [], 'od.stval1.st1val1.st1val1': ['yes']}
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == None
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set('no')
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == 'no'
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.get() == owner
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.pop(0)
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set('yes')
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.get() == owner
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.reset()
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set('yes')
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.reset()
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_masterslaves_default_multi_dyndescription():
|
|
|
|
|
st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
st2 = StrOption('st2', "", multi=True, default_multi='no')
|
|
|
|
|
stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
od = OptionDescription('od', '', [st])
|
|
|
|
|
od2 = OptionDescription('od', '', [od])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
owner = api.owner.get()
|
|
|
|
|
#
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == 'no'
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_masterslaves_submulti_dyndescription():
|
|
|
|
|
st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
st2 = StrOption('st2', "", multi=submulti)
|
|
|
|
|
stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
std = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [std])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
owner = api.owner.get()
|
|
|
|
|
#
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set(['no'])
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == ['no']
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.get() == owner
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#FIXME DynOptionDescription cannot be MasterSlave
|
|
|
|
|
#def test_masterslaves_consistency_ip_dyndescription():
|
|
|
|
|
# a = NetworkOption('net', '', multi=True)
|
|
|
|
|
# b = NetmaskOption('mask', '', multi=True)
|
|
|
|
|
# c = BroadcastOption('broad', '', multi=True)
|
|
|
|
|
# b.impl_add_consistency('network_netmask', a)
|
|
|
|
|
# c.impl_add_consistency('broadcast', a, b)
|
|
|
|
|
# dod = DynOptionDescription('net', '', [a, b, c], callback=return_list)
|
|
|
|
|
# neta = NetworkOption('net', '', multi=True)
|
|
|
|
|
# maskb = NetmaskOption('mask', '', multi=True)
|
|
|
|
|
# broadc = BroadcastOption('broad', '', multi=True)
|
|
|
|
|
# maskb.impl_add_consistency('network_netmask', neta)
|
|
|
|
|
# broadc.impl_add_consistency('broadcast', neta, maskb)
|
|
|
|
|
# dod = DynOptionDescription('net', '', [neta, maskb, broadc], callback=return_list)
|
|
|
|
|
# dod.impl_set_group_type(groups.master)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# cfg = Config(od)
|
|
|
|
|
# cfg.netval1.netval1 = ['192.168.1.0']
|
|
|
|
|
# cfg.netval1.maskval1 = ['255.255.255.0']
|
|
|
|
|
# cfg.netval1.broadval1 = ['192.168.1.255']
|
|
|
|
|
# od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
# cfg = Config(od1)
|
|
|
|
|
# api.option('netval1.netval1').value.set(['192.168.1.0'])
|
|
|
|
|
# api.option('netval1.maskval1').value.set(['255.255.255.0'])
|
|
|
|
|
# api.option('netval1.broadval1').value.set(['192.168.1.255'])
|
|
|
|
|
#
|
|
|
|
|
# cfg.netval1.netval1 = ['192.168.1.0', '192.168.2.128']
|
|
|
|
|
# cfg.netval1.maskval1 = ['255.255.255.0', '255.255.255.128']
|
|
|
|
|
# cfg.netval1.broadval1 = ['192.168.1.255', '192.168.2.255']
|
|
|
|
|
# cfg.netval1.broadval1[1] = '192.168.2.255'
|
|
|
|
|
# api.option('netval1.netval1').value.set(['192.168.1.0', '192.168.2.128'])
|
|
|
|
|
# api.option('netval1.maskval1').value.set(['255.255.255.0', '255.255.255.128'])
|
|
|
|
|
# api.option('netval1.broadval1').value.set(['192.168.1.255', '192.168.2.255'])
|
|
|
|
|
# #
|
|
|
|
|
# assert cfg.netval1.netval1 == ['192.168.1.0', '192.168.2.128']
|
|
|
|
|
# assert cfg.netval1.maskval1 == ['255.255.255.0', '255.255.255.128']
|
|
|
|
@ -1130,187 +1004,143 @@ def test_all_dyndescription():
|
|
|
|
|
# cfg.netval1.netval1 = ['192.168.1.0']
|
|
|
|
|
# api.property.read_only()
|
|
|
|
|
# raises(PropertiesOptionError, "cfg.netval1.netval1")
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_masterslaves_callback_dyndescription():
|
|
|
|
|
# st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
# st2 = StrOption('st2', "", multi=True, callback=return_dynval, callback_params={'value': ((st1, False),)})
|
|
|
|
|
# stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
# #stm.impl_set_group_type(groups.master)
|
|
|
|
|
# st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [st])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# owner = api.owner.get()
|
|
|
|
|
# st1val1 = cfg.unwrap_from_path('od.stval1.st1val1.st1val1')
|
|
|
|
|
# st2val1 = cfg.unwrap_from_path('od.stval1.st1val1.st2val1')
|
|
|
|
|
# st1val2 = cfg.unwrap_from_path('od.stval2.st1val2.st1val2')
|
|
|
|
|
# st2val2 = cfg.unwrap_from_path('od.stval2.st1val2.st2val2')
|
|
|
|
|
# assert api.option.make_dict() == {'od.stval1.st1val1.st2val1': [], 'od.stval2.st1val2.st2val2': [], 'od.stval2.st1val2.st1val2': [], 'od.stval1.st1val1.st1val1': []}
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.append('yes')
|
|
|
|
|
# assert api.option.make_dict() == {'od.stval1.st1val1.st2val1': ['yes'], 'od.stval2.st1val2.st2val2': [], 'od.stval2.st1val2.st1val2': [], 'od.stval1.st1val1.st1val1': ['yes']}
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1 = ['no']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == ['no']
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1, 0) == owner
|
|
|
|
|
## assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.pop(0)
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
## assert cfg.getowner(st2val1) == owner
|
|
|
|
|
## assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1 = ['yes']
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1 = ['yes']
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st2val1, 0) == owner
|
|
|
|
|
# del(cfg.od.stval1.st1val1.st2val1)
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1 = ['yes']
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1 = ['yes']
|
|
|
|
|
# del(cfg.od.stval1.st1val1.st1val1)
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1 = []
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1 = ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == ['yes']
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_masterslaves_callback_value_dyndescription():
|
|
|
|
|
# st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
# st2 = StrOption('st2', "", multi=True, callback=return_dynval, callback_params={'value': ('val',)})
|
|
|
|
|
# stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
# #stm.impl_set_group_type(groups.master)
|
|
|
|
|
# st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [st])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.append('yes')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1[0] == 'val'
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == ['val']
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_masterslaves_callback_nomulti_dyndescription():
|
|
|
|
|
# v1 = StrOption('v1', '', "val")
|
|
|
|
|
# st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
# st2 = StrOption('st2', "", multi=True, callback=return_dynval, callback_params={'': ((v1, False),)})
|
|
|
|
|
# stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
# #stm.impl_set_group_type(groups.master)
|
|
|
|
|
# st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [st])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od, v1])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.append('yes')
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == ['yes']
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == ['val']
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_masterslaves_callback_samegroup_dyndescription():
|
|
|
|
|
# st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
# st2 = StrOption('st2', "", multi=True)
|
|
|
|
|
# st3 = StrOption('st3', "", multi=True, callback=return_dynval, callback_params={'': ((st2, False),)})
|
|
|
|
|
# stm = MasterSlaves('st1', '', [st1, st2, st3])
|
|
|
|
|
# #stm.impl_set_group_type(groups.master)
|
|
|
|
|
# st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
# od = OptionDescription('od', '', [st])
|
|
|
|
|
# od2 = OptionDescription('od', '', [od])
|
|
|
|
|
# api = getapi(Config(od2))
|
|
|
|
|
# owner = api.owner.get()
|
|
|
|
|
# st1val1 = cfg.unwrap_from_path('od.stval1.st1val1.st1val1')
|
|
|
|
|
# st2val1 = cfg.unwrap_from_path('od.stval1.st1val1.st2val1')
|
|
|
|
|
# st3val1 = cfg.unwrap_from_path('od.stval1.st1val1.st3val1')
|
|
|
|
|
# st1val2 = cfg.unwrap_from_path('od.stval2.st1val2.st1val2')
|
|
|
|
|
# st2val2 = cfg.unwrap_from_path('od.stval2.st1val2.st2val2')
|
|
|
|
|
# st3val2 = cfg.unwrap_from_path('od.stval2.st1val2.st3val2')
|
|
|
|
|
# assert api.option.make_dict() == {'od.stval1.st1val1.st1val1': [],
|
|
|
|
|
# 'od.stval1.st1val1.st2val1': [],
|
|
|
|
|
# 'od.stval1.st1val1.st3val1': [],
|
|
|
|
|
# 'od.stval2.st1val2.st1val2': [],
|
|
|
|
|
# 'od.stval2.st1val2.st2val2': [],
|
|
|
|
|
# 'od.stval2.st1val2.st3val2': []}
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st1val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st2val1 == []
|
|
|
|
|
# assert cfg.od.stval1.st1val1.st3val1 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st1val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st2val2 == []
|
|
|
|
|
# assert cfg.od.stval2.st1val2.st3val2 == []
|
|
|
|
|
# assert cfg.getowner(st1val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st3val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st3val2) == owners.default
|
|
|
|
|
# ##
|
|
|
|
|
# cfg.od.stval1.st1val1.st1val1.append('yes')
|
|
|
|
|
# assert api.option.make_dict() == {'od.stval1.st1val1.st1val1': ['yes'],
|
|
|
|
|
# 'od.stval1.st1val1.st2val1': [None],
|
|
|
|
|
# 'od.stval1.st1val1.st3val1': [None],
|
|
|
|
|
# 'od.stval2.st1val2.st1val2': [],
|
|
|
|
|
# 'od.stval2.st1val2.st2val2': [],
|
|
|
|
|
# 'od.stval2.st1val2.st3val2': []}
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# assert cfg.getowner(st3val1) == owners.default
|
|
|
|
|
# assert cfg.getowner(st3val2) == owners.default
|
|
|
|
|
# #
|
|
|
|
|
# cfg.od.stval1.st1val1.st2val1[0] = 'yes'
|
|
|
|
|
# assert api.option.make_dict() == {'od.stval1.st1val1.st1val1': ['yes'],
|
|
|
|
|
# 'od.stval1.st1val1.st2val1': ['yes'],
|
|
|
|
|
# 'od.stval1.st1val1.st3val1': ['yes'],
|
|
|
|
|
# 'od.stval2.st1val2.st1val2': [],
|
|
|
|
|
# 'od.stval2.st1val2.st2val2': [],
|
|
|
|
|
# 'od.stval2.st1val2.st3val2': []}
|
|
|
|
|
# assert cfg.getowner(st1val1) == owner
|
|
|
|
|
# assert cfg.getowner(st2val1, 0) == owner
|
|
|
|
|
# assert cfg.getowner(st3val1, 0) == owners.default
|
|
|
|
|
# assert cfg.getowner(st1val2) == owners.default
|
|
|
|
|
# #assert cfg.getowner(st2val2) == owners.default
|
|
|
|
|
# #assert cfg.getowner(st3val2) == owners.default
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_masterslaves_callback_dyndescription():
|
|
|
|
|
st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
st2 = StrOption('st2', "", multi=True, callback=return_dynval, callback_params={'value': ((st1, False),)})
|
|
|
|
|
stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
st1 = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [st1])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
owner = api.owner.get()
|
|
|
|
|
assert api.option.make_dict() == {'od.stval1.st1val1.st2val1': [], 'od.stval2.st1val2.st2val2': [], 'od.stval2.st1val2.st1val2': [], 'od.stval1.st1val1.st1val1': []}
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() ==[]
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
assert api.option.make_dict() == {'od.stval1.st1val1.st2val1': ['yes'], 'od.stval2.st1val2.st2val2': [], 'od.stval2.st1val2.st1val2': [], 'od.stval1.st1val1.st1val1': ['yes']}
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == 'yes'
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set('no')
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == 'no'
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.get() == owner
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.pop(0)
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set('yes')
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.get() == owner
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.reset()
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set('yes')
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.reset()
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == 'yes'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_masterslaves_callback_value_dyndescription():
|
|
|
|
|
st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
st2 = StrOption('st2', "", multi=True, callback=return_dynval, callback_params={'value': ('val',)})
|
|
|
|
|
stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
st = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
od = OptionDescription('od', '', [st])
|
|
|
|
|
od2 = OptionDescription('od', '', [od])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set('val')
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == 'val'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_masterslaves_callback_nomulti_dyndescription():
|
|
|
|
|
v11 = StrOption('v1', '', "val")
|
|
|
|
|
st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
st2 = StrOption('st2', "", multi=True, callback=return_dynval, callback_params={'': ((v11, False),)})
|
|
|
|
|
stm = MasterSlaves('st1', '', [st1, st2])
|
|
|
|
|
stt = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [stt])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1, v11])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == ['yes']
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).value.get() == 'val'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_masterslaves_callback_samegroup_dyndescription():
|
|
|
|
|
st1 = StrOption('st1', "", multi=True)
|
|
|
|
|
st2 = StrOption('st2', "", multi=True)
|
|
|
|
|
st3 = StrOption('st3', "", multi=True, callback=return_dynval, callback_params={'': ((st2, False),)})
|
|
|
|
|
stm = MasterSlaves('st1', '', [st1, st2, st3])
|
|
|
|
|
stt = DynOptionDescription('st', '', [stm], callback=return_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [stt])
|
|
|
|
|
od2 = OptionDescription('od', '', [od1])
|
|
|
|
|
api = getapi(Config(od2))
|
|
|
|
|
owner = api.owner.get()
|
|
|
|
|
assert api.option.make_dict() == {'od.stval1.st1val1.st1val1': [],
|
|
|
|
|
'od.stval1.st1val1.st2val1': [],
|
|
|
|
|
'od.stval1.st1val1.st3val1': [],
|
|
|
|
|
'od.stval2.st1val2.st1val2': [],
|
|
|
|
|
'od.stval2.st1val2.st2val2': [],
|
|
|
|
|
'od.stval2.st1val2.st3val2': []}
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').value.get() == []
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').value.get() == []
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st1val1').value.set(['yes'])
|
|
|
|
|
assert api.option.make_dict() == {'od.stval1.st1val1.st1val1': ['yes'],
|
|
|
|
|
'od.stval1.st1val1.st2val1': [None],
|
|
|
|
|
'od.stval1.st1val1.st3val1': [None],
|
|
|
|
|
'od.stval2.st1val2.st1val2': [],
|
|
|
|
|
'od.stval2.st1val2.st2val2': [],
|
|
|
|
|
'od.stval2.st1val2.st3val2': []}
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.isdefault()
|
|
|
|
|
assert api.option('od.stval1.st1val1.st3val1', 0).owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
#
|
|
|
|
|
api.option('od.stval1.st1val1.st2val1', 0).value.set('yes')
|
|
|
|
|
assert api.option.make_dict() == {'od.stval1.st1val1.st1val1': ['yes'],
|
|
|
|
|
'od.stval1.st1val1.st2val1': ['yes'],
|
|
|
|
|
'od.stval1.st1val1.st3val1': ['yes'],
|
|
|
|
|
'od.stval2.st1val2.st1val2': [],
|
|
|
|
|
'od.stval2.st1val2.st2val2': [],
|
|
|
|
|
'od.stval2.st1val2.st3val2': []}
|
|
|
|
|
assert api.option('od.stval1.st1val1.st1val1').owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st2val1', 0).owner.get() == owner
|
|
|
|
|
assert api.option('od.stval1.st1val1.st3val1', 0).owner.isdefault()
|
|
|
|
|
assert api.option('od.stval2.st1val2.st1val2').owner.isdefault()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_invalid_conflict_dyndescription():
|
|
|
|
@ -1349,19 +1179,19 @@ def test_nocallback_dyndescription():
|
|
|
|
|
raises(ConfigError, "DynOptionDescription('dod', '', [st, st2])")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def test_invalid_samevalue_dyndescription():
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_same_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# cfg = Config(od)
|
|
|
|
|
# cfg
|
|
|
|
|
# raises(ConfigError, "print(cfg)")
|
|
|
|
|
#
|
|
|
|
|
#
|
|
|
|
|
#def test_invalid_name_dyndescription():
|
|
|
|
|
# st = StrOption('st', '')
|
|
|
|
|
# dod = DynOptionDescription('dod', '', [st], callback=return_wrong_list)
|
|
|
|
|
# od = OptionDescription('od', '', [dod])
|
|
|
|
|
# cfg = Config(od)
|
|
|
|
|
# cfg
|
|
|
|
|
# raises(ValueError, "print(cfg)")
|
|
|
|
|
def test_invalid_samevalue_dyndescription():
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_same_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
cfg = Config(od1)
|
|
|
|
|
api = getapi(cfg)
|
|
|
|
|
raises(ConfigError, "api.option.make_dict()")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_invalid_name_dyndescription():
|
|
|
|
|
st1 = StrOption('st', '')
|
|
|
|
|
dod = DynOptionDescription('dod', '', [st1], callback=return_wrong_list)
|
|
|
|
|
od1 = OptionDescription('od', '', [dod])
|
|
|
|
|
cfg = Config(od1)
|
|
|
|
|
api = getapi(cfg)
|
|
|
|
|
raises(ValueError, "api.option.make_dict()")
|
|
|
|
|