Manipulate properties is now more convenient:
c.cfgimpl_get_settings().has_property('hidden') => 'hidden' in c.cfgimpl_get_settings() c.cfgimpl_get_settings().has_property('hidden', option1) => 'frozen' in c.cfgimpl_get_settings()[opt] c.cfgimpl_get_settings().get_properties(option1) => c.cfgimpl_get_settings()[option1] c.cfgimpl_get_settings().get_properties(option1) => c.cfgimpl_get_settings()[option1] c.cfgimpl_get_settings().add_property('hidden', option1) => c.cfgimpl_get_settings()[optiont1].append('hidden') c.cfgimpl_get_settings().del_property('hidden', option1) => c.cfgimpl_get_settings()[optiont1].remove('hidden') c.cfgimpl_get_settings().enable_property('hidden') => c.cfgimpl_get_settings().append('hidden') c.cfgimpl_get_settings().disable_property('hidden') => c.cfgimpl_get_settings().remove('hidden')
This commit is contained in:
179
test/test_cache.py
Normal file
179
test/test_cache.py
Normal file
@ -0,0 +1,179 @@
|
||||
# coding: utf-8
|
||||
import autopath
|
||||
from tiramisu import setting
|
||||
setting.expires_time = 1
|
||||
from tiramisu.option import IntOption, OptionDescription
|
||||
from tiramisu.config import Config
|
||||
from time import sleep
|
||||
|
||||
|
||||
def make_description():
|
||||
u1 = IntOption('u1', '', multi=True)
|
||||
u2 = IntOption('u2', '')
|
||||
u3 = IntOption('u3', '', multi=True)
|
||||
return OptionDescription('od1', '', [u1, u2, u3])
|
||||
|
||||
|
||||
def test_cache():
|
||||
od1 = make_description()
|
||||
c = Config(od1)
|
||||
values = c.cfgimpl_get_values()
|
||||
settings = c.cfgimpl_get_settings()
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.u2
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
assert od1.u2 in values._cache
|
||||
assert od1.u2 in settings._cache
|
||||
|
||||
|
||||
def test_cache_reset():
|
||||
od1 = make_description()
|
||||
c = Config(od1)
|
||||
values = c.cfgimpl_get_values()
|
||||
settings = c.cfgimpl_get_settings()
|
||||
#when change a value
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.u2 = 1
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
#when remove a value
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
del(c.u2)
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
#when add/del property
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.cfgimpl_get_settings()[od1.u2].append('test')
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.cfgimpl_get_settings()[od1.u2].remove('test')
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
#when enable/disabled property
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.cfgimpl_get_settings().append('test')
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.cfgimpl_get_settings().remove('test')
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
|
||||
|
||||
def test_cache_reset_multi():
|
||||
od1 = make_description()
|
||||
c = Config(od1)
|
||||
values = c.cfgimpl_get_values()
|
||||
settings = c.cfgimpl_get_settings()
|
||||
#when change a value
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.u3 = [1]
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
#when append value
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.u3.append(1)
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
#when pop value
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.u3.pop(1)
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
#when remove a value
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
del(c.u3)
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
|
||||
|
||||
def test_reset_cache():
|
||||
od1 = make_description()
|
||||
c = Config(od1)
|
||||
values = c.cfgimpl_get_values()
|
||||
settings = c.cfgimpl_get_settings()
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.cfgimpl_reset_cache()
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
c.u1
|
||||
sleep(1)
|
||||
c.u2
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
assert od1.u2 in values._cache
|
||||
assert od1.u2 in settings._cache
|
||||
c.cfgimpl_reset_cache()
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
assert od1.u2 not in values._cache
|
||||
assert od1.u2 not in settings._cache
|
||||
|
||||
|
||||
def test_reset_cache_only_expired():
|
||||
od1 = make_description()
|
||||
c = Config(od1)
|
||||
values = c.cfgimpl_get_values()
|
||||
settings = c.cfgimpl_get_settings()
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.cfgimpl_reset_cache(True)
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
sleep(1)
|
||||
c.u2
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
assert od1.u2 in values._cache
|
||||
assert od1.u2 in settings._cache
|
||||
c.cfgimpl_reset_cache(True)
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 not in settings._cache
|
||||
assert od1.u2 in values._cache
|
||||
assert od1.u2 in settings._cache
|
||||
|
||||
|
||||
def test_reset_cache_only():
|
||||
od1 = make_description()
|
||||
c = Config(od1)
|
||||
values = c.cfgimpl_get_values()
|
||||
settings = c.cfgimpl_get_settings()
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.cfgimpl_reset_cache(only=('values',))
|
||||
assert od1.u1 not in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.u1
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 in settings._cache
|
||||
c.cfgimpl_reset_cache(only=('settings',))
|
||||
assert od1.u1 in values._cache
|
||||
assert od1.u1 not in settings._cache
|
@ -39,7 +39,7 @@ def test_freeze_whole_config():
|
||||
conf = Config(descr)
|
||||
setting = conf.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
setting.enable_property('everything_frozen')
|
||||
setting.append('everything_frozen')
|
||||
assert conf.gc.dummy is False
|
||||
prop = []
|
||||
try:
|
||||
@ -47,7 +47,7 @@ def test_freeze_whole_config():
|
||||
except PropertiesOptionError, err:
|
||||
prop = err.proptype
|
||||
assert 'frozen' in prop
|
||||
setting.disable_property('everything_frozen')
|
||||
setting.remove('everything_frozen')
|
||||
conf.gc.dummy = True
|
||||
assert conf.gc.dummy is True
|
||||
|
||||
@ -60,7 +60,7 @@ def test_freeze_one_option():
|
||||
setting.read_write()
|
||||
#freeze only one option
|
||||
dummy = conf.unwrap_from_path('gc.dummy')
|
||||
setting.add_property('frozen', dummy)
|
||||
setting[dummy].append('frozen')
|
||||
assert conf.gc.dummy is False
|
||||
prop = []
|
||||
try:
|
||||
@ -77,8 +77,8 @@ def test_frozen_value():
|
||||
config = Config(descr)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
setting.enable_property('frozen')
|
||||
setting.add_property('frozen', s)
|
||||
setting.append('frozen')
|
||||
setting[s].append('frozen')
|
||||
prop = []
|
||||
try:
|
||||
config.string = "egg"
|
||||
@ -93,9 +93,9 @@ def test_freeze():
|
||||
conf = Config(descr)
|
||||
setting = conf.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
setting.enable_property('frozen')
|
||||
setting.append('frozen')
|
||||
name = conf.unwrap_from_path("gc.name")
|
||||
setting.add_property('frozen', name)
|
||||
setting[name].append('frozen')
|
||||
prop = []
|
||||
try:
|
||||
conf.gc.name = 'framework'
|
||||
@ -109,9 +109,9 @@ def test_freeze_multi():
|
||||
conf = Config(descr)
|
||||
setting = conf.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
setting.enable_property('frozen')
|
||||
setting.append('frozen')
|
||||
obj = conf.unwrap_from_path('boolop')
|
||||
setting.add_property('frozen', obj)
|
||||
setting[obj].append('frozen')
|
||||
prop = []
|
||||
try:
|
||||
conf.boolop = [True]
|
||||
@ -125,11 +125,11 @@ def test_freeze_get_multi():
|
||||
conf = Config(descr)
|
||||
setting = conf.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
setting.enable_property('frozen')
|
||||
setting.append('frozen')
|
||||
valmulti = conf.boolop
|
||||
valmulti.append(False)
|
||||
obj = conf.unwrap_from_path('boolop')
|
||||
setting.add_property('frozen', obj)
|
||||
setting[obj].append('frozen')
|
||||
prop = []
|
||||
try:
|
||||
valmulti.append(False)
|
||||
|
@ -171,7 +171,7 @@ def test_mandatory_disabled():
|
||||
except PropertiesOptionError, err:
|
||||
prop = err.proptype
|
||||
assert prop == ['mandatory']
|
||||
setting.add_property('disabled', descr.str1)
|
||||
setting[descr.str1].append('disabled')
|
||||
prop = []
|
||||
try:
|
||||
config.str1
|
||||
@ -242,7 +242,7 @@ def test_mandatory_warnings_disabled():
|
||||
setting.read_write()
|
||||
config.str
|
||||
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|
||||
setting.add_property('disabled', descr.str)
|
||||
setting[descr.str].append('disabled')
|
||||
assert list(mandatory_warnings(config)) == ['str1', 'unicode2', 'str3']
|
||||
|
||||
|
||||
@ -254,6 +254,6 @@ def test_mandatory_warnings_frozen():
|
||||
setting.read_write()
|
||||
config.str
|
||||
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|
||||
setting.add_property('frozen', descr.str)
|
||||
setting[descr.str].append('frozen')
|
||||
setting.read_only()
|
||||
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|
||||
|
@ -159,11 +159,11 @@ def test_hidden_if_in():
|
||||
setting.read_write()
|
||||
intoption = cfg.unwrap_from_path('int')
|
||||
stroption = cfg.unwrap_from_path('str')
|
||||
assert not setting.has_property('hidden', stroption)
|
||||
assert not 'hidden' in setting[stroption]
|
||||
cfg.int = 1
|
||||
raises(PropertiesOptionError, "cfg.str")
|
||||
raises(PropertiesOptionError, 'cfg.str="uvw"')
|
||||
assert setting.has_property('hidden', stroption)
|
||||
assert 'hidden' in setting[stroption]
|
||||
|
||||
def test_hidden_if_in_with_group():
|
||||
gcoption = ChoiceOption('name', 'GC name', ('ref', 'framework'), 'ref')
|
||||
@ -183,7 +183,7 @@ def test_hidden_if_in_with_group():
|
||||
cfg = Config(descr)
|
||||
setting = cfg.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
assert not setting.has_property('hidden', stroption)
|
||||
assert not 'hidden' in setting[stroption]
|
||||
cfg.int = 1
|
||||
raises(PropertiesOptionError, "cfg.gc.name")
|
||||
|
||||
@ -241,8 +241,8 @@ def test_has_callback():
|
||||
config.bool = False
|
||||
# because dummy has a callback
|
||||
dummy = config.unwrap_from_path('gc.dummy')
|
||||
setting.enable_property('freeze')
|
||||
setting.add_property('frozen', dummy)
|
||||
setting.append('freeze')
|
||||
setting[dummy].append('frozen')
|
||||
raises(PropertiesOptionError, "config.gc.dummy = True")
|
||||
|
||||
def test_freeze_and_has_callback():
|
||||
@ -251,8 +251,9 @@ def test_freeze_and_has_callback():
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
config.bool = False
|
||||
config.cfgimpl_get_settings().enable_property('freeze')
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.append('freeze')
|
||||
dummy = config.unwrap_from_path('gc.dummy')
|
||||
config.cfgimpl_get_settings().add_property('frozen', dummy)
|
||||
setting[dummy].append('frozen')
|
||||
raises(PropertiesOptionError, "config.gc.dummy = True")
|
||||
#____________________________________________________________
|
||||
|
@ -58,8 +58,9 @@ def test_force_default_on_freeze():
|
||||
config = Config(group)
|
||||
config.dummy1 = True
|
||||
config.dummy2 = False
|
||||
config.cfgimpl_get_settings().add_property('frozen', dummy1)
|
||||
config.cfgimpl_get_settings().add_property('frozen', dummy2)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting[dummy1].append('frozen')
|
||||
setting[dummy2].append('frozen')
|
||||
assert config.dummy1 == False
|
||||
assert config.dummy2 == False
|
||||
|
||||
|
@ -145,10 +145,10 @@ def test_multi_with_requires():
|
||||
config = Config(descr)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert not 'hidden' in setting[stroption]
|
||||
config.int = 1
|
||||
raises(PropertiesOptionError, "config.str = ['a', 'b']")
|
||||
assert config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert 'hidden' in setting[stroption]
|
||||
|
||||
|
||||
def test__requires_with_inverted():
|
||||
@ -158,9 +158,10 @@ def test__requires_with_inverted():
|
||||
requires=[('int', 1, 'hide', 'inverted')], multi=True)
|
||||
descr = OptionDescription("options", "", [s, intoption, stroption])
|
||||
config = Config(descr)
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
assert not 'hidden' in setting[stroption]
|
||||
config.int = 1
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert not 'hidden' in setting[stroption]
|
||||
|
||||
|
||||
def test_multi_with_requires_in_another_group():
|
||||
@ -174,10 +175,10 @@ def test_multi_with_requires_in_another_group():
|
||||
config = Config(descr2)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert not 'hidden' in setting[stroption]
|
||||
config.int = 1
|
||||
raises(PropertiesOptionError, "config.opt.str = ['a', 'b']")
|
||||
assert config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert 'hidden' in setting[stroption]
|
||||
|
||||
|
||||
def test_apply_requires_from_config():
|
||||
@ -191,10 +192,10 @@ def test_apply_requires_from_config():
|
||||
config = Config(descr2)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert not 'hidden' in setting[stroption]
|
||||
config.int = 1
|
||||
raises(PropertiesOptionError, 'config.opt.str')
|
||||
assert config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert 'hidden' in setting[stroption]
|
||||
|
||||
|
||||
def test_apply_requires_with_disabled():
|
||||
@ -208,10 +209,10 @@ def test_apply_requires_with_disabled():
|
||||
config = Config(descr2)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
assert not config.cfgimpl_get_settings().has_property('disabled', stroption)
|
||||
assert not 'disabled' in setting[stroption]
|
||||
config.int = 1
|
||||
raises(PropertiesOptionError, 'config.opt.str')
|
||||
assert config.cfgimpl_get_settings().has_property('disabled', stroption)
|
||||
assert 'disabled' in setting[stroption]
|
||||
|
||||
|
||||
def test_multi_with_requires_with_disabled_in_another_group():
|
||||
@ -225,10 +226,10 @@ def test_multi_with_requires_with_disabled_in_another_group():
|
||||
config = Config(descr2)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
assert not config.cfgimpl_get_settings().has_property('disabled', stroption)
|
||||
assert not 'disabled' in setting[stroption]
|
||||
config.int = 1
|
||||
raises(PropertiesOptionError, "config.opt.str = ['a', 'b']")
|
||||
assert config.cfgimpl_get_settings().has_property('disabled', stroption)
|
||||
assert 'disabled' in setting[stroption]
|
||||
|
||||
|
||||
def test_multi_with_requires_that_is_multi():
|
||||
@ -240,10 +241,10 @@ def test_multi_with_requires_that_is_multi():
|
||||
config = Config(descr)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert not 'hidden' in setting[stroption]
|
||||
config.int = [1, 1]
|
||||
raises(PropertiesOptionError, "config.str = ['a', 'b']")
|
||||
assert config.cfgimpl_get_settings().has_property('hidden', stroption)
|
||||
assert 'hidden' in setting[stroption]
|
||||
|
||||
|
||||
def test_multi_with_bool():
|
||||
|
@ -45,7 +45,7 @@ def test_is_hidden():
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
dummy = config.unwrap_from_path('gc.dummy')
|
||||
assert not config.cfgimpl_get_settings().has_property('frozen', dummy)
|
||||
assert not 'frozen' in setting[dummy]
|
||||
# setattr
|
||||
raises(PropertiesOptionError, "config.gc.dummy == False")
|
||||
# getattr
|
||||
@ -59,13 +59,13 @@ def test_group_is_hidden():
|
||||
setting.read_write()
|
||||
gc = config.unwrap_from_path('gc')
|
||||
config.unwrap_from_path('gc.dummy')
|
||||
config.cfgimpl_get_settings().add_property('hidden', gc)
|
||||
setting[gc].append('hidden')
|
||||
raises(PropertiesOptionError, "config.gc.dummy")
|
||||
assert config.cfgimpl_get_settings().has_property('hidden', gc)
|
||||
assert 'hidden' in setting[gc]
|
||||
raises(PropertiesOptionError, "config.gc.float")
|
||||
# manually set the subconfigs to "show"
|
||||
config.cfgimpl_get_settings().del_property('hidden', gc)
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', gc)
|
||||
setting[gc].remove('hidden')
|
||||
assert not 'hidden' in setting[gc]
|
||||
assert config.gc.float == 2.3
|
||||
#dummy est en hide
|
||||
prop = []
|
||||
@ -83,17 +83,17 @@ def test_group_is_hidden_multi():
|
||||
setting.read_write()
|
||||
obj = config.unwrap_from_path('objspace')
|
||||
objspace = config.objspace
|
||||
config.cfgimpl_get_settings().add_property('hidden', obj)
|
||||
setting[obj].append('hidden')
|
||||
raises(PropertiesOptionError, "config.objspace")
|
||||
assert config.cfgimpl_get_settings().has_property('hidden', obj)
|
||||
assert 'hidden' in setting[obj]
|
||||
prop = []
|
||||
try:
|
||||
objspace.append('std')
|
||||
except PropertiesOptionError, err:
|
||||
prop = err.proptype
|
||||
assert 'hidden' in prop
|
||||
config.cfgimpl_get_settings().del_property('hidden', obj)
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', obj)
|
||||
setting[obj].remove('hidden')
|
||||
assert not 'hidden' in setting[obj]
|
||||
config.objspace.append('std')
|
||||
|
||||
|
||||
@ -103,8 +103,8 @@ def test_global_show():
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
dummy = config.unwrap_from_path('gc.dummy')
|
||||
config.cfgimpl_get_settings().add_property('hidden', dummy)
|
||||
assert config.cfgimpl_get_settings().has_property('hidden', dummy)
|
||||
setting[dummy].append('hidden')
|
||||
assert 'hidden' in setting[dummy]
|
||||
raises(PropertiesOptionError, "config.gc.dummy == False")
|
||||
|
||||
|
||||
@ -112,11 +112,12 @@ def test_with_many_subgroups():
|
||||
descr = make_description()
|
||||
config = Config(descr)
|
||||
booltwo = config.unwrap_from_path('gc.subgroup.booltwo')
|
||||
assert not config.cfgimpl_get_settings().has_property('hidden', booltwo)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
assert not 'hidden' in setting[booltwo]
|
||||
assert config.gc.subgroup.booltwo is False
|
||||
config.cfgimpl_get_settings().add_property('hidden', booltwo)
|
||||
setting[booltwo].append('hidden')
|
||||
path = 'gc.subgroup.booltwo'
|
||||
homeconfig, name = config.cfgimpl_get_home_by_path(path)
|
||||
assert name == "booltwo"
|
||||
getattr(homeconfig._cfgimpl_descr, name)
|
||||
assert config.cfgimpl_get_settings().has_property('hidden', booltwo)
|
||||
assert 'hidden' in setting[booltwo]
|
||||
|
@ -2,15 +2,17 @@
|
||||
import autopath
|
||||
from py.test import raises
|
||||
|
||||
from tiramisu.config import *
|
||||
from tiramisu.option import *
|
||||
from tiramisu.config import Config
|
||||
from tiramisu.option import BoolOption, OptionDescription, ChoiceOption,\
|
||||
IntOption, FloatOption, StrOption
|
||||
|
||||
|
||||
def make_description():
|
||||
gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
|
||||
gcdummy = BoolOption('dummy', 'dummy', default=False)
|
||||
gcdummy2 = BoolOption('hide', 'dummy', default=True)
|
||||
objspaceoption = ChoiceOption('objspace', 'Object space',
|
||||
['std', 'thunk'], 'std')
|
||||
['std', 'thunk'], 'std')
|
||||
booloption = BoolOption('bool', 'Test boolean option', default=True)
|
||||
intoption = IntOption('int', 'Test int option', default=0)
|
||||
floatoption = FloatOption('float', 'Test float option', default=2.3)
|
||||
@ -22,16 +24,11 @@ def make_description():
|
||||
|
||||
gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption, gcdummy2])
|
||||
descr = OptionDescription('tiram', '', [gcgroup, booloption, objspaceoption,
|
||||
wantref_option, stroption,
|
||||
wantframework_option,
|
||||
intoption, boolop])
|
||||
wantref_option, stroption,
|
||||
wantframework_option,
|
||||
intoption, boolop])
|
||||
return descr
|
||||
|
||||
#def test_base_config_and_groups():
|
||||
# descr = make_description()
|
||||
# # overrides the booloption default value
|
||||
# config = Config(descr, bool=False)
|
||||
# assert config.gc.hide == True
|
||||
|
||||
def test_root_config_answers_ok():
|
||||
"if you hide the root config, the options in this namespace behave normally"
|
||||
@ -40,16 +37,19 @@ def test_root_config_answers_ok():
|
||||
descr = OptionDescription('tiramisu', '', [gcdummy, boolop])
|
||||
cfg = Config(descr)
|
||||
settings = cfg.cfgimpl_get_settings()
|
||||
settings.enable_property('hiddend') #cfgimpl_hide()
|
||||
assert cfg.dummy == False
|
||||
assert cfg.boolop == True
|
||||
settings.append('hidden')
|
||||
assert cfg.dummy is False
|
||||
assert cfg.boolop is True
|
||||
|
||||
|
||||
def test_optname_shall_not_start_with_numbers():
|
||||
raises(ValueError, "gcdummy = BoolOption('123dummy', 'dummy', default=False)")
|
||||
raises(ValueError, "descr = OptionDescription('123tiramisu', '', [])")
|
||||
|
||||
#def test_option_has_an_api_name():
|
||||
# gcdummy = BoolOption('cfgimpl_get_settings', 'dummy', default=False)
|
||||
# boolop = BoolOption('boolop', 'Test boolean option op', default=True)
|
||||
# descr = OptionDescription('tiramisu', '', [gcdummy, boolop])
|
||||
# raises(ValueError, "cfg = Config(descr)")
|
||||
|
||||
def test_option_has_an_api_name():
|
||||
print "FIXME"
|
||||
#gcdummy = BoolOption('cfgimpl_get_settings', 'dummy', default=False)
|
||||
#boolop = BoolOption('boolop', 'Test boolean option op', default=True)
|
||||
#descr = OptionDescription('tiramisu', '', [gcdummy, boolop])
|
||||
#raises(ValueError, "cfg = Config(descr)")
|
||||
|
83
test/test_permissive.py
Normal file
83
test/test_permissive.py
Normal file
@ -0,0 +1,83 @@
|
||||
# coding: utf-8
|
||||
import autopath
|
||||
from tiramisu.option import IntOption, OptionDescription
|
||||
from tiramisu.config import Config
|
||||
from tiramisu.error import PropertiesOptionError
|
||||
|
||||
|
||||
def make_description():
|
||||
u1 = IntOption('u1', '', properties=('frozen', 'mandatory', 'disabled', ))
|
||||
return OptionDescription('od1', '', [u1])
|
||||
|
||||
|
||||
def test_permissive():
|
||||
descr = make_description()
|
||||
config = Config(descr)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
props = []
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
setting.set_permissive(('disabled',))
|
||||
props = []
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
setting.append('permissive')
|
||||
config.u1
|
||||
setting.remove('permissive')
|
||||
props = []
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled']
|
||||
|
||||
|
||||
def test_permissive_mandatory():
|
||||
descr = make_description()
|
||||
config = Config(descr)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_only()
|
||||
props = []
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled', 'mandatory']
|
||||
setting.set_permissive(('mandatory', 'disabled',))
|
||||
setting.append('permissive')
|
||||
config.u1
|
||||
setting.remove('permissive')
|
||||
try:
|
||||
config.u1
|
||||
except PropertiesOptionError, err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled', 'mandatory']
|
||||
|
||||
|
||||
def test_permissive_frozen():
|
||||
descr = make_description()
|
||||
config = Config(descr)
|
||||
setting = config.cfgimpl_get_settings()
|
||||
setting.read_write()
|
||||
setting.set_permissive(('frozen', 'disabled',))
|
||||
try:
|
||||
config.u1 = 1
|
||||
except PropertiesOptionError, err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled', 'frozen']
|
||||
setting.append('permissive')
|
||||
config.u1 = 1
|
||||
assert config.u1 == 1
|
||||
setting.remove('permissive')
|
||||
try:
|
||||
config.u1 = 1
|
||||
except PropertiesOptionError, err:
|
||||
props = err.proptype
|
||||
assert props == ['disabled', 'frozen']
|
Reference in New Issue
Block a user