# HG changeset patch # User Thomas Arendsen Hein # Date 1151354688 -7200 # Node ID 18cf95ad3666585dc7b9340a692c1b9ce21344ca # Parent b73552a00b209c8fcd71fd23fb990c5d05910010 Allow using default values with ui.configlist, too, and add a test for this. diff --git a/mercurial/ui.py b/mercurial/ui.py --- a/mercurial/ui.py +++ b/mercurial/ui.py @@ -99,10 +99,10 @@ class ui(object): """Return a list of comma/space separated strings""" result = self.config(section, name) if result is None: - return [] - else: - return result.replace(",", " ").split() - + result = default or [] + if isinstance(result, basestring): + result = result.replace(",", " ").split() + return result def configbool(self, section, name, default=False): if self.overlay.has_key((section, name)): diff --git a/tests/test-ui-config b/tests/test-ui-config new file mode 100755 --- /dev/null +++ b/tests/test-ui-config @@ -0,0 +1,47 @@ +#!/usr/bin/env python + +from mercurial import ui + +testui = ui.ui() +testui.updateopts(config=[ + 'values.string=string value', + 'values.bool1=true', + 'values.bool2=false', + 'lists.list1=foo', + 'lists.list2=foo bar baz', + 'lists.list3=alice, bob', + 'lists.list4=foo bar baz alice, bob', +]) + +print repr(testui.configitems('values')) +print repr(testui.configitems('lists')) +print "---" +print repr(testui.config('values', 'string')) +print repr(testui.config('values', 'bool1')) +print repr(testui.config('values', 'bool2')) +print repr(testui.config('values', 'unknown')) +print "---" +try: + print repr(testui.configbool('values', 'string')) +except ValueError, why: + print why +print repr(testui.configbool('values', 'bool1')) +print repr(testui.configbool('values', 'bool2')) +print repr(testui.configbool('values', 'bool2', True)) +print repr(testui.configbool('values', 'unknown')) +print repr(testui.configbool('values', 'unknown', True)) +print "---" +print repr(testui.configlist('lists', 'list1')) +print repr(testui.configlist('lists', 'list2')) +print repr(testui.configlist('lists', 'list3')) +print repr(testui.configlist('lists', 'list4')) +print repr(testui.configlist('lists', 'list4', ['foo'])) +print repr(testui.configlist('lists', 'unknown')) +print repr(testui.configlist('lists', 'unknown', '')) +print repr(testui.configlist('lists', 'unknown', 'foo')) +print repr(testui.configlist('lists', 'unknown', ['foo'])) +print repr(testui.configlist('lists', 'unknown', 'foo bar')) +print repr(testui.configlist('lists', 'unknown', 'foo, bar')) +print repr(testui.configlist('lists', 'unknown', ['foo bar'])) +print repr(testui.configlist('lists', 'unknown', ['foo', 'bar'])) +print "---" diff --git a/tests/test-ui-config.out b/tests/test-ui-config.out new file mode 100644 --- /dev/null +++ b/tests/test-ui-config.out @@ -0,0 +1,29 @@ +[('bool1', 'true'), ('bool2', 'false'), ('string', 'string value')] +[('list1', 'foo'), ('list2', 'foo bar baz'), ('list3', 'alice, bob'), ('list4', 'foo bar baz alice, bob')] +--- +'string value' +'true' +'false' +None +--- +Not a boolean: string value +True +False +False +False +True +--- +['foo'] +['foo', 'bar', 'baz'] +['alice', 'bob'] +['foo', 'bar', 'baz', 'alice', 'bob'] +['foo', 'bar', 'baz', 'alice', 'bob'] +[] +[] +['foo'] +['foo'] +['foo', 'bar'] +['foo', 'bar'] +['foo bar'] +['foo', 'bar'] +---