补齐 ffmpeg 导出链路的集成测试(test-plan 已规划但代码缺失) 已关闭
t-20260713-db9fcd · 需求 · 创建于 2026-07-13 05:54:42 · 版本 main@95f7581 · macOS 15 (Darwin 25.5.0)
问题描述
docs/test-plan.md 中规划了 ffmpeg 视频导出的 integration 测试,但当前 main 的 tests/ 与 scripts/ 中不存在对应实现(grep 无 ffmpeg/ffprobe 断言)。期望:新增一条离线集成测试——用 ffmpeg 合成一个几秒钟的小样本视频(testsrc+sine,不依赖任何真实素材与 gitignore 的大文件),构造一个固定的剪辑计划跑完整导出管道,然后用 ffprobe 断言:①输出时长与剪辑计划一致(允许帧级误差);②流规格正确(视频+音频轨存在);③导出的 SRT 字幕时间戳单调递增且落在成片时长内。测试必须完全离线、不需要任何 API key,可用 python3 scripts/run_tests.py 或独立脚本运行。验收:新测试稳定通过且纳入现有测试入口。参考 src/cutpoint_lab/video_exporter.py 已封装的 ffprobe_duration_ms。
分诊结论
结论:accept
- 问题描述清晰:指出 test-plan.md 已规划但代码缺失的具体测试场景
- 复现条件明确:grep 无 ffmpeg/ffprobe 断言可直接验证
- 期望行为具体:给出了三条可量化的断言目标(时长、流规格、SRT 字幕)
- 符合项目约束:离线运行、使用 testsrc+sine 合成素材不依赖真实视频、不引入 pip 包
- 引用了具体文件路径和现有 API(ffprobe_duration_ms),信息足以着手实现
修复摘要
在 tests/test_ffmpeg_export_integration.py 新增一条离线 ffmpeg 集成测试:用 lavfi testsrc+sine 合成 10 s 样本视频,跑 export_video_plan(固定两段 clip plan),断言 ① 输出时长与计划一致(±200 ms)、② 含视频+音频流、③ SRT 字幕时间戳单调递增且落在成片时长内;通过 setUpClass 只建一次源视频,skip guard 保证无 ffmpeg 时不阻测试;全套 86 测试全绿。
改动文件:
tests/test_ffmpeg_export_integration.py
合并提交 cd4366b0ff2cd7d40497bd55db7d8a3ac9942d12
事件时间线
- 2026-07-13 05:54:42created
{"type":"feature","hasLogs":false} - 2026-07-13 05:54:56status
{"from":"received","to":"queued","detail":{"via":"triage"}} - 2026-07-13 05:54:56status
{"from":"queued","to":"fixing"} - 2026-07-13 05:57:46verify
{"ok":true,"steps":[{"name":"verify","ok":true,"required":true}]} - 2026-07-13 05:57:46status
{"from":"fixing","to":"awaiting_judge","detail":{"files":1}} - 2026-07-13 05:57:46status
{"from":"awaiting_judge","to":"judging"} - 2026-07-13 05:58:32policy
{"action":"human","tier":"medium","reasons":["风险等级 medium 的门槛配置为人工审批"]} - 2026-07-13 05:58:32status
{"from":"judging","to":"awaiting_human","detail":{"cardId":"d-20260713-ef0fda","reasons":["风险等级 medium 的门槛配置为人工审批"]}} - 2026-07-13 07:49:31humanReview
{"cardId":"d-20260713-ef0fda","choiceId":"approve","note":""} - 2026-07-13 07:49:31status
{"from":"awaiting_human","to":"approved","detail":{"via":"human"}} - 2026-07-13 07:49:31status
{"from":"approved","to":"merging"} - 2026-07-13 07:49:32merged
{"sha":"cd4366b0ff2cd7d40497bd55db7d8a3ac9942d12"} - 2026-07-13 07:49:32status
{"from":"merging","to":"merged","detail":{"sha":"cd4366b0ff2cd7d40497bd55db7d8a3ac9942d12"}} - 2026-07-13 07:49:32notified
{"mode":"log","confirmUrl":"http://localhost:8123/confirm/t-20260713-db9fcd?token=***"} - 2026-07-13 07:49:32status
{"from":"merged","to":"awaiting_confirmation"} - 2026-07-13 07:51:20reporterConfirmed
{"note":"报告者客观复验通过:合并提交 cd4366b 带完整 Ticket/Source-branch trailer;规范入口 scripts/run_tests.py 87 测试全绿;新集成测试文件在 main 上存在且被 discover。验收标准全部满足。"} - 2026-07-13 07:51:20status
{"from":"awaiting_confirmation","to":"closed","detail":{"via":"reporterConfirmed"}}