Merge branch 'master' into orm
Conflicts: test/test_dereference.py test/test_state.py tiramisu/config.py tiramisu/value.py
This commit is contained in:
@ -2,8 +2,8 @@
|
||||
import autopath
|
||||
#from py.test import raises
|
||||
|
||||
from tiramisu.config import Config
|
||||
from tiramisu.option import BoolOption, OptionDescription
|
||||
from tiramisu.config import Config, GroupConfig, MetaConfig
|
||||
from tiramisu.option import BoolOption, IntOption, OptionDescription
|
||||
import weakref
|
||||
|
||||
|
||||
@ -119,3 +119,31 @@ def test_deref_optiondescription_config():
|
||||
del(c)
|
||||
#FIXME
|
||||
#assert w() is None
|
||||
|
||||
|
||||
def test_deref_groupconfig():
|
||||
i1 = IntOption('i1', '')
|
||||
od1 = OptionDescription('od1', '', [i1])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2)
|
||||
conf2 = Config(od2)
|
||||
meta = GroupConfig([conf1, conf2])
|
||||
w = weakref.ref(conf1)
|
||||
del(conf1)
|
||||
assert w() is not None
|
||||
del(meta)
|
||||
assert w() is None
|
||||
|
||||
|
||||
def test_deref_metaconfig():
|
||||
i1 = IntOption('i1', '')
|
||||
od1 = OptionDescription('od1', '', [i1])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2)
|
||||
conf2 = Config(od2)
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
w = weakref.ref(conf1)
|
||||
del(conf1)
|
||||
assert w() is not None
|
||||
del(meta)
|
||||
assert w() is None
|
||||
|
@ -1,172 +1,173 @@
|
||||
#import autopath
|
||||
import autopath
|
||||
|
||||
#from py.test import raises
|
||||
from py.test import raises
|
||||
|
||||
#from tiramisu.setting import owners
|
||||
#from tiramisu.config import Config, MetaConfig
|
||||
#from tiramisu.option import IntOption, OptionDescription
|
||||
#from tiramisu.error import ConfigError
|
||||
from tiramisu.setting import owners
|
||||
from tiramisu.config import Config, GroupConfig, MetaConfig
|
||||
from tiramisu.option import IntOption, OptionDescription
|
||||
from tiramisu.error import ConfigError
|
||||
|
||||
#owners.addowner('meta')
|
||||
owners.addowner('meta')
|
||||
|
||||
|
||||
#def make_description():
|
||||
# i1 = IntOption('i1', '')
|
||||
# i2 = IntOption('i2', '', default=1)
|
||||
# i3 = IntOption('i3', '')
|
||||
# i4 = IntOption('i4', '', default=2)
|
||||
# od1 = OptionDescription('od1', '', [i1, i2, i3, i4])
|
||||
# od2 = OptionDescription('od2', '', [od1])
|
||||
# conf1 = Config(od2)
|
||||
# conf2 = Config(od2)
|
||||
# meta = MetaConfig([conf1, conf2])
|
||||
# meta.cfgimpl_get_settings().setowner(owners.meta)
|
||||
# return meta
|
||||
def make_description():
|
||||
i1 = IntOption('i1', '')
|
||||
i2 = IntOption('i2', '', default=1)
|
||||
i3 = IntOption('i3', '')
|
||||
i4 = IntOption('i4', '', default=2)
|
||||
od1 = OptionDescription('od1', '', [i1, i2, i3, i4])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2)
|
||||
conf2 = Config(od2)
|
||||
meta = MetaConfig([conf1, conf2])
|
||||
meta.cfgimpl_get_settings().setowner(owners.meta)
|
||||
return meta
|
||||
|
||||
|
||||
##FIXME ne pas mettre 2 meta dans une config
|
||||
##FIXME ne pas mettre 2 OD differents dans un meta
|
||||
#def test_none():
|
||||
# meta = make_description()
|
||||
# conf1, conf2 = meta._impl_children
|
||||
# assert conf1.od1.i3 is conf2.od1.i3 is None
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.default
|
||||
# meta.od1.i3 = 3
|
||||
# assert conf1.od1.i3 == conf2.od1.i3 == 3
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.meta
|
||||
# meta.od1.i3 = 3
|
||||
# conf1.od1.i3 = 2
|
||||
# assert conf1.od1.i3 == 2
|
||||
# assert conf2.od1.i3 == 3
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.meta
|
||||
# meta.od1.i3 = 4
|
||||
# assert conf1.od1.i3 == 2
|
||||
# assert conf2.od1.i3 == 4
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.meta
|
||||
# del(meta.od1.i3)
|
||||
# assert conf1.od1.i3 == 2
|
||||
# assert conf2.od1.i3 is None
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.default
|
||||
# del(conf1.od1.i3)
|
||||
# assert conf1.od1.i3 is conf2.od1.i3 is None
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.default
|
||||
#FIXME ne pas mettre 2 meta dans une config
|
||||
#FIXME ne pas mettre 2 OD differents dans un meta
|
||||
#FIXME serialization
|
||||
def test_none():
|
||||
meta = make_description()
|
||||
conf1, conf2 = meta._impl_children
|
||||
assert conf1.od1.i3 is conf2.od1.i3 is None
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.default
|
||||
meta.od1.i3 = 3
|
||||
assert conf1.od1.i3 == conf2.od1.i3 == 3
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.meta
|
||||
meta.od1.i3 = 3
|
||||
conf1.od1.i3 = 2
|
||||
assert conf1.od1.i3 == 2
|
||||
assert conf2.od1.i3 == 3
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.meta
|
||||
meta.od1.i3 = 4
|
||||
assert conf1.od1.i3 == 2
|
||||
assert conf2.od1.i3 == 4
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.meta
|
||||
del(meta.od1.i3)
|
||||
assert conf1.od1.i3 == 2
|
||||
assert conf2.od1.i3 is None
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.default
|
||||
del(conf1.od1.i3)
|
||||
assert conf1.od1.i3 is conf2.od1.i3 is None
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i3')) is conf2.getowner(conf2.unwrap_from_path('od1.i3')) is owners.default
|
||||
|
||||
|
||||
#def test_default():
|
||||
# meta = make_description()
|
||||
# conf1, conf2 = meta._impl_children
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
# meta.od1.i2 = 3
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 3
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
# meta.od1.i2 = 3
|
||||
# conf1.od1.i2 = 2
|
||||
# assert conf1.od1.i2 == 2
|
||||
# assert conf2.od1.i2 == 3
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
# meta.od1.i2 = 4
|
||||
# assert conf1.od1.i2 == 2
|
||||
# assert conf2.od1.i2 == 4
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
# del(meta.od1.i2)
|
||||
# assert conf1.od1.i2 == 2
|
||||
# assert conf2.od1.i2 == 1
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
# del(conf1.od1.i2)
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
def test_default():
|
||||
meta = make_description()
|
||||
conf1, conf2 = meta._impl_children
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
meta.od1.i2 = 3
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 3
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
meta.od1.i2 = 3
|
||||
conf1.od1.i2 = 2
|
||||
assert conf1.od1.i2 == 2
|
||||
assert conf2.od1.i2 == 3
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
meta.od1.i2 = 4
|
||||
assert conf1.od1.i2 == 2
|
||||
assert conf2.od1.i2 == 4
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
del(meta.od1.i2)
|
||||
assert conf1.od1.i2 == 2
|
||||
assert conf2.od1.i2 == 1
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
del(conf1.od1.i2)
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
|
||||
|
||||
#def test_contexts():
|
||||
# meta = make_description()
|
||||
# conf1, conf2 = meta._impl_children
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
# meta.set_contexts('od1.i2', 6)
|
||||
# assert meta.od1.i2 == 1
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 6
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.user
|
||||
def test_contexts():
|
||||
meta = make_description()
|
||||
conf1, conf2 = meta._impl_children
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
meta.setattrs('od1.i2', 6)
|
||||
assert meta.od1.i2 == 1
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 6
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.user
|
||||
|
||||
|
||||
#def test_find():
|
||||
# meta = make_description()
|
||||
# i2 = meta.unwrap_from_path('od1.i2')
|
||||
# assert [i2] == meta.find(byname='i2')
|
||||
# assert i2 == meta.find_first(byname='i2')
|
||||
# assert meta.make_dict() == {'od1.i4': 2, 'od1.i1': None, 'od1.i3': None, 'od1.i2': 1}
|
||||
def test_find():
|
||||
meta = make_description()
|
||||
i2 = meta.unwrap_from_path('od1.i2')
|
||||
assert [i2] == meta.find(byname='i2')
|
||||
assert i2 == meta.find_first(byname='i2')
|
||||
assert meta.make_dict() == {'od1.i4': 2, 'od1.i1': None, 'od1.i3': None, 'od1.i2': 1}
|
||||
|
||||
|
||||
#def test_meta_meta():
|
||||
# meta1 = make_description()
|
||||
# meta2 = MetaConfig([meta1])
|
||||
# meta2.cfgimpl_get_settings().setowner(owners.meta)
|
||||
# conf1, conf2 = meta1._impl_children
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
# meta2.od1.i2 = 3
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 3
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
# meta2.od1.i2 = 3
|
||||
# conf1.od1.i2 = 2
|
||||
# assert conf1.od1.i2 == 2
|
||||
# assert conf2.od1.i2 == 3
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
# meta2.od1.i2 = 4
|
||||
# assert conf1.od1.i2 == 2
|
||||
# assert conf2.od1.i2 == 4
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
# del(meta2.od1.i2)
|
||||
# assert conf1.od1.i2 == 2
|
||||
# assert conf2.od1.i2 == 1
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
# assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
# del(conf1.od1.i2)
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
# meta1.od1.i2 = 6
|
||||
# assert conf1.od1.i2 == conf2.od1.i2 == 6
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
def test_meta_meta():
|
||||
meta1 = make_description()
|
||||
meta2 = MetaConfig([meta1])
|
||||
meta2.cfgimpl_get_settings().setowner(owners.meta)
|
||||
conf1, conf2 = meta1._impl_children
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
meta2.od1.i2 = 3
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 3
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
meta2.od1.i2 = 3
|
||||
conf1.od1.i2 = 2
|
||||
assert conf1.od1.i2 == 2
|
||||
assert conf2.od1.i2 == 3
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
meta2.od1.i2 = 4
|
||||
assert conf1.od1.i2 == 2
|
||||
assert conf2.od1.i2 == 4
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
del(meta2.od1.i2)
|
||||
assert conf1.od1.i2 == 2
|
||||
assert conf2.od1.i2 == 1
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is owners.user
|
||||
assert conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
del(conf1.od1.i2)
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 1
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.default
|
||||
meta1.od1.i2 = 6
|
||||
assert conf1.od1.i2 == conf2.od1.i2 == 6
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i2')) is conf2.getowner(conf2.unwrap_from_path('od1.i2')) is owners.meta
|
||||
|
||||
|
||||
#def test_meta_meta_set():
|
||||
# meta1 = make_description()
|
||||
# meta2 = MetaConfig([meta1])
|
||||
# meta2.cfgimpl_get_settings().setowner(owners.meta)
|
||||
# conf1, conf2 = meta1._impl_children
|
||||
# meta2.set_contexts('od1.i1', 7)
|
||||
# assert conf1.od1.i1 == conf2.od1.i1 == 7
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i1')) is conf2.getowner(conf2.unwrap_from_path('od1.i1')) is owners.user
|
||||
# assert [conf1, conf2] == meta2.find_first_contexts(byname='i1', byvalue=7)
|
||||
# conf1.od1.i1 = 8
|
||||
# assert [conf2] == meta2.find_first_contexts(byname='i1', byvalue=7)
|
||||
# assert [conf1] == meta2.find_first_contexts(byname='i1', byvalue=8)
|
||||
# raises(AttributeError, "meta2.find_first_contexts(byname='i1', byvalue=10)")
|
||||
def test_meta_meta_set():
|
||||
meta1 = make_description()
|
||||
meta2 = MetaConfig([meta1])
|
||||
meta2.cfgimpl_get_settings().setowner(owners.meta)
|
||||
conf1, conf2 = meta1._impl_children
|
||||
meta2.setattrs('od1.i1', 7)
|
||||
assert conf1.od1.i1 == conf2.od1.i1 == 7
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i1')) is conf2.getowner(conf2.unwrap_from_path('od1.i1')) is owners.user
|
||||
assert [conf1, conf2] == meta2.find_firsts(byname='i1', byvalue=7)
|
||||
conf1.od1.i1 = 8
|
||||
assert [conf2] == meta2.find_firsts(byname='i1', byvalue=7)
|
||||
assert [conf1] == meta2.find_firsts(byname='i1', byvalue=8)
|
||||
raises(AttributeError, "meta2.find_firsts(byname='i1', byvalue=10)")
|
||||
|
||||
|
||||
#def test_not_meta():
|
||||
# i1 = IntOption('i1', '')
|
||||
# od1 = OptionDescription('od1', '', [i1])
|
||||
# od2 = OptionDescription('od2', '', [od1])
|
||||
# conf1 = Config(od2)
|
||||
# conf2 = Config(od2)
|
||||
# meta = MetaConfig([conf1, conf2], False)
|
||||
# raises(ConfigError, 'meta.od1.i1')
|
||||
# conf1, conf2 = meta._impl_children
|
||||
# meta.set_contexts('od1.i1', 7)
|
||||
# assert conf1.od1.i1 == conf2.od1.i1 == 7
|
||||
# assert conf1.getowner(conf1.unwrap_from_path('od1.i1')) is conf2.getowner(conf2.unwrap_from_path('od1.i1')) is owners.user
|
||||
def test_not_meta():
|
||||
i1 = IntOption('i1', '')
|
||||
od1 = OptionDescription('od1', '', [i1])
|
||||
od2 = OptionDescription('od2', '', [od1])
|
||||
conf1 = Config(od2)
|
||||
conf2 = Config(od2)
|
||||
meta = GroupConfig([conf1, conf2])
|
||||
raises(ConfigError, 'meta.od1.i1')
|
||||
conf1, conf2 = meta._impl_children
|
||||
meta.setattrs('od1.i1', 7)
|
||||
assert conf1.od1.i1 == conf2.od1.i1 == 7
|
||||
assert conf1.getowner(conf1.unwrap_from_path('od1.i1')) is conf2.getowner(conf2.unwrap_from_path('od1.i1')) is owners.user
|
||||
|
||||
|
||||
#def test_meta_path():
|
||||
# meta = make_description()
|
||||
# assert meta._impl_path is None
|
||||
# assert meta.od1._impl_path == 'od1'
|
||||
def test_meta_path():
|
||||
meta = make_description()
|
||||
assert meta._impl_path is None
|
||||
assert meta.od1._impl_path == 'od1'
|
||||
|
21
test/test_multi.py
Normal file
21
test/test_multi.py
Normal file
@ -0,0 +1,21 @@
|
||||
# coding: utf-8
|
||||
import autopath
|
||||
from tiramisu.value import Multi
|
||||
from tiramisu.option import IntOption, OptionDescription
|
||||
from tiramisu.config import Config
|
||||
from tiramisu.error import ConfigError
|
||||
|
||||
import weakref
|
||||
from py.test import raises
|
||||
|
||||
|
||||
def test_multi():
|
||||
i = IntOption('int', '', multi=True)
|
||||
o = OptionDescription('od', '', [i])
|
||||
c = Config(o)
|
||||
multi = Multi([1,2,3], weakref.ref(c), i, 'int')
|
||||
raises(ValueError, "Multi([1,2,3], c, i, 'int')")
|
||||
raises(ValueError, "Multi(multi, weakref.ref(c), i, 'int')")
|
||||
assert c is multi._getcontext()
|
||||
del(c)
|
||||
raises(ConfigError, "multi._getcontext()")
|
@ -374,6 +374,9 @@ def test_callback_multi_value():
|
||||
assert cfg.val2 == ['val']
|
||||
assert cfg.val3 == ['yes']
|
||||
assert cfg.val4 == ['val', 'yes']
|
||||
cfg.val2.append('new')
|
||||
assert cfg.val1 == ['val']
|
||||
assert cfg.val2 == ['val', 'new']
|
||||
|
||||
|
||||
def test_callback_multi_list():
|
||||
@ -467,6 +470,66 @@ def test_callback_master_and_slaves_slave():
|
||||
assert cfg.val1.val2 == ['val2', 'val2', 'val']
|
||||
|
||||
|
||||
def test_callback_master_and_slaves_slave_cal():
|
||||
val3 = StrOption('val3', "", multi=True)
|
||||
val1 = StrOption('val1', "", multi=True, callback=return_value, callback_params={'': ((val3, False),)})
|
||||
val2 = StrOption('val2', "", multi=True, callback=return_val)
|
||||
interface1 = OptionDescription('val1', '', [val1, val2])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
maconfig = OptionDescription('rootconfig', '', [interface1, val3])
|
||||
cfg = Config(maconfig)
|
||||
cfg.read_write()
|
||||
assert cfg.val3 == []
|
||||
assert cfg.val1.val1 == []
|
||||
assert cfg.val1.val2 == []
|
||||
cfg.val1.val1 = ['val1']
|
||||
cfg.val3 = ['val1']
|
||||
assert cfg.val1.val1 == ['val1']
|
||||
assert cfg.val1.val2 == ['val']
|
||||
assert cfg.val1.val1 == ['val1']
|
||||
assert cfg.val1.val2 == ['val']
|
||||
del(cfg.val1.val1)
|
||||
cfg.val1.val2 = ['val']
|
||||
cfg.val3 = ['val1', 'val2']
|
||||
assert cfg.val1.val2 == ['val', 'val']
|
||||
assert cfg.val1.val1 == ['val1', 'val2']
|
||||
cfg.val1.val2 = ['val1', 'val2']
|
||||
cfg.val3.pop(1)
|
||||
# cannot remove slave's value because master is calculated
|
||||
# so raise
|
||||
raises(SlaveError, "cfg.val1.val1")
|
||||
raises(SlaveError, "cfg.val1.val2")
|
||||
cfg.val3 = ['val1', 'val2', 'val3']
|
||||
assert cfg.val1.val2 == ['val1', 'val2', 'val']
|
||||
|
||||
|
||||
def test_callback_master_and_slaves_slave_cal2():
|
||||
val3 = StrOption('val3', "", ['val', 'val'], multi=True)
|
||||
val1 = StrOption('val1', "", multi=True, callback=return_value, callback_params={'': ((val3, False),)})
|
||||
val2 = StrOption('val2', "", ['val2', 'val2'], multi=True)
|
||||
interface1 = OptionDescription('val1', '', [val1, val2])
|
||||
interface1.impl_set_group_type(groups.master)
|
||||
maconfig = OptionDescription('rootconfig', '', [interface1, val3])
|
||||
cfg = Config(maconfig)
|
||||
cfg.read_write()
|
||||
assert cfg.val3 == ['val', 'val']
|
||||
assert cfg.val1.val1 == ['val', 'val']
|
||||
assert cfg.val1.val2 == ['val2', 'val2']
|
||||
cfg.val3.pop(1)
|
||||
# # cannot remove slave's value because master is calculated
|
||||
# # so raise
|
||||
raises(SlaveError, "cfg.val1.val1")
|
||||
raises(SlaveError, "cfg.val1.val2")
|
||||
cfg.val3 = ['val', 'val']
|
||||
assert cfg.val3 == ['val', 'val']
|
||||
assert cfg.val1.val1 == ['val', 'val']
|
||||
assert cfg.val1.val2 == ['val2', 'val2']
|
||||
raises(SlaveError, "cfg.val1.val1 = ['val']")
|
||||
assert cfg.val3 == ['val', 'val']
|
||||
assert cfg.val1.val1 == ['val', 'val']
|
||||
assert cfg.val1.val2 == ['val2', 'val2']
|
||||
|
||||
|
||||
def test_callback_master_and_slaves_slave_list():
|
||||
val1 = StrOption('val1', "", multi=True)
|
||||
val2 = StrOption('val2', "", multi=True, callback=return_list)
|
||||
|
@ -1,10 +1,11 @@
|
||||
#from tiramisu.option import BoolOption, UnicodeOption, SymLinkOption, \
|
||||
# OptionDescription
|
||||
#from tiramisu.config import Config
|
||||
# IntOption, OptionDescription
|
||||
#from tiramisu.config import Config, GroupConfig, MetaConfig
|
||||
#from tiramisu.setting import owners
|
||||
#from tiramisu.storage import delete_session
|
||||
#from tiramisu.error import ConfigError
|
||||
#from pickle import dumps, loads
|
||||
#from py.test import raises
|
||||
#
|
||||
#
|
||||
#def return_value(value=None):
|
||||
@ -90,6 +91,45 @@
|
||||
# assert val1 == val2
|
||||
#
|
||||
#
|
||||
#def _diff_conf(cfg1, cfg2):
|
||||
# attr1 = set(_get_slots(cfg1))
|
||||
# attr2 = set(_get_slots(cfg2))
|
||||
# diff1 = attr1 - attr2
|
||||
# diff2 = attr2 - attr1
|
||||
# if diff1 != set():
|
||||
# raise Exception('more attribute in cfg1 {0}'.format(list(diff1)))
|
||||
# if diff2 != set():
|
||||
# raise Exception('more attribute in cfg2 {0}'.format(list(diff2)))
|
||||
# for attr in attr1:
|
||||
# if attr in ('_impl_context', '__weakref__'):
|
||||
# continue
|
||||
# err1 = False
|
||||
# err2 = False
|
||||
# val1 = None
|
||||
# val2 = None
|
||||
# try:
|
||||
# val1 = getattr(cfg1, attr)
|
||||
# except:
|
||||
# err1 = True
|
||||
#
|
||||
# try:
|
||||
# val2 = getattr(cfg2, attr)
|
||||
# except:
|
||||
# err2 = True
|
||||
# assert err1 == err2
|
||||
# if val1 is None:
|
||||
# assert val1 == val2
|
||||
# elif attr == '_impl_values':
|
||||
# assert cfg1.cfgimpl_get_values().get_modified_values() == cfg2.cfgimpl_get_values().get_modified_values()
|
||||
# elif attr == '_impl_settings':
|
||||
# assert cfg1.cfgimpl_get_settings().get_modified_properties() == cfg2.cfgimpl_get_settings().get_modified_properties()
|
||||
# assert cfg1.cfgimpl_get_settings().get_modified_permissives() == cfg2.cfgimpl_get_settings().get_modified_permissives()
|
||||
# elif attr == '_impl_descr':
|
||||
# _diff_opt(cfg1.cfgimpl_get_description(), cfg2.cfgimpl_get_description())
|
||||
# else:
|
||||
# assert val1 == val2
|
||||
#
|
||||
#
|
||||
#def test_diff_opt():
|
||||
# b = BoolOption('b', '')
|
||||
# u = UnicodeOption('u', '', requires=[{'option': b, 'expected': True, 'action': 'disabled', 'inverse': True}])
|
||||
@ -169,10 +209,7 @@
|
||||
# cfg._impl_test = True
|
||||
# a = dumps(cfg)
|
||||
# q = loads(a)
|
||||
# _diff_opt(maconfig, q.cfgimpl_get_description())
|
||||
# assert cfg.cfgimpl_get_values().get_modified_values() == q.cfgimpl_get_values().get_modified_values()
|
||||
# assert cfg.cfgimpl_get_settings().get_modified_properties() == q.cfgimpl_get_settings().get_modified_properties()
|
||||
# assert cfg.cfgimpl_get_settings().get_modified_permissives() == q.cfgimpl_get_settings().get_modified_permissives()
|
||||
# _diff_conf(cfg, q)
|
||||
# try:
|
||||
# delete_session('29090931')
|
||||
# except ConfigError:
|
||||
@ -191,12 +228,9 @@
|
||||
# cfg.cfgimpl_get_settings()[val1].append('test')
|
||||
# a = dumps(cfg)
|
||||
# q = loads(a)
|
||||
# _diff_opt(maconfig, q.cfgimpl_get_description())
|
||||
# assert cfg.cfgimpl_get_values().get_modified_values() == q.cfgimpl_get_values().get_modified_values()
|
||||
# assert cfg.cfgimpl_get_settings().get_modified_properties() == q.cfgimpl_get_settings().get_modified_properties()
|
||||
# assert cfg.cfgimpl_get_settings().get_modified_permissives() == q.cfgimpl_get_settings().get_modified_permissives()
|
||||
# _diff_conf(cfg, q)
|
||||
# try:
|
||||
# delete_session('29090931')
|
||||
# delete_session('29090932')
|
||||
# except ConfigError:
|
||||
# pass
|
||||
#
|
||||
@ -212,15 +246,12 @@
|
||||
# cfg.val1 = True
|
||||
# a = dumps(cfg)
|
||||
# q = loads(a)
|
||||
# _diff_opt(maconfig, q.cfgimpl_get_description())
|
||||
# assert cfg.cfgimpl_get_values().get_modified_values() == q.cfgimpl_get_values().get_modified_values()
|
||||
# assert cfg.cfgimpl_get_settings().get_modified_properties() == q.cfgimpl_get_settings().get_modified_properties()
|
||||
# assert cfg.cfgimpl_get_settings().get_modified_permissives() == q.cfgimpl_get_settings().get_modified_permissives()
|
||||
# _diff_conf(cfg, q)
|
||||
# q.val1 = False
|
||||
# #assert cfg.val1 is True
|
||||
# assert q.val1 is False
|
||||
# try:
|
||||
# delete_session('29090931')
|
||||
# delete_session('29090933')
|
||||
# except ConfigError:
|
||||
# pass
|
||||
#
|
||||
@ -238,14 +269,94 @@
|
||||
# cfg.val1 = True
|
||||
# a = dumps(cfg)
|
||||
# q = loads(a)
|
||||
# _diff_opt(maconfig, q.cfgimpl_get_description())
|
||||
# assert cfg.cfgimpl_get_values().get_modified_values() == q.cfgimpl_get_values().get_modified_values()
|
||||
# assert cfg.cfgimpl_get_settings().get_modified_properties() == q.cfgimpl_get_settings().get_modified_properties()
|
||||
# assert cfg.cfgimpl_get_settings().get_modified_permissives() == q.cfgimpl_get_settings().get_modified_permissives()
|
||||
# _diff_conf(cfg, q)
|
||||
# q.val1 = False
|
||||
# nval1 = q.cfgimpl_get_description().val1
|
||||
# assert q.getowner(nval1) == owners.newowner
|
||||
# try:
|
||||
# delete_session('29090931')
|
||||
# delete_session('29090934')
|
||||
# except ConfigError:
|
||||
# pass
|
||||
#
|
||||
#
|
||||
#def test_state_metaconfig():
|
||||
# i1 = IntOption('i1', '')
|
||||
# od1 = OptionDescription('od1', '', [i1])
|
||||
# od2 = OptionDescription('od2', '', [od1])
|
||||
# conf1 = Config(od2, session_id='29090935')
|
||||
# conf1._impl_test = True
|
||||
# conf2 = Config(od2, session_id='29090936')
|
||||
# conf2._impl_test = True
|
||||
# meta = MetaConfig([conf1, conf2], session_id='29090937')
|
||||
# meta._impl_test = True
|
||||
# raises(ConfigError, "dumps(meta)")
|
||||
# try:
|
||||
# delete_session('29090935')
|
||||
# delete_session('29090936')
|
||||
# delete_session('29090937')
|
||||
# except ConfigError:
|
||||
# pass
|
||||
#
|
||||
#
|
||||
#def test_state_groupconfig():
|
||||
# i1 = IntOption('i1', '')
|
||||
# od1 = OptionDescription('od1', '', [i1])
|
||||
# od2 = OptionDescription('od2', '', [od1])
|
||||
# conf1 = Config(od2, session_id='29090935')
|
||||
# conf1._impl_test = True
|
||||
# conf2 = Config(od2, session_id='29090936')
|
||||
# conf2._impl_test = True
|
||||
# meta = GroupConfig([conf1, conf2], session_id='29090937')
|
||||
# meta._impl_test = True
|
||||
# a = dumps(meta)
|
||||
# q = loads(a)
|
||||
# _diff_conf(meta, q)
|
||||
# try:
|
||||
# delete_session('29090935')
|
||||
# delete_session('29090936')
|
||||
# delete_session('29090937')
|
||||
# except ConfigError:
|
||||
# pass
|
||||
#
|
||||
#
|
||||
#def test_state_unkown_setting_owner():
|
||||
# """load an unknow _owner, should create it"""
|
||||
# assert not 'supernewuser' in owners.__dict__
|
||||
# loads("""ccopy_reg
|
||||
#_reconstructor
|
||||
#p0
|
||||
#(ctiramisu.setting
|
||||
#Settings
|
||||
#p1
|
||||
#c__builtin__
|
||||
#object
|
||||
#p2
|
||||
#Ntp3
|
||||
#Rp4
|
||||
#(dp5
|
||||
#S'_owner'
|
||||
#p6
|
||||
#S'supernewuser'
|
||||
#p7
|
||||
#sS'_p_'
|
||||
#p8
|
||||
#g0
|
||||
#(ctiramisu.storage.dictionary.setting
|
||||
#Settings
|
||||
#p9
|
||||
#g2
|
||||
#Ntp10
|
||||
#Rp11
|
||||
#(dp12
|
||||
#S'_cache'
|
||||
#p13
|
||||
#(dp14
|
||||
#sS'_permissives'
|
||||
#p15
|
||||
#(dp16
|
||||
#sS'_properties'
|
||||
#p17
|
||||
#(dp18
|
||||
#sbsb.
|
||||
#.""")
|
||||
# assert 'supernewuser' in owners.__dict__
|
||||
|
Reference in New Issue
Block a user