summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-04-30 11:16:02 +0300
committerLars Wirzenius <liw@liw.fi>2017-04-30 11:16:02 +0300
commit7df465e3d95b901493fb146cf92586138da496c6 (patch)
tree593e94ef7b70906c16d539527a73f12266c0a0bd
parent2b9b9621913940858fa3c2ccb2e65e16900defbd (diff)
downloadcmdtest-7df465e3d95b901493fb146cf92586138da496c6.tar.gz
Add Variables.append()
-rw-r--r--fail-tests/fail.stdout-diff2
-rw-r--r--yarnutils/vars.py9
-rw-r--r--yarnutils/vars_tests.py18
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)