diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-24 06:48:27 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-24 06:48:27 +0000 |
commit | e63c462f31bc34c5b19d243492c7644f423d55d0 (patch) | |
tree | 438b98e2a8895dcd9ffda75cf63c46041266c112 | |
parent | 4215da30ad9de6467abe2c56f7a56f73001060b3 (diff) | |
download | freeipa-e63c462f31bc34c5b19d243492c7644f423d55d0.tar.gz freeipa-e63c462f31bc34c5b19d243492c7644f423d55d0.tar.xz freeipa-e63c462f31bc34c5b19d243492c7644f423d55d0.zip |
335: If Command.__convert_scalar() is called with None, it now returns None instead of raising TypeError
-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,) |