summaryrefslogtreecommitdiff
path: root/tests/test_events.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_events.py')
-rw-r--r--tests/test_events.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/test_events.py b/tests/test_events.py
index 4881588a4..4fbe03a17 100644
--- a/tests/test_events.py
+++ b/tests/test_events.py
@@ -8,6 +8,9 @@
:license: BSD, see LICENSE for details.
"""
+import pytest
+
+from sphinx.errors import ExtensionError
from sphinx.events import EventManager
@@ -22,3 +25,19 @@ def test_event_priority():
events.emit('builder-inited')
assert result == [3, 1, 2, 5, 4]
+
+
+def test_event_allowed_exceptions():
+ def raise_error(app):
+ raise RuntimeError
+
+ events = EventManager(object()) # pass an dummy object as an app
+ events.connect('builder-inited', raise_error, priority=500)
+
+ # all errors are conveted to ExtensionError
+ with pytest.raises(ExtensionError):
+ events.emit('builder-inited')
+
+ # Allow RuntimeError (pass-through)
+ with pytest.raises(RuntimeError):
+ events.emit('builder-inited', allowed_exceptions=(RuntimeError,))