You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.3 KiB
Python
67 lines
2.3 KiB
Python
"""
|
|
Test my automatically generate exceptions
|
|
"""
|
|
from joblib import my_exceptions
|
|
|
|
|
|
class CustomException(Exception):
|
|
def __init__(self, a, b, c, d):
|
|
self.a, self.b, self.c, self.d = a, b, c, d
|
|
|
|
|
|
class CustomException2(Exception):
|
|
"""A custom exception with a .args attribute
|
|
|
|
Just to check that the JoblibException created from it
|
|
has it args set correctly
|
|
"""
|
|
def __init__(self, a, *args):
|
|
self.a = a
|
|
self.args = args
|
|
|
|
|
|
def test_inheritance():
|
|
assert isinstance(my_exceptions.JoblibNameError(), NameError)
|
|
assert isinstance(my_exceptions.JoblibNameError(),
|
|
my_exceptions.JoblibException)
|
|
assert (my_exceptions.JoblibNameError is
|
|
my_exceptions._mk_exception(NameError)[0])
|
|
|
|
|
|
def test_inheritance_special_cases():
|
|
# _mk_exception should transform Exception to JoblibException
|
|
assert (my_exceptions._mk_exception(Exception)[0] is
|
|
my_exceptions.JoblibException)
|
|
|
|
# Subclasses of JoblibException should be mapped to
|
|
# them-selves by _mk_exception
|
|
for exception_type in [my_exceptions.JoblibException,
|
|
my_exceptions.TransportableException]:
|
|
assert (my_exceptions._mk_exception(exception_type)[0] is
|
|
exception_type)
|
|
|
|
# Non-inheritable exception classes should be mapped to
|
|
# JoblibException by _mk_exception. That can happen with classes
|
|
# generated with SWIG. See
|
|
# https://github.com/joblib/joblib/issues/269 for a concrete
|
|
# example.
|
|
non_inheritable_classes = [type(lambda: None), bool]
|
|
for exception in non_inheritable_classes:
|
|
assert (my_exceptions._mk_exception(exception)[0] is
|
|
my_exceptions.JoblibException)
|
|
|
|
|
|
def test__mk_exception():
|
|
# Check that _mk_exception works on a bunch of different exceptions
|
|
for klass in (Exception, TypeError, SyntaxError, ValueError,
|
|
ImportError, CustomException, CustomException2):
|
|
message = 'This message should be in the exception repr'
|
|
exc = my_exceptions._mk_exception(klass)[0](
|
|
message, 'some', 'other', 'args', 'that are not', 'in the repr')
|
|
exc_repr = repr(exc)
|
|
|
|
assert isinstance(exc, klass)
|
|
assert isinstance(exc, my_exceptions.JoblibException)
|
|
assert exc.__class__.__name__ in exc_repr
|
|
assert message in exc_repr
|