impl_get_values with calculated values and no context should return []

This commit is contained in:
Emmanuel Garette 2015-11-26 19:42:33 +01:00
parent ab555966f7
commit c2a6772ec2
3 changed files with 18 additions and 9 deletions

View File

@ -35,6 +35,8 @@ def test_choiceoption_function():
assert cfg.getowner(ch) == owners.default assert cfg.getowner(ch) == owners.default
raises(ValueError, "cfg.ch='no'") raises(ValueError, "cfg.ch='no'")
assert cfg.getowner(ch) == owners.default 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(): def test_choiceoption_calc_function():

View File

@ -782,6 +782,10 @@ class Option(OnlyOption):
return DynSymLinkOption(name, self, dyn=path) return DynSymLinkOption(name, self, dyn=path)
def _validate_callback(self, callback, callback_params): def _validate_callback(self, callback, callback_params):
"""callback_params:
* None
* {'': ((option, permissive),), 'ip': ((None,), (option, permissive))
"""
if callback is None: if callback is None:
return return
default_multi = self.impl_getdefault_multi() default_multi = self.impl_getdefault_multi()

View File

@ -71,6 +71,9 @@ class ChoiceOption(Option):
#FIXME cache? but in context... #FIXME cache? but in context...
values = self._choice_values values = self._choice_values
if isinstance(values, FunctionType): if isinstance(values, FunctionType):
if context is None:
values = []
else:
values_params = self._choice_values_params values_params = self._choice_values_params
if values_params is None: if values_params is None:
values_params = {} values_params = {}