mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
107: Some cleanup in cmd; added unit tests for cmd.default() method
This commit is contained in:
@@ -130,7 +130,8 @@ class option(plugable.Plugin):
|
|||||||
class cmd(plugable.Plugin):
|
class cmd(plugable.Plugin):
|
||||||
__public__ = frozenset((
|
__public__ = frozenset((
|
||||||
'normalize',
|
'normalize',
|
||||||
'autofill',
|
'default',
|
||||||
|
'validate',
|
||||||
'__call__',
|
'__call__',
|
||||||
'get_doc',
|
'get_doc',
|
||||||
'options',
|
'options',
|
||||||
@@ -182,11 +183,6 @@ class cmd(plugable.Plugin):
|
|||||||
def normalize(self, **kw):
|
def normalize(self, **kw):
|
||||||
return dict(self.normalize_iter(kw))
|
return dict(self.normalize_iter(kw))
|
||||||
|
|
||||||
def validate(self, **kw):
|
|
||||||
for (key, value) in kw.items():
|
|
||||||
if key in self.options:
|
|
||||||
self.options.validate(value)
|
|
||||||
|
|
||||||
def default(self, **kw):
|
def default(self, **kw):
|
||||||
d = {}
|
d = {}
|
||||||
for opt in self.options:
|
for opt in self.options:
|
||||||
@@ -198,11 +194,16 @@ class cmd(plugable.Plugin):
|
|||||||
kw.update(d)
|
kw.update(d)
|
||||||
return kw
|
return kw
|
||||||
|
|
||||||
|
def validate(self, **kw):
|
||||||
|
for (key, value) in kw.items():
|
||||||
|
if key in self.options:
|
||||||
|
self.options.validate(value)
|
||||||
|
|
||||||
def __call__(self, **kw):
|
def __call__(self, **kw):
|
||||||
(args, kw) = self.normalize(*args, **kw)
|
kw = self.normalize(**kw)
|
||||||
(args, kw) = self.autofill(*args, **kw)
|
kw = self.default(**kw)
|
||||||
self.validate(*args, **kw)
|
self.validate(**kw)
|
||||||
self.execute(*args, **kw)
|
self.execute(**kw)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -167,6 +167,13 @@ class test_cmd(ClassChecker):
|
|||||||
class my_option(public.option):
|
class my_option(public.option):
|
||||||
def normalize(self, value):
|
def normalize(self, value):
|
||||||
return super(my_option, self).normalize(value).lower()
|
return super(my_option, self).normalize(value).lower()
|
||||||
|
@public.rule
|
||||||
|
def my_rule(self, value):
|
||||||
|
if value != self.name:
|
||||||
|
return 'must equal %s' % name
|
||||||
|
def default(self, **kw):
|
||||||
|
return kw['default_from']
|
||||||
|
|
||||||
class option0(my_option):
|
class option0(my_option):
|
||||||
pass
|
pass
|
||||||
class option1(my_option):
|
class option1(my_option):
|
||||||
@@ -221,6 +228,28 @@ class test_cmd(ClassChecker):
|
|||||||
sub = self.subcls()
|
sub = self.subcls()
|
||||||
assert sub.normalize(**kw) == norm
|
assert sub.normalize(**kw) == norm
|
||||||
|
|
||||||
|
def test_default(self):
|
||||||
|
"""
|
||||||
|
Tests the `default` method.
|
||||||
|
"""
|
||||||
|
assert 'default' in self.cls.__public__ # Public
|
||||||
|
no_fill = dict(
|
||||||
|
option0='value0',
|
||||||
|
option1='value1',
|
||||||
|
whatever='hello world',
|
||||||
|
)
|
||||||
|
fill = dict(
|
||||||
|
default_from='the default',
|
||||||
|
)
|
||||||
|
filled = dict(
|
||||||
|
option0='the default',
|
||||||
|
option1='the default',
|
||||||
|
default_from='the default',
|
||||||
|
)
|
||||||
|
sub = self.subcls()
|
||||||
|
assert sub.default(**no_fill) == no_fill
|
||||||
|
assert sub.default(**fill) == filled
|
||||||
|
|
||||||
|
|
||||||
def test_obj():
|
def test_obj():
|
||||||
cls = public.obj
|
cls = public.obj
|
||||||
|
|||||||
Reference in New Issue
Block a user