iOSBuildServer/tests/test_build_queue.py

34 lines
1.1 KiB
Python

"""打包队列日志时序测试"""
import asyncio
import pytest
from backend.services.build_queue import BuildQueue
from backend.services.log_streamer import log_streamer
@pytest.mark.asyncio
async def test_submit_creates_log_queue_before_worker_runs():
"""前端订阅任务时,应能拿到入队日志和后续执行日志。"""
task_id = "queue-log-test"
log_streamer.cleanup(task_id)
log_streamer._log_lines.pop(task_id, None)
queue = BuildQueue(max_concurrent=1)
async def build(task_id: str):
await log_streamer.emit(task_id, "构建函数已执行")
try:
await queue.submit(task_id, build)
await asyncio.wait_for(queue._queue.join(), timeout=3)
messages = [entry["message"] for entry in log_streamer._log_lines[task_id]]
assert messages == ["任务已加入队列,等待执行...", "构建函数已执行"]
finally:
for worker in queue._workers:
worker.cancel()
await asyncio.gather(*queue._workers, return_exceptions=True)
log_streamer.cleanup(task_id)
log_streamer._log_lines.pop(task_id, None)