gemini-cli 测试在 Mac 上随机挂?一个 realpathSync mock 修复根因
AbbasFullstack · ghdev · 2026-10-29
google-gemini/gemini-cli 的 #30018 PR 修复了一个测试稳定性 bug:测试文件 mock 了 statSync/fstatSync/closeSync,但漏掉了 node:fs 的 realpathSync,导致 closeOrphanSlaveFd 调用了真实实现。只要机器上恰好存在 /dev/ttys001(比如 Mac 开着第二个终端窗口),测试就会走 /dev/fd 对比路径而非预期的 rdev-only 路径而失败。
修复方式:
- 提升(hoisted)一个 mockRealpathSync 并接入现有的 node:fs mock(默认导出与顶层);
- 在 darwin 测试中让 realpathSync 抛出 ENOENT,使测试在所有主机上都确定性地走 rdev-only 匹配分支;
- 不改动生产代码,closeOrphanSlaveFd 真实系统行为不变。
验证命令为 npm run test --workspace @google/gemini-cli-core -- src/services/shellExecutionService.test.ts,85 个测试在有无 /dev/ttys001 的机器上均通过。
「编程与Agent」频道最新
- 开发者晒 GPT-6 Astra 用 JUCE 逐步复刻 TB-303 合成器 — kylegawley · 2026-10-29
- 乐鑫推 ESP-Mosaico 套件:480×480 触屏+磁吸扩展,主打 Vibe Coding — songguoxiansen · 2026-10-29
- 开发者自建远程 MCP 服务器,让 20+ Claude 项目共享一块公告板 — mmmmjjjj1228 · 2026-10-29
- 从零后训练 Qwen3-4B 工具调用 agent:66MB LoRA 跑在 Mac 上,验证分 0.51→0.83 — DesignerIsland5524 · 2026-10-29
- 开发者把 Mac 屏幕与通话记忆接入 Grok Bot,只读问答一周行踪 — bfrench · 2026-10-29
- 开发者自述:一天 5000 次 GitHub 贡献,「在睡梦里都能看到推理痕迹」 — vincent_koc · 2026-10-29