generated from john/python-template
29 lines
820 B
Python
29 lines
820 B
Python
import asyncio
|
|
import logging
|
|
|
|
import pytest
|
|
|
|
from transcription.worker import run_worker_loop
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_run_worker_loop_survives_process_next_exception(monkeypatch, caplog):
|
|
calls = 0
|
|
stop_event = asyncio.Event()
|
|
|
|
async def _fake_process_next_queued_job(*, session=None, session_factory=None):
|
|
nonlocal calls
|
|
_ = (session, session_factory)
|
|
calls += 1
|
|
if calls == 1:
|
|
raise RuntimeError("boom")
|
|
stop_event.set()
|
|
return False
|
|
|
|
monkeypatch.setattr("transcription.worker.process_next_queued_job", _fake_process_next_queued_job)
|
|
|
|
with caplog.at_level(logging.ERROR):
|
|
await run_worker_loop(stop_event=stop_event, poll_interval_seconds=0)
|
|
|
|
assert calls == 2
|
|
assert "Worker loop exception" in caplog.text |