mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
301: Command.args_to_kw() now raises ArgumentError if more args than max_args are given
This commit is contained in:
parent
e0b900894f
commit
f29c827d06
@ -388,6 +388,14 @@ class Command(plugable.Plugin):
|
||||
yield None
|
||||
|
||||
def args_to_kw(self, *values):
|
||||
if self.max_args is not None and len(values) > self.max_args:
|
||||
if self.max_args == 0:
|
||||
raise errors.ArgumentError(self, 'takes no arguments')
|
||||
if self.max_args == 1:
|
||||
raise errors.ArgumentError(self, 'takes at most 1 argument')
|
||||
raise errors.ArgumentError(self,
|
||||
'takes at most %d arguments' % len(self.args)
|
||||
)
|
||||
return dict(self.__args_to_kw_iter(values))
|
||||
|
||||
def __args_to_kw_iter(self, values):
|
||||
|
@ -600,6 +600,9 @@ class test_Command(ClassChecker):
|
||||
assert str(e) == 'example takes at least 2 arguments'
|
||||
|
||||
def test_args_to_kw(self):
|
||||
"""
|
||||
Test the `public.Command.args_to_kw` method.
|
||||
"""
|
||||
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)
|
||||
@ -614,9 +617,21 @@ class test_Command(ClassChecker):
|
||||
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))
|
||||
|
||||
o = self.get_instance()
|
||||
e = raises(errors.ArgumentError, o.args_to_kw, 1)
|
||||
assert str(e) == 'example takes no arguments'
|
||||
|
||||
o = self.get_instance(args=('one?',))
|
||||
e = raises(errors.ArgumentError, o.args_to_kw, 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)
|
||||
assert str(e) == 'example takes at most 2 arguments'
|
||||
|
||||
def test_kw_to_args(self):
|
||||
"""
|
||||
Tests the `public.Command.kw_to_arg` method.
|
||||
Tests the `public.Command.kw_to_args` method.
|
||||
"""
|
||||
o = self.get_instance(args=('one', 'two?'))
|
||||
assert o.kw_to_args() == (None, None)
|
||||
@ -627,7 +642,6 @@ class test_Command(ClassChecker):
|
||||
('One', 'Two')
|
||||
|
||||
|
||||
|
||||
class test_Object(ClassChecker):
|
||||
"""
|
||||
Tests the `public.Object` class.
|
||||
|
Loading…
Reference in New Issue
Block a user