summaryrefslogtreecommitdiff
path: root/cliapp/settings_tests.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-06-11 20:34:10 +0100
committerLars Wirzenius <liw@liw.fi>2011-06-11 20:34:10 +0100
commit54c14378f5522720ec06e9196e2b06e67b81377e (patch)
tree0bf7a98ba08e4f2be210c2e47b6491e8d32b718e /cliapp/settings_tests.py
parent9a0f44e7a57178105ebd84b6a0d057b1a2443925 (diff)
downloadcliapp-54c14378f5522720ec06e9196e2b06e67b81377e.tar.gz
Fix string lists to have a sensible default value handling.
Previously, if you set a default value for a string list setting, the user's settings were appended to it. Now the default is used if the user does not specify the setting at all (same as before), but ignored if the user does specify. Thus, if the default for foo was ['bar'], then --foo=pink now results in ['pink'], rather than ['bar', 'pink'].
Diffstat (limited to 'cliapp/settings_tests.py')
-rw-r--r--cliapp/settings_tests.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/cliapp/settings_tests.py b/cliapp/settings_tests.py
index 78be104..05fa7a6 100644
--- a/cliapp/settings_tests.py
+++ b/cliapp/settings_tests.py
@@ -81,6 +81,16 @@ class SettingsTests(unittest.TestCase):
self.settings.parse_args(['--foo=foo', '--foo', 'bar'])
self.assertEqual(self.settings['foo'], ['foo', 'bar'])
+ def test_string_list_uses_nonempty_default_if_given(self):
+ self.settings.add_string_list_setting(['foo'], '', default=['bar'])
+ self.settings.parse_args([])
+ self.assertEqual(self.settings['foo'], ['bar'])
+
+ def test_string_list_uses_ignores_default_if_user_provides_values(self):
+ self.settings.add_string_list_setting(['foo'], '', default=['bar'])
+ self.settings.parse_args(['--foo=pink', '--foo=punk'])
+ self.assertEqual(self.settings['foo'], ['pink', 'punk'])
+
def test_adds_choice_setting(self):
self.settings.add_choice_setting(['foo'], ['foo', 'bar'], 'foo help')
self.assert_('foo' in self.settings)