diff options
author | Lars Wirzenius <liw@liw.fi> | 2017-04-30 11:16:02 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2017-04-30 11:16:02 +0300 |
commit | 7df465e3d95b901493fb146cf92586138da496c6 (patch) | |
tree | 593e94ef7b70906c16d539527a73f12266c0a0bd /yarnutils | |
parent | 2b9b9621913940858fa3c2ccb2e65e16900defbd (diff) | |
download | cmdtest-7df465e3d95b901493fb146cf92586138da496c6.tar.gz |
Add Variables.append()
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) |