问题
Windows 的 Rust server CI 稳定失败于:
parsers::pi::tests::settings_json_session_dir_is_honored
left: "C:\\Users\\...\\Temp\\...\\agent\\sessions"
right: "/srv/pi-sessions"
失败来自测试将 POSIX 路径 /srv/pi-sessions 当作跨平台绝对路径。session_dir_from_settings 会调用 Path::is_absolute();在 Windows 目标上,该路径不是 Windows 绝对路径,因此正确地回退到 <agent_dir>/sessions,与测试预期不一致。
证据
建议修复
让测试使用当前平台原生、确定为绝对路径的 fixture,例如:
- 使用
tempdir().path().join("pi-sessions") 作为 sessionDir;
- 通过
serde_json::json! 序列化设置,避免手写 Windows 反斜杠转义;
- 断言解析结果等于该平台原生路径。
这样只修正测试,不改变生产逻辑“仅接受当前平台绝对路径”的语义。
验收标准
- Windows 执行
cargo test --no-default-features --bin codeg-server --lib 通过;
- Linux/macOS 原有测试保持通过;
- 不改变
session_dir_from_settings 的生产行为。
问题
Windows 的
Rust serverCI 稳定失败于:失败来自测试将 POSIX 路径
/srv/pi-sessions当作跨平台绝对路径。session_dir_from_settings会调用Path::is_absolute();在 Windows 目标上,该路径不是 Windows 绝对路径,因此正确地回退到<agent_dir>/sessions,与测试预期不一致。证据
main在提交a6918223f541b3b967781040a0e40472fd7744f8上已独立复现:Windows server jobmain后再次复现:Windows server jobsrc/parsers/pi.rs:2326,只有临时目录随机名不同。--no-run,只编译、不执行测试。建议修复
让测试使用当前平台原生、确定为绝对路径的 fixture,例如:
tempdir().path().join("pi-sessions")作为sessionDir;serde_json::json!序列化设置,避免手写 Windows 反斜杠转义;这样只修正测试,不改变生产逻辑“仅接受当前平台绝对路径”的语义。
验收标准
cargo test --no-default-features --bin codeg-server --lib通过;session_dir_from_settings的生产行为。