New Param: added unit tests for TypeError cases in DefaultFrom.__init__()

This commit is contained in:
Jason Gerard DeRose 2008-12-18 02:08:41 -07:00
parent cb2f294cfe
commit 4d1681176a
3 changed files with 15 additions and 3 deletions

View File

@ -29,7 +29,7 @@ NULLS = (None, '', u'', tuple(), [])
TYPE_ERROR = '%s: need a %r; got %r (which is a %r)'
CALLABLE_ERROR = '%s: need a callable; got %r (a %r)'
CALLABLE_ERROR = '%s: need a callable; got %r (which is a %r)'
# Used for a tab (or indentation level) when formatting for CLI:

View File

@ -103,7 +103,9 @@ class DefaultFrom(ReadOnly):
:param keys: Optional keys used for source values.
"""
if not callable(callback):
raise TypeError('callback must be callable; got %r' % callback)
raise TypeError(
CALLABLE_ERROR % ('callback', callback, type(callback))
)
self.callback = callback
if len(keys) == 0:
fc = callback.func_code
@ -112,7 +114,9 @@ class DefaultFrom(ReadOnly):
self.keys = keys
for key in self.keys:
if type(key) is not str:
raise_TypeError(key, str, 'keys')
raise TypeError(
TYPE_ERROR % ('keys', str, key, type(key))
)
lock(self)
def __call__(self, **kw):

View File

@ -48,6 +48,14 @@ class test_DefaultFrom(ClassChecker):
o = self.cls(lam)
assert read_only(o, 'keys') == ('first', 'last')
# Test that TypeError is raised when callback isn't callable:
e = raises(TypeError, self.cls, 'whatever')
assert str(e) == CALLABLE_ERROR % ('callback', 'whatever', str)
# Test that TypeError is raised when a key isn't an str:
e = raises(TypeError, self.cls, callback, 'givenname', 17)
assert str(e) == TYPE_ERROR % ('keys', str, 17, int)
def test_call(self):
"""
Test the `ipalib.parameter.DefaultFrom.__call__` method.