mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
287: Renamed Command.args_to_kw() to Command.group_args(), which now returns a tuple instead of dict; updated unit tests
This commit is contained in:
parent
7c40226500
commit
c17c5efb4e
@ -350,34 +350,38 @@ class Command(plugable.Plugin):
|
|||||||
for option in sorted(self.options(), key=get_key):
|
for option in sorted(self.options(), key=get_key):
|
||||||
yield option
|
yield option
|
||||||
|
|
||||||
def args_to_kw(self, *args):
|
def group_args(self, *values):
|
||||||
Args = tuple(self.args())
|
args = tuple(self.args())
|
||||||
if len(Args) == 0 and len(args) > 0:
|
if len(args) == 0:
|
||||||
raise errors.ArgumentError(self, 'takes no arguments')
|
if len(values) > 0:
|
||||||
if len(args) > len(Args) and not Args[-1].multivalue:
|
raise errors.ArgumentError(self, 'takes no arguments')
|
||||||
if len(Args) == 1:
|
else:
|
||||||
error = 'takes at most 1 argument'
|
return tuple()
|
||||||
else:
|
if len(values) > len(args) and not args[-1].multivalue:
|
||||||
error = 'takes at most %d arguments' % len(Args)
|
if len(args) == 1:
|
||||||
raise errors.ArgumentError(self, error)
|
error = 'takes at most 1 argument'
|
||||||
MinArgs = sum(int(A.required) for A in Args)
|
else:
|
||||||
if len(args) < MinArgs:
|
error = 'takes at most %d arguments' % len(args)
|
||||||
if MinArgs == 1:
|
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'
|
error = 'takes at least 1 argument'
|
||||||
else:
|
else:
|
||||||
error = 'takes at least %d arguments' % MinArgs
|
error = 'takes at least %d arguments' % min_args
|
||||||
raise errors.ArgumentError(self, error)
|
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):
|
def __group_args_iter(self, values, args):
|
||||||
for (i, Arg) in enumerate(self.args()):
|
for (i, arg) in enumerate(args):
|
||||||
if len(args) > i:
|
if len(values) > i:
|
||||||
if Arg.multivalue:
|
if arg.multivalue:
|
||||||
yield (Arg.name, args[i:])
|
yield values[i:]
|
||||||
else:
|
else:
|
||||||
yield (Arg.name, args[i])
|
yield values[i]
|
||||||
else:
|
else:
|
||||||
assert not Arg.required
|
assert not arg.required
|
||||||
|
yield None
|
||||||
|
|
||||||
|
|
||||||
class Object(plugable.Plugin):
|
class Object(plugable.Plugin):
|
||||||
|
@ -550,38 +550,38 @@ class test_Command(ClassChecker):
|
|||||||
"""
|
"""
|
||||||
assert 'execute' in self.cls.__public__ # Public
|
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?'))
|
o = self.__get_instance(args=('one', 'two?'))
|
||||||
assert o.args_to_kw(1) == dict(one=1)
|
assert o.group_args(1) == (1, None)
|
||||||
assert o.args_to_kw(1, 2) == dict(one=1, two=2)
|
assert o.group_args(1, 2) == (1, 2)
|
||||||
|
|
||||||
o = self.__get_instance(args=('one', 'two*'))
|
o = self.__get_instance(args=('one', 'two*'))
|
||||||
assert o.args_to_kw(1) == dict(one=1)
|
assert o.group_args(1) == (1, None)
|
||||||
assert o.args_to_kw(1, 2) == dict(one=1, two=(2,))
|
assert o.group_args(1, 2) == (1, (2,))
|
||||||
assert o.args_to_kw(1, 2, 3) == dict(one=1, two=(2, 3))
|
assert o.group_args(1, 2, 3) == (1, (2, 3))
|
||||||
|
|
||||||
o = self.__get_instance(args=('one', 'two+'))
|
o = self.__get_instance(args=('one', 'two+'))
|
||||||
assert o.args_to_kw(1, 2) == dict(one=1, two=(2,))
|
assert o.group_args(1, 2) == (1, (2,))
|
||||||
assert o.args_to_kw(1, 2, 3) == dict(one=1, two=(2, 3))
|
assert o.group_args(1, 2, 3) == (1, (2, 3))
|
||||||
|
|
||||||
o = self.__get_instance()
|
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'
|
assert str(e) == 'example takes no arguments'
|
||||||
|
|
||||||
o = self.__get_instance(args=('one?',))
|
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'
|
assert str(e) == 'example takes at most 1 argument'
|
||||||
|
|
||||||
o = self.__get_instance(args=('one', 'two?'))
|
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'
|
assert str(e) == 'example takes at most 2 arguments'
|
||||||
|
|
||||||
o = self.__get_instance(args=('one', 'two?'))
|
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'
|
assert str(e) == 'example takes at least 1 argument'
|
||||||
|
|
||||||
o = self.__get_instance(args=('one', 'two', 'three?'))
|
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'
|
assert str(e) == 'example takes at least 2 arguments'
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user