summaryrefslogtreecommitdiff
path: root/stevedore
diff options
context:
space:
mode:
Diffstat (limited to 'stevedore')
-rw-r--r--stevedore/driver.py6
-rw-r--r--stevedore/tests/extension_unimportable.py0
-rw-r--r--stevedore/tests/test_callback.py8
-rw-r--r--stevedore/tests/test_driver.py9
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