add/remove config in mixconfig or metaconfig (fixes #6)
This commit is contained in:
@ -246,14 +246,55 @@ def test_meta_new_metaconfig():
|
||||
def test_meta_pop_config():
|
||||
od = make_description()
|
||||
meta = MetaConfig(['name1', 'name2'], optiondescription=od)
|
||||
meta.option('od1.i1').value.set(2)
|
||||
#
|
||||
assert len(list(meta.config.list())) == 2
|
||||
meta.config.new('newconf1')
|
||||
assert meta.config('newconf1').value.dict() == {'od1.i1': 2, 'od1.i2': 1, 'od1.i3': None, 'od1.i4': 2, 'od1.i5': [2], 'od1.i6': None}
|
||||
#
|
||||
assert len(list(meta.config.list())) == 3
|
||||
meta.config.pop('newconf1')
|
||||
newconf1 = meta.config.pop('newconf1')
|
||||
try:
|
||||
assert meta.config('newconf1').value.dict()
|
||||
except ConfigError:
|
||||
pass
|
||||
else:
|
||||
raise Exception('must raise')
|
||||
assert newconf1.value.dict() == {'od1.i1': None, 'od1.i2': 1, 'od1.i3': None, 'od1.i4': 2, 'od1.i5': [2], 'od1.i6': None}
|
||||
#
|
||||
assert len(list(meta.config.list())) == 2
|
||||
raises(ConfigError, "meta.config.pop('newconf1')")
|
||||
|
||||
|
||||
def test_meta_add_config():
|
||||
od = make_description()
|
||||
od2 = make_description()
|
||||
meta = MetaConfig(['name1', 'name2'], optiondescription=od)
|
||||
meta.option('od1.i1').value.set(2)
|
||||
#
|
||||
assert len(list(meta.config.list())) == 2
|
||||
config = Config(od, session_id='new')
|
||||
assert config.value.dict() == {'od1.i1': None, 'od1.i2': 1, 'od1.i3': None, 'od1.i4': 2, 'od1.i5': [2], 'od1.i6': None}
|
||||
meta.config.add(config)
|
||||
#
|
||||
assert len(list(meta.config.list())) == 3
|
||||
assert config.value.dict() == {'od1.i1': 2, 'od1.i2': 1, 'od1.i3': None, 'od1.i4': 2, 'od1.i5': [2], 'od1.i6': None}
|
||||
#
|
||||
raises(ConflictError, "meta.config.add(config)")
|
||||
raises(ValueError, "meta.config.add(Config(od2))")
|
||||
|
||||
|
||||
def test_meta_add_config_readd():
|
||||
od = make_description()
|
||||
meta = MetaConfig([], optiondescription=od)
|
||||
meta2 = MetaConfig([], optiondescription=od)
|
||||
config = Config(od, session_id='new')
|
||||
#
|
||||
meta.config.add(config)
|
||||
#
|
||||
raises(ConflictError, "meta2.config.add(config)")
|
||||
|
||||
|
||||
def test_meta_new_config_wrong_name():
|
||||
od = make_description()
|
||||
meta = MetaConfig(['name1', 'name2'], optiondescription=od)
|
||||
|
@ -1072,3 +1072,53 @@ def test_mix_different_default_reset():
|
||||
assert mix.config('submix2.submix1').value.dict() == {'ip_admin_eth1': ['192.168.1.3']}
|
||||
assert mix.config('submix2.submix1.conf2').value.dict() == {'ip_admin_eth1': ['192.168.1.2']}
|
||||
assert mix.config('submix2.submix1.conf1').value.dict() == {'ip_admin_eth0': ['192.168.1.1']}
|
||||
|
||||
|
||||
def test_mix_pop_config():
|
||||
od = make_description()
|
||||
config1 = Config(od, session_id='config1')
|
||||
config2 = Config(od, session_id='config2')
|
||||
mix = MixConfig(od, [config1, config2])
|
||||
mix.option('od1.i1').value.set(2)
|
||||
#
|
||||
assert len(list(mix.config.list())) == 2
|
||||
assert mix.config('config1').value.dict() == {'od1.i1': 2, 'od1.i2': 1, 'od1.i3': None, 'od1.i4': 2, 'od1.i5': [2], 'od1.i6': None}
|
||||
newconf1 = mix.config.pop('config1')
|
||||
try:
|
||||
assert mix.config('config1').value.dict()
|
||||
except ConfigError:
|
||||
pass
|
||||
else:
|
||||
raise Exception('must raise')
|
||||
assert newconf1.value.dict() == {'od1.i1': None, 'od1.i2': 1, 'od1.i3': None, 'od1.i4': 2, 'od1.i5': [2], 'od1.i6': None}
|
||||
#
|
||||
assert len(list(mix.config.list())) == 1
|
||||
raises(ConfigError, "mix.config.pop('newconf1')")
|
||||
|
||||
|
||||
def test_mix_add_config():
|
||||
od = make_description()
|
||||
config1 = Config(od, session_id='config1')
|
||||
config2 = Config(od, session_id='config2')
|
||||
mix = MixConfig(od, [config1, config2])
|
||||
mix.option('od1.i1').value.set(2)
|
||||
#
|
||||
assert len(list(mix.config.list())) == 2
|
||||
config = Config(od, session_id='new')
|
||||
assert config.value.dict() == {'od1.i1': None, 'od1.i2': 1, 'od1.i3': None, 'od1.i4': 2, 'od1.i5': [2], 'od1.i6': None}
|
||||
mix.config.add(config)
|
||||
#
|
||||
assert len(list(mix.config.list())) == 3
|
||||
assert config.value.dict() == {'od1.i1': 2, 'od1.i2': 1, 'od1.i3': None, 'od1.i4': 2, 'od1.i5': [2], 'od1.i6': None}
|
||||
#
|
||||
raises(ConflictError, "mix.config.add(config)")
|
||||
|
||||
|
||||
def test_mix_add_config_readd():
|
||||
od = make_description()
|
||||
mix = MixConfig(od, [])
|
||||
mix2 = MixConfig(od, [])
|
||||
#
|
||||
config = Config(od, session_id='new')
|
||||
mix.config.add(config)
|
||||
raises(ConflictError, "mix2.config.add(config)")
|
||||
|
Reference in New Issue
Block a user