Files
xiaoxia-saas/tests/unit/test_empty_plan_id_marks_failed.py
T
CI Bot 7b69872589
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 47s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 26s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 27s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m37s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m41s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m56s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 2m1s
AI Code Review / AI Code Review (pull_request) Successful in 2m40s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m34s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m42s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 7m25s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Successful in 3m41s
CI/CD Pipeline / CI Gate (pull_request) Successful in 6s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 53s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 57s
style: auto-format with black + isort + prettier [skip ci-format-check]
2026-08-24 07:54:09 +00:00

33 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""回归测试:source_edit_plan_id 为空时任务必须被标记为 failed。
背景 (2026-08-24):确认生成卡在 10%。根因是 worker 在
source_edit_plan_id 为空时直接 return failed,但没有调用 mark_failed
导致 DB 状态永远停在 running。
"""
from pathlib import Path
GENERATION_PY = Path(__file__).resolve().parents[2] / "apps" / "worker" / "worker_app" / "tasks" / "generation.py"
def test_mark_failed_in_else_branch():
"""generation.py 中 source_edit_plan_id 为空的 else 分支必须调用 mark_failed。"""
source = GENERATION_PY.read_text(encoding="utf-8")
# 定位 else 分支:紧跟在 'source_edit_plan_id 为空' 日志之后的 else 块
marker = "source_edit_plan_id 为空"
idx = source.find(marker)
assert idx != -1, f"generation.py 中未找到 '{marker}'"
# 从 marker 位置向后搜索到下一个 return 语句
after_marker = source[idx:]
return_idx = after_marker.find("return {")
assert return_idx != -1, "else 分支中未找到 return 语句"
# 关键断言:marker 和 return 之间必须包含 mark_failed
block = source[idx : idx + return_idx]
assert "mark_failed" in block, (
"else 分支在 return 之前必须调用 _update_task_status(task_id, "
"'mark_failed', ...) 以更新 DB 状态,否则任务永远卡在 running"
)