"""打包队列日志时序测试""" 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)