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 | |
parent | 2b9b9621913940858fa3c2ccb2e65e16900defbd (diff) | |
download | cmdtest-7df465e3d95b901493fb146cf92586138da496c6.tar.gz |
Add Variables.append()
-rw-r--r-- | fail-tests/fail.stdout-diff | 2 | ||||
-rw-r--r-- | yarnutils/vars.py | 9 | ||||
-rw-r--r-- | yarnutils/vars_tests.py | 18 |
3 files changed, 28 insertions, 1 deletions
diff --git a/fail-tests/fail.stdout-diff b/fail-tests/fail.stdout-diff index 4f43f5c..47ac588 100644 --- a/fail-tests/fail.stdout-diff +++ b/fail-tests/fail.stdout-diff @@ -1,4 +1,4 @@ --- /dev/null 2017-04-20 17:06:09.455944599 +0300 -+++ fail-tests/fail.stdout-actual 2017-04-30 11:10:57.309026170 +0300 ++++ fail-tests/fail.stdout-actual 2017-04-30 11:15:56.619905930 +0300 @@ -0,0 +1 @@ +this is not empty output to make test fail 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) |