diff options
Diffstat (limited to 'yarnutils')
-rw-r--r-- | yarnutils/vars.py | 9 | ||||
-rw-r--r-- | yarnutils/vars_tests.py | 18 |
2 files changed, 27 insertions, 0 deletions
diff --git a/yarnutils/vars.py b/yarnutils/vars.py index 9349a2d..b221ba6 100644 --- a/yarnutils/vars.py +++ b/yarnutils/vars.py @@ -51,3 +51,12 @@ class Variables(object): def save(self): self._save(self._dict) + + def append(self, key, value): + if key in self._dict: + if not isinstance(self[key], list): + raise Exception('Value for {} is not a list'.format(key)) + if key not in self._dict: + self._dict[key] = [] + self._dict[key].append(value) + self.save() diff --git a/yarnutils/vars_tests.py b/yarnutils/vars_tests.py index 821d2a5..b42a1eb 100644 --- a/yarnutils/vars_tests.py +++ b/yarnutils/vars_tests.py @@ -60,3 +60,21 @@ class VariablesTests(unittest.TestCase): vars2 = yarnutils.Variables(self.tempdir) self.assertEqual(vars1['foo'], vars2['foo']) self.assertEqual(vars2['foo'], [0]) + + def test_appends_to_unset_key(self): + vars = yarnutils.Variables(self.tempdir) + vars.append('foo', 0) + self.assertEqual(vars['foo'], [0]) + + def test_append_saves(self): + vars1 = yarnutils.Variables(self.tempdir) + vars1.append('foo', 0) + vars2 = yarnutils.Variables(self.tempdir) + self.assertEqual(vars1['foo'], vars2['foo']) + self.assertEqual(vars2['foo'], [0]) + + def test_append_gives_error_if_appending_to_nonlist_value(self): + vars = yarnutils.Variables(self.tempdir) + vars['foo'] = 0 + with self.assertRaises(Exception): + vars.append('foo', 0) |