From 7df465e3d95b901493fb146cf92586138da496c6 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 30 Apr 2017 11:16:02 +0300 Subject: Add Variables.append() --- fail-tests/fail.stdout-diff | 2 +- yarnutils/vars.py | 9 +++++++++ yarnutils/vars_tests.py | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) 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) -- cgit v1.2.1