tiramisu/setting.py : properties store in cache was a reference to a list modified in validation, should copy properties in cache

This commit is contained in:
Emmanuel Garette 2014-02-20 14:27:29 +01:00
parent 8d751ecc9b
commit bf0501b1d6
2 changed files with 12 additions and 1 deletions

View File

@ -367,3 +367,14 @@ def test_reset_multiple():
setting[option].append('test') setting[option].append('test')
setting.reset(all_properties=True) setting.reset(all_properties=True)
setting.reset(all_properties=True) setting.reset(all_properties=True)
def test_properties_cached():
b1 = BoolOption("b1", "", properties=('test',))
descr = OptionDescription("opt", "", [OptionDescription("sub", "", [b1])])
c = Config(descr)
c.read_write()
setting = c.cfgimpl_get_settings()
option = c.cfgimpl_get_description().sub.b1
c._setattr('sub.b1', True, force_permissive=True)
assert str(setting[b1]) == "['test']"

View File

@ -392,7 +392,7 @@ class Settings(object):
if ntime is None: if ntime is None:
ntime = int(time()) ntime = int(time())
ntime = ntime + expires_time ntime = ntime + expires_time
self._p_.setcache(path, props, ntime) self._p_.setcache(path, copy(props), ntime)
return props return props
def append(self, propname): def append(self, propname):