mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
109: Cleanups in cmd; added unit tests for cmd.validate()
This commit is contained in:
@@ -46,13 +46,12 @@ class option(plugable.Plugin):
|
||||
|
||||
__public__ = frozenset((
|
||||
'normalize',
|
||||
'validate',
|
||||
'default',
|
||||
'validate',
|
||||
'required',
|
||||
'type',
|
||||
))
|
||||
__rules = None
|
||||
|
||||
type = unicode
|
||||
required = False
|
||||
|
||||
@@ -94,10 +93,11 @@ class option(plugable.Plugin):
|
||||
tuple is lazily initialized the first time the property is accessed.
|
||||
"""
|
||||
if self.__rules is None:
|
||||
self.__rules = tuple(sorted(
|
||||
rules = tuple(sorted(
|
||||
self.__rules_iter(),
|
||||
key=lambda f: getattr(f, '__name__'),
|
||||
))
|
||||
object.__setattr__(self, '_option__rules', rules)
|
||||
return self.__rules
|
||||
rules = property(__get_rules)
|
||||
|
||||
@@ -132,6 +132,7 @@ class cmd(plugable.Plugin):
|
||||
'normalize',
|
||||
'default',
|
||||
'validate',
|
||||
'execute',
|
||||
'__call__',
|
||||
'get_doc',
|
||||
'options',
|
||||
@@ -196,7 +197,18 @@ class cmd(plugable.Plugin):
|
||||
def validate(self, **kw):
|
||||
for (key, value) in kw.items():
|
||||
if key in self.options:
|
||||
self.options.validate(value)
|
||||
self.options[key].validate(value)
|
||||
|
||||
def execute(self, **kw)
|
||||
pass
|
||||
|
||||
def print_n_call(self, method, kw):
|
||||
print '%s.%s(%s)' % (
|
||||
self.name,
|
||||
method,
|
||||
' '.join('%s=%r' % (k, v) for (k, v) in kw.items()),
|
||||
)
|
||||
getattr(self, method)(**kw)
|
||||
|
||||
def __call__(self, **kw):
|
||||
kw = self.normalize(**kw)
|
||||
|
||||
@@ -170,7 +170,7 @@ class test_cmd(ClassChecker):
|
||||
@public.rule
|
||||
def my_rule(self, value):
|
||||
if value != self.name:
|
||||
return 'must equal %s' % name
|
||||
return 'must equal %r' % self.name
|
||||
def default(self, **kw):
|
||||
return kw['default_from']
|
||||
|
||||
@@ -249,6 +249,24 @@ class test_cmd(ClassChecker):
|
||||
assert sub.default(**no_fill) == {}
|
||||
assert sub.default(**fill) == default
|
||||
|
||||
def test_validate(self):
|
||||
"""
|
||||
Tests the `validate` method.
|
||||
"""
|
||||
assert 'validate' in self.cls.__public__ # Public
|
||||
sub = self.subcls()
|
||||
for name in ('option0', 'option1'):
|
||||
okay = {
|
||||
name: name,
|
||||
'another_option': 'some value',
|
||||
}
|
||||
fail = {
|
||||
name: 'whatever',
|
||||
'another_option': 'some value',
|
||||
}
|
||||
sub.validate(**okay)
|
||||
raises(errors.RuleError, sub.validate, **fail)
|
||||
|
||||
|
||||
def test_obj():
|
||||
cls = public.obj
|
||||
|
||||
Reference in New Issue
Block a user