tiramisu/setting.py : properties store in cache was a reference to a list modified...
authorEmmanuel Garette <egarette@cadoles.com>
Thu, 20 Feb 2014 13:27:29 +0000 (14:27 +0100)
committerEmmanuel Garette <egarette@cadoles.com>
Thu, 20 Feb 2014 13:27:29 +0000 (14:27 +0100)
test/test_option_setting.py
tiramisu/setting.py

index ed5f7d7..94755e8 100644 (file)
@@ -367,3 +367,14 @@ def test_reset_multiple():
     setting[option].append('test')
     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']"
index 38cf7b5..e2ddb7d 100644 (file)
@@ -392,7 +392,7 @@ class Settings(object):
                     if  ntime is None:
                         ntime = int(time())
                     ntime = ntime + expires_time
-                self._p_.setcache(path, props, ntime)
+                self._p_.setcache(path, copy(props), ntime)
         return props
 
     def append(self, propname):