mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""
|
|
test_events
|
|
~~~~~~~~~~~
|
|
|
|
Test the EventManager class.
|
|
|
|
:copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
|
:license: BSD, see LICENSE for details.
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from sphinx.errors import ExtensionError
|
|
from sphinx.events import EventManager
|
|
|
|
|
|
def test_event_priority():
|
|
result = []
|
|
events = EventManager(object()) # pass an dummy object as an app
|
|
events.connect('builder-inited', lambda app: result.append(1), priority = 500)
|
|
events.connect('builder-inited', lambda app: result.append(2), priority = 500)
|
|
events.connect('builder-inited', lambda app: result.append(3), priority = 200) # eariler
|
|
events.connect('builder-inited', lambda app: result.append(4), priority = 700) # later
|
|
events.connect('builder-inited', lambda app: result.append(5), priority = 500)
|
|
|
|
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 converted 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,))
|