diff options
Diffstat (limited to 'stevedore')
-rw-r--r-- | stevedore/driver.py | 6 | ||||
-rw-r--r-- | stevedore/tests/extension_unimportable.py | 0 | ||||
-rw-r--r-- | stevedore/tests/test_callback.py | 8 | ||||
-rw-r--r-- | stevedore/tests/test_driver.py | 9 |
4 files changed, 19 insertions, 4 deletions
diff --git a/stevedore/driver.py b/stevedore/driver.py index 47273d0..85a2ae2 100644 --- a/stevedore/driver.py +++ b/stevedore/driver.py @@ -33,6 +33,8 @@ class DriverManager(NamedExtensionManager): invoke_on_load=False, invoke_args=(), invoke_kwds={}, on_load_failure_callback=None, verify_requirements=False): + on_load_failure_callback = on_load_failure_callback \ + or self._default_on_load_failure super(DriverManager, self).__init__( namespace=namespace, names=[name], @@ -43,6 +45,10 @@ class DriverManager(NamedExtensionManager): verify_requirements=verify_requirements, ) + @staticmethod + def _default_on_load_failure(drivermanager, ep, err): + raise err + @classmethod def make_test_instance(cls, extension, namespace='TESTING', propagate_map_exceptions=False, diff --git a/stevedore/tests/extension_unimportable.py b/stevedore/tests/extension_unimportable.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/stevedore/tests/extension_unimportable.py diff --git a/stevedore/tests/test_callback.py b/stevedore/tests/test_callback.py index d80c7f2..47ea262 100644 --- a/stevedore/tests/test_callback.py +++ b/stevedore/tests/test_callback.py @@ -15,7 +15,7 @@ def test_extension_failure_custom_callback(): on_load_failure_callback=failure_callback) extensions = list(em.extensions) assert len(extensions) > 0 - assert len(errors) == 1 - (manager, entrypoint, error) = errors[0] - assert manager is em - assert isinstance(error, IOError) + assert len(errors) == 2 + for manager, entrypoint, error in errors: + assert manager is em + assert isinstance(error, (IOError, ImportError)) diff --git a/stevedore/tests/test_driver.py b/stevedore/tests/test_driver.py index e56d2c5..f81cd8b 100644 --- a/stevedore/tests/test_driver.py +++ b/stevedore/tests/test_driver.py @@ -43,6 +43,15 @@ def test_no_drivers(): assert "No 'stevedore.test.extension.none' driver found" in str(err) +def test_bad_driver(): + try: + driver.DriverManager('stevedore.test.extension', 'e2') + except ImportError: + pass + else: + assert False, "No error raised" + + def test_multiple_drivers(): # The idea for this test was contributed by clayg: # https://gist.github.com/clayg/6311348 |