impl_get_values with calculated values and no context should return []
This commit is contained in:
parent
ab555966f7
commit
c2a6772ec2
@ -35,6 +35,8 @@ def test_choiceoption_function():
|
||||
assert cfg.getowner(ch) == owners.default
|
||||
raises(ValueError, "cfg.ch='no'")
|
||||
assert cfg.getowner(ch) == owners.default
|
||||
assert ch.impl_get_values(None) == []
|
||||
assert ch.impl_get_values(cfg) == ['val1', 'val2']
|
||||
|
||||
|
||||
def test_choiceoption_calc_function():
|
||||
|
@ -782,6 +782,10 @@ class Option(OnlyOption):
|
||||
return DynSymLinkOption(name, self, dyn=path)
|
||||
|
||||
def _validate_callback(self, callback, callback_params):
|
||||
"""callback_params:
|
||||
* None
|
||||
* {'': ((option, permissive),), 'ip': ((None,), (option, permissive))
|
||||
"""
|
||||
if callback is None:
|
||||
return
|
||||
default_multi = self.impl_getdefault_multi()
|
||||
|
@ -71,15 +71,18 @@ class ChoiceOption(Option):
|
||||
#FIXME cache? but in context...
|
||||
values = self._choice_values
|
||||
if isinstance(values, FunctionType):
|
||||
values_params = self._choice_values_params
|
||||
if values_params is None:
|
||||
values_params = {}
|
||||
values = carry_out_calculation(self, context=context,
|
||||
callback=values,
|
||||
callback_params=values_params)
|
||||
if not isinstance(values, list): # pragma: optional cover
|
||||
raise ConfigError(_('calculated values for {0} is not a list'
|
||||
'').format(self.impl_getname()))
|
||||
if context is None:
|
||||
values = []
|
||||
else:
|
||||
values_params = self._choice_values_params
|
||||
if values_params is None:
|
||||
values_params = {}
|
||||
values = carry_out_calculation(self, context=context,
|
||||
callback=values,
|
||||
callback_params=values_params)
|
||||
if not isinstance(values, list): # pragma: optional cover
|
||||
raise ConfigError(_('calculated values for {0} is not a list'
|
||||
'').format(self.impl_getname()))
|
||||
return values
|
||||
|
||||
def _validate(self, value, context=undefined):
|
||||
|
Loading…
Reference in New Issue
Block a user