mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
300: Added Command.max_args instance attribute; added corresponding unit tests
This commit is contained in:
@@ -229,12 +229,15 @@ class Command(plugable.Plugin):
|
|||||||
'options',
|
'options',
|
||||||
'group_args',
|
'group_args',
|
||||||
))
|
))
|
||||||
__Option = None
|
|
||||||
takes_options = tuple()
|
takes_options = tuple()
|
||||||
takes_args = tuple()
|
takes_args = tuple()
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.args = plugable.NameSpace(self.__check_args(), sort=False)
|
self.args = plugable.NameSpace(self.__check_args(), sort=False)
|
||||||
|
if len(self.args) == 0 or not self.args[-1].multivalue:
|
||||||
|
self.max_args = len(self.args)
|
||||||
|
else:
|
||||||
|
self.max_args = None
|
||||||
self.options = plugable.NameSpace(self.__check_options(), sort=False)
|
self.options = plugable.NameSpace(self.__check_options(), sort=False)
|
||||||
self.params = plugable.NameSpace(
|
self.params = plugable.NameSpace(
|
||||||
tuple(self.args()) + tuple(self.options()), sort=False
|
tuple(self.args()) + tuple(self.options()), sort=False
|
||||||
|
|||||||
@@ -371,11 +371,6 @@ class test_Command(ClassChecker):
|
|||||||
)
|
)
|
||||||
return example
|
return example
|
||||||
|
|
||||||
def test_class(self):
|
|
||||||
assert self.cls.__bases__ == (plugable.Plugin,)
|
|
||||||
assert self.cls.takes_options == tuple()
|
|
||||||
assert self.cls.takes_args == tuple()
|
|
||||||
|
|
||||||
def get_instance(self, args=tuple(), options=tuple()):
|
def get_instance(self, args=tuple(), options=tuple()):
|
||||||
"""
|
"""
|
||||||
Helper method used to test args and options.
|
Helper method used to test args and options.
|
||||||
@@ -385,6 +380,11 @@ class test_Command(ClassChecker):
|
|||||||
takes_options = options
|
takes_options = options
|
||||||
return example()
|
return example()
|
||||||
|
|
||||||
|
def test_class(self):
|
||||||
|
assert self.cls.__bases__ == (plugable.Plugin,)
|
||||||
|
assert self.cls.takes_options == tuple()
|
||||||
|
assert self.cls.takes_args == tuple()
|
||||||
|
|
||||||
def test_get_args(self):
|
def test_get_args(self):
|
||||||
"""
|
"""
|
||||||
Tests the `public.Command.get_args` method.
|
Tests the `public.Command.get_args` method.
|
||||||
@@ -436,6 +436,21 @@ class test_Command(ClassChecker):
|
|||||||
e = raises(ValueError, self.get_instance, args=('arg1+', 'arg2'))
|
e = raises(ValueError, self.get_instance, args=('arg1+', 'arg2'))
|
||||||
assert str(e) == 'arg2: only final argument can be multivalue'
|
assert str(e) == 'arg2: only final argument can be multivalue'
|
||||||
|
|
||||||
|
def test_max_args(self):
|
||||||
|
"""
|
||||||
|
Test the ``Command.max_args`` instance attribute.
|
||||||
|
"""
|
||||||
|
o = self.get_instance()
|
||||||
|
assert o.max_args == 0
|
||||||
|
o = self.get_instance(args=('one?',))
|
||||||
|
assert o.max_args == 1
|
||||||
|
o = self.get_instance(args=('one', 'two?'))
|
||||||
|
assert o.max_args == 2
|
||||||
|
o = self.get_instance(args=('one', 'multi+',))
|
||||||
|
assert o.max_args is None
|
||||||
|
o = self.get_instance(args=('one', 'multi*',))
|
||||||
|
assert o.max_args is None
|
||||||
|
|
||||||
def test_options(self):
|
def test_options(self):
|
||||||
"""
|
"""
|
||||||
Tests the ``Command.options`` instance attribute.
|
Tests the ``Command.options`` instance attribute.
|
||||||
|
|||||||
Reference in New Issue
Block a user