diff options
-rw-r--r-- | ipalib/frontend.py | 11 | ||||
-rw-r--r-- | ipalib/tests/test_frontend.py | 9 |
2 files changed, 11 insertions, 9 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py index d53a7d4d..7d75fa17 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -106,6 +106,8 @@ class Param(plugable.ReadOnly): lock(self) def __dispatch(self, value, scalar): + if value is None: + return None if self.multivalue: if type(value) in (tuple, list): if len(value) == 0: @@ -146,7 +148,7 @@ class Param(plugable.ReadOnly): def __convert_scalar(self, value, index=None): if value is None: - raise TypeError('value cannot be None') + return None converted = self.type(value) if converted is None: raise errors.ConversionError( @@ -155,9 +157,12 @@ class Param(plugable.ReadOnly): return converted def convert(self, value): - return self.__dispatch(value, self.__convert_scalar) - + """ + Convert/coerce ``value`` to Python type for this parameter. + :param value: A proposed value for this parameter. + """ + return self.__dispatch(value, self.__convert_scalar) def __validate_scalar(self, value, index=None): if type(value) is not self.type.type: diff --git a/ipalib/tests/test_frontend.py b/ipalib/tests/test_frontend.py index d809d1cf..e6127797 100644 --- a/ipalib/tests/test_frontend.py +++ b/ipalib/tests/test_frontend.py @@ -148,8 +148,7 @@ class test_Param(ClassChecker): # Scenario 1: multivalue=False o = self.cls(name, type_) - e = raises(TypeError, o.convert, None) - assert str(e) == 'value cannot be None' + assert o.convert(None) is None for value in okay: new = o.convert(value) assert new == 7 @@ -163,10 +162,8 @@ class test_Param(ClassChecker): # Scenario 2: multivalue=True o = self.cls(name, type_, multivalue=True) - assert o.convert([]) is None - for none in [None, (7, None)]: - e = raises(TypeError, o.convert, none) - assert str(e) == 'value cannot be None' + for none in (None, tuple(), []): + assert o.convert(none) is None for value in okay: assert o.convert((value,)) == (7,) assert o.convert([value]) == (7,) |