diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-10 23:18:29 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-10 23:18:29 +0000 |
commit | c17c5efb4e30c78bb53022e86f74b718dd49e758 (patch) | |
tree | 3fc4e08320711ba701f56feb885bffd524d2455a | |
parent | 7c40226500daa4a27f4430ef7f94ec4520ab72e5 (diff) | |
download | freeipa.git-c17c5efb4e30c78bb53022e86f74b718dd49e758.tar.gz freeipa.git-c17c5efb4e30c78bb53022e86f74b718dd49e758.tar.xz freeipa.git-c17c5efb4e30c78bb53022e86f74b718dd49e758.zip |
287: Renamed Command.args_to_kw() to Command.group_args(), which now returns a tuple instead of dict; updated unit tests
-rw-r--r-- | ipalib/public.py | 48 | ||||
-rw-r--r-- | ipalib/tests/test_public.py | 26 |
2 files changed, 39 insertions, 35 deletions
diff --git a/ipalib/public.py b/ipalib/public.py index 4c0255ef..84d321be 100644 --- a/ipalib/public.py +++ b/ipalib/public.py @@ -350,34 +350,38 @@ class Command(plugable.Plugin): for option in sorted(self.options(), key=get_key): yield option - def args_to_kw(self, *args): - Args = tuple(self.args()) - if len(Args) == 0 and len(args) > 0: - raise errors.ArgumentError(self, 'takes no arguments') - if len(args) > len(Args) and not Args[-1].multivalue: - if len(Args) == 1: - error = 'takes at most 1 argument' - else: - error = 'takes at most %d arguments' % len(Args) - raise errors.ArgumentError(self, error) - MinArgs = sum(int(A.required) for A in Args) - if len(args) < MinArgs: - if MinArgs == 1: + def group_args(self, *values): + args = tuple(self.args()) + if len(args) == 0: + if len(values) > 0: + raise errors.ArgumentError(self, 'takes no arguments') + else: + return tuple() + if len(values) > len(args) and not args[-1].multivalue: + if len(args) == 1: + error = 'takes at most 1 argument' + else: + error = 'takes at most %d arguments' % len(args) + raise errors.ArgumentError(self, error) + min_args = sum(int(a.required) for a in args) + if len(values) < min_args: + if min_args == 1: error = 'takes at least 1 argument' else: - error = 'takes at least %d arguments' % MinArgs + error = 'takes at least %d arguments' % min_args raise errors.ArgumentError(self, error) - return dict(self.__args_to_kw_iter(args)) + return tuple(self.__group_args_iter(values, args)) - def __args_to_kw_iter(self, args): - for (i, Arg) in enumerate(self.args()): - if len(args) > i: - if Arg.multivalue: - yield (Arg.name, args[i:]) + def __group_args_iter(self, values, args): + for (i, arg) in enumerate(args): + if len(values) > i: + if arg.multivalue: + yield values[i:] else: - yield (Arg.name, args[i]) + yield values[i] else: - assert not Arg.required + assert not arg.required + yield None class Object(plugable.Plugin): diff --git a/ipalib/tests/test_public.py b/ipalib/tests/test_public.py index 8bff5a19..aac962b5 100644 --- a/ipalib/tests/test_public.py +++ b/ipalib/tests/test_public.py @@ -550,38 +550,38 @@ class test_Command(ClassChecker): """ assert 'execute' in self.cls.__public__ # Public - def test_args_to_kw(self): + def test_group_args(self): o = self.__get_instance(args=('one', 'two?')) - assert o.args_to_kw(1) == dict(one=1) - assert o.args_to_kw(1, 2) == dict(one=1, two=2) + assert o.group_args(1) == (1, None) + assert o.group_args(1, 2) == (1, 2) o = self.__get_instance(args=('one', 'two*')) - assert o.args_to_kw(1) == dict(one=1) - assert o.args_to_kw(1, 2) == dict(one=1, two=(2,)) - assert o.args_to_kw(1, 2, 3) == dict(one=1, two=(2, 3)) + assert o.group_args(1) == (1, None) + assert o.group_args(1, 2) == (1, (2,)) + assert o.group_args(1, 2, 3) == (1, (2, 3)) o = self.__get_instance(args=('one', 'two+')) - assert o.args_to_kw(1, 2) == dict(one=1, two=(2,)) - assert o.args_to_kw(1, 2, 3) == dict(one=1, two=(2, 3)) + assert o.group_args(1, 2) == (1, (2,)) + assert o.group_args(1, 2, 3) == (1, (2, 3)) o = self.__get_instance() - e = raises(errors.ArgumentError, o.args_to_kw, 1) + e = raises(errors.ArgumentError, o.group_args, 1) assert str(e) == 'example takes no arguments' o = self.__get_instance(args=('one?',)) - e = raises(errors.ArgumentError, o.args_to_kw, 1, 2) + e = raises(errors.ArgumentError, o.group_args, 1, 2) assert str(e) == 'example takes at most 1 argument' o = self.__get_instance(args=('one', 'two?')) - e = raises(errors.ArgumentError, o.args_to_kw, 1, 2, 3) + e = raises(errors.ArgumentError, o.group_args, 1, 2, 3) assert str(e) == 'example takes at most 2 arguments' o = self.__get_instance(args=('one', 'two?')) - e = raises(errors.ArgumentError, o.args_to_kw) + e = raises(errors.ArgumentError, o.group_args) assert str(e) == 'example takes at least 1 argument' o = self.__get_instance(args=('one', 'two', 'three?')) - e = raises(errors.ArgumentError, o.args_to_kw, 1) + e = raises(errors.ArgumentError, o.group_args, 1) assert str(e) == 'example takes at least 2 arguments' |