# PR #21330 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[CI] Enable failfast (`-f`) by default in `run_suite.py`
- 合并时间：2026-03-25 08:04
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/21330

---

## 执行摘要
本 PR 在 sglang 仓库的 CI 测试运行中默认启用 unittest 的 failfast (-f) 标志，旨在减少测试失败后的时间浪费，同时清理两个测试文件中的不兼容自定义参数解析，并更新相关文档。这是一个基础设施优化，对 CI 效率和测试标准化有中等影响，变更直接合并，无重大争议。

## 功能与动机
变更动机源于优化 CI 时间效率，避免在测试失败后继续执行剩余测试浪费资源。PR body 中提到“avoid wasting CI time on remaining tests after a failure.”，提交历史也强调“default fast fail”和修复兼容性问题。这反映了团队对 CI 性能的持续关注。

## 实现拆解
实现分为三个关键部分：
1. **修改测试运行逻辑**：在 `python/sglang/test/ci/ci_utils.py` 中，`run_one_file` 函数现在使用命令 `python3 full_path -f` 来执行测试文件，启用 failfast 模式。
   ```python
   cmd = ["python3", full_path, "-f"]  # 新增 -f 标志
   ```
2. **移除不兼容代码**：在 `test/registered/models/test_vlm_models.py` 和 `test/registered/vlm/test_encoder_dp.py` 中，删除了自定义的 `argparse` 代码块，改用 `unittest.main()`，因为这些自定义解析会干扰 `-f` 标志的传递，且基类已提供默认参数回退。
3. **更新文档**：`test/README.md` 被更新，添加了关于 failfast 行为的说明，并明确要求测试文件使用标准 `unittest.main()` 或 `pytest.main()` 入口点，禁止自定义 `argparse`。

## 评论区精华
无 review 讨论，变更由作者直接合并，可能表示变更简单或团队已有共识，但也暗示潜在风险未被充分讨论。

## 风险与影响
**风险**：主要风险在于兼容性——其他测试文件可能包含类似的自定义 argparse 代码，导致 CI 失败；移除 `--mem-fraction-static` 参数解析可能影响测试行为，但基类默认值降低了此风险。
**影响**：对开发者而言，需遵循新文档避免 CI 错误；对系统，CI 运行时间有望减少；对团队，提升了测试流程标准化程度。

## 关联脉络
从近期历史 PR 看，本 PR 是 CI 基础设施优化趋势的一部分：PR 21344 和 21334 也聚焦 CI 改进，而 PR 21283 更新文档以适配 CI 流程。这表明仓库正持续优化测试和 CI 效率，开发者应关注此类变更以确保兼容性。