2013-11-23 23:34:17 +01:00
|
|
|
#from tiramisu.option import BoolOption, UnicodeOption, SymLinkOption, \
|
|
|
|
# OptionDescription
|
|
|
|
#from tiramisu.config import Config
|
|
|
|
#from tiramisu.setting import owners
|
|
|
|
#from tiramisu.storage import delete_session
|
|
|
|
#from tiramisu.error import ConfigError
|
|
|
|
#from pickle import dumps, loads
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def return_value(value=None):
|
|
|
|
# return value
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def _get_slots(opt):
|
|
|
|
# slots = set()
|
|
|
|
# for subclass in opt.__class__.__mro__:
|
|
|
|
# if subclass is not object:
|
|
|
|
# slots.update(subclass.__slots__)
|
|
|
|
# return slots
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def _no_state(opt):
|
|
|
|
# for attr in _get_slots(opt):
|
|
|
|
# if 'state' in attr:
|
|
|
|
# try:
|
|
|
|
# getattr(opt, attr)
|
|
|
|
# except:
|
|
|
|
# pass
|
|
|
|
# else:
|
|
|
|
# raise Exception('opt should have already attribute {0}'.format(attr))
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def _diff_opt(opt1, opt2):
|
|
|
|
# attr1 = set(_get_slots(opt1))
|
|
|
|
# attr2 = set(_get_slots(opt2))
|
|
|
|
# diff1 = attr1 - attr2
|
|
|
|
# diff2 = attr2 - attr1
|
|
|
|
# if diff1 != set():
|
|
|
|
# raise Exception('more attribute in opt1 {0}'.format(list(diff1)))
|
|
|
|
# if diff2 != set():
|
|
|
|
# raise Exception('more attribute in opt2 {0}'.format(list(diff2)))
|
|
|
|
# for attr in attr1:
|
|
|
|
# if attr in ['_cache_paths', '_cache_consistencies']:
|
|
|
|
# continue
|
|
|
|
# err1 = False
|
|
|
|
# err2 = False
|
|
|
|
# val1 = None
|
|
|
|
# val2 = None
|
|
|
|
# try:
|
|
|
|
# val1 = getattr(opt1, attr)
|
|
|
|
# except:
|
|
|
|
# err1 = True
|
|
|
|
#
|
|
|
|
# try:
|
|
|
|
# val2 = getattr(opt2, attr)
|
|
|
|
# except:
|
|
|
|
# err2 = True
|
|
|
|
# assert err1 == err2
|
|
|
|
# if val1 is None:
|
|
|
|
# assert val1 == val2
|
|
|
|
# elif attr == '_children':
|
|
|
|
# assert val1[0] == val2[0]
|
|
|
|
# for index, _opt in enumerate(val1[1]):
|
|
|
|
# assert _opt._name == val2[1][index]._name
|
|
|
|
# elif attr == '_requires':
|
|
|
|
# assert val1[0][0][0]._name == val2[0][0][0]._name
|
|
|
|
# assert val1[0][0][1:] == val2[0][0][1:]
|
|
|
|
# elif attr == '_opt':
|
|
|
|
# assert val1._name == val2._name
|
|
|
|
# elif attr == '_consistencies':
|
|
|
|
# # dict is only a cache
|
|
|
|
# if isinstance(val1, list):
|
|
|
|
# for index, consistency in enumerate(val1):
|
|
|
|
# assert consistency[0] == val2[index][0]
|
|
|
|
# for idx, opt in enumerate(consistency[1]):
|
|
|
|
# assert opt._name == val2[index][1][idx]._name
|
|
|
|
# elif attr == '_callback':
|
|
|
|
# assert val1[0] == val2[0]
|
|
|
|
# if val1[1] is not None:
|
|
|
|
# for key, values in val1[1].items():
|
|
|
|
# for idx, value in enumerate(values):
|
|
|
|
# if isinstance(value, tuple):
|
|
|
|
# assert val1[1][key][idx][0]._name == val2[1][key][idx][0]._name
|
|
|
|
# assert val1[1][key][idx][1] == val2[1][key][idx][1]
|
|
|
|
# else:
|
|
|
|
# assert val1[1][key][idx] == val2[1][key][idx]
|
|
|
|
# else:
|
|
|
|
# assert val1[1] == val2[1]
|
|
|
|
# else:
|
|
|
|
# assert val1 == val2
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def test_diff_opt():
|
|
|
|
# b = BoolOption('b', '')
|
|
|
|
# u = UnicodeOption('u', '', requires=[{'option': b, 'expected': True, 'action': 'disabled', 'inverse': True}])
|
|
|
|
# #u.impl_add_consistency('not_equal', b)
|
|
|
|
# s = SymLinkOption('s', u)
|
|
|
|
# o = OptionDescription('o', '', [b, u, s])
|
|
|
|
# o1 = OptionDescription('o1', '', [o])
|
|
|
|
#
|
|
|
|
# a = dumps(o1)
|
|
|
|
# q = loads(a)
|
|
|
|
# _diff_opt(o1, q)
|
|
|
|
# _diff_opt(o1.o, q.o)
|
|
|
|
# _diff_opt(o1.o.b, q.o.b)
|
|
|
|
# _diff_opt(o1.o.u, q.o.u)
|
|
|
|
# _diff_opt(o1.o.s, q.o.s)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def test_diff_opt_cache():
|
|
|
|
# b = BoolOption('b', '')
|
|
|
|
# u = UnicodeOption('u', '', requires=[{'option': b, 'expected': True, 'action': 'disabled', 'inverse': True}])
|
|
|
|
# u.impl_add_consistency('not_equal', b)
|
|
|
|
# s = SymLinkOption('s', u)
|
|
|
|
# o = OptionDescription('o', '', [b, u, s])
|
|
|
|
# o1 = OptionDescription('o1', '', [o])
|
|
|
|
# o1.impl_build_cache()
|
|
|
|
#
|
|
|
|
# a = dumps(o1)
|
|
|
|
# q = loads(a)
|
|
|
|
# _diff_opt(o1, q)
|
|
|
|
# _diff_opt(o1.o, q.o)
|
|
|
|
# _diff_opt(o1.o.b, q.o.b)
|
|
|
|
# _diff_opt(o1.o.u, q.o.u)
|
|
|
|
# _diff_opt(o1.o.s, q.o.s)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def test_diff_opt_callback():
|
|
|
|
# b = BoolOption('b', '', callback=return_value)
|
|
|
|
# b2 = BoolOption('b2', '', callback=return_value, callback_params={'': ('yes',)})
|
|
|
|
# b3 = BoolOption('b3', '', callback=return_value, callback_params={'': ('yes', (b, False)), 'value': ('no',)})
|
|
|
|
# o = OptionDescription('o', '', [b, b2, b3])
|
|
|
|
# o1 = OptionDescription('o1', '', [o])
|
|
|
|
# o1.impl_build_cache()
|
|
|
|
#
|
|
|
|
# a = dumps(o1)
|
|
|
|
# q = loads(a)
|
|
|
|
# _diff_opt(o1, q)
|
|
|
|
# _diff_opt(o1.o, q.o)
|
|
|
|
# _diff_opt(o1.o.b, q.o.b)
|
|
|
|
# _diff_opt(o1.o.b2, q.o.b2)
|
|
|
|
# _diff_opt(o1.o.b3, q.o.b3)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def test_no_state_attr():
|
|
|
|
# # all _state_xxx attributes should be deleted
|
|
|
|
# b = BoolOption('b', '')
|
|
|
|
# u = UnicodeOption('u', '', requires=[{'option': b, 'expected': True, 'action': 'disabled', 'inverse': True}])
|
|
|
|
# s = SymLinkOption('s', u)
|
|
|
|
# o = OptionDescription('o', '', [b, u, s])
|
|
|
|
# o1 = OptionDescription('o1', '', [o])
|
|
|
|
#
|
|
|
|
# a = dumps(o1)
|
|
|
|
# q = loads(a)
|
|
|
|
# _no_state(q)
|
|
|
|
# _no_state(q.o)
|
|
|
|
# _no_state(q.o.b)
|
|
|
|
# _no_state(q.o.u)
|
|
|
|
# _no_state(q.o.s)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def test_state_config():
|
|
|
|
# val1 = BoolOption('val1', "")
|
|
|
|
# maconfig = OptionDescription('rootconfig', '', [val1])
|
|
|
|
# try:
|
|
|
|
# cfg = Config(maconfig, persistent=True, session_id='29090931')
|
|
|
|
# except ValueError:
|
|
|
|
# cfg = Config(maconfig, session_id='29090931')
|
|
|
|
# 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()
|
|
|
|
# try:
|
|
|
|
# delete_session('29090931')
|
|
|
|
# except ConfigError:
|
|
|
|
# pass
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def test_state_properties():
|
|
|
|
# val1 = BoolOption('val1', "")
|
|
|
|
# maconfig = OptionDescription('rootconfig', '', [val1])
|
|
|
|
# try:
|
|
|
|
# cfg = Config(maconfig, persistent=True, session_id='29090932')
|
|
|
|
# except ValueError:
|
|
|
|
# cfg = Config(maconfig, session_id='29090932')
|
|
|
|
# cfg._impl_test = True
|
|
|
|
# cfg.read_write()
|
|
|
|
# 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()
|
|
|
|
# try:
|
|
|
|
# delete_session('29090931')
|
|
|
|
# except ConfigError:
|
|
|
|
# pass
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def test_state_values():
|
|
|
|
# val1 = BoolOption('val1', "")
|
|
|
|
# maconfig = OptionDescription('rootconfig', '', [val1])
|
|
|
|
# try:
|
|
|
|
# cfg = Config(maconfig, persistent=True, session_id='29090933')
|
|
|
|
# except ValueError:
|
|
|
|
# cfg = Config(maconfig, session_id='29090933')
|
|
|
|
# cfg._impl_test = True
|
|
|
|
# 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()
|
|
|
|
# q.val1 = False
|
|
|
|
# #assert cfg.val1 is True
|
|
|
|
# assert q.val1 is False
|
|
|
|
# try:
|
|
|
|
# delete_session('29090931')
|
|
|
|
# except ConfigError:
|
|
|
|
# pass
|
|
|
|
#
|
|
|
|
#
|
|
|
|
#def test_state_values_owner():
|
|
|
|
# val1 = BoolOption('val1', "")
|
|
|
|
# maconfig = OptionDescription('rootconfig', '', [val1])
|
|
|
|
# try:
|
|
|
|
# cfg = Config(maconfig, persistent=True, session_id='29090934')
|
|
|
|
# except ValueError:
|
|
|
|
# cfg = Config(maconfig, session_id='29090934')
|
|
|
|
# cfg._impl_test = True
|
|
|
|
# owners.addowner('newowner')
|
|
|
|
# cfg.cfgimpl_get_settings().setowner(owners.newowner)
|
|
|
|
# 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()
|
|
|
|
# q.val1 = False
|
|
|
|
# nval1 = q.cfgimpl_get_description().val1
|
|
|
|
# assert q.getowner(nval1) == owners.newowner
|
|
|
|
# try:
|
|
|
|
# delete_session('29090931')
|
|
|
|
# except ConfigError:
|
|
|
|
# pass
|