mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2026-09-03 20:52:56 -05:00
350: If Param default_from kwarg is callable but not a DefaltFrom instances, the instance is created implicity
This commit is contained in:
+6
-3
@@ -125,7 +125,7 @@ class Param(plugable.ReadOnly):
|
||||
A parameter accepted by a `Command`.
|
||||
"""
|
||||
__nones = (None, '', tuple(), [])
|
||||
__default = dict(
|
||||
__defaults = dict(
|
||||
doc='',
|
||||
required=True,
|
||||
multivalue=False,
|
||||
@@ -140,7 +140,7 @@ class Param(plugable.ReadOnly):
|
||||
if not ('required' in override or 'multivalue' in override):
|
||||
(name, kw_from_spec) = parse_param_spec(name)
|
||||
override.update(kw_from_spec)
|
||||
kw = dict(self.__default)
|
||||
kw = dict(self.__defaults)
|
||||
if not set(kw).issuperset(override):
|
||||
extra = sorted(set(override) - set(kw))
|
||||
raise TypeError(
|
||||
@@ -154,7 +154,10 @@ class Param(plugable.ReadOnly):
|
||||
self.required = self.__check_type(bool, 'required')
|
||||
self.multivalue = self.__check_type(bool, 'multivalue')
|
||||
self.default = kw['default']
|
||||
self.default_from = self.__check_type(DefaultFrom, 'default_from',
|
||||
df = kw['default_from']
|
||||
if callable(df) and not isinstance(df, DefaultFrom):
|
||||
df = DefaultFrom(df)
|
||||
self.default_from = check_type(df, DefaultFrom, 'default_from',
|
||||
allow_none=True
|
||||
)
|
||||
self.__normalize = kw['normalize']
|
||||
|
||||
@@ -168,7 +168,12 @@ class test_Param(ClassChecker):
|
||||
df = frontend.DefaultFrom(lambda f, l: f + l,
|
||||
'first', 'last',
|
||||
)
|
||||
assert self.cls(name, default_from=df).default_from == df
|
||||
lam = lambda first, last: first + last
|
||||
for cb in (df, lam):
|
||||
o = self.cls(name, default_from=cb)
|
||||
assert type(o.default_from) is frontend.DefaultFrom
|
||||
assert o.default_from.keys == ('first', 'last')
|
||||
assert o.default_from.callback('butt', 'erfly') == 'butterfly'
|
||||
rules = (lambda whatever: 'Not okay!',)
|
||||
o = self.cls(name, rules=rules)
|
||||
assert o.rules is rules
|
||||
|
||||
Reference in New Issue
Block a user