动机
test/install.test.mjs 用例 53 无条件断言 $BIN/shadow-dev.cmd 存在,但 .cmd 按设计只在 MINGW/MSYS/CYGWIN 下生成(gen_shims 的 uname 分支)。结果 ubuntu/macos 矩阵自 38b1364(安装器引入)起 main 分支 CI 持续红色——红 CI 掩盖真实回归、让后续所有 PR 在坏门禁下合并(#18/#21 均如此)。本变更修复断言本身,恢复 CI 门禁价值。
引用规范
- shadow-docs/knowledge/install-distribution.md
- 当前结论: 托管 shim 为
.sh 全平台 + .cmd 仅 Windows;验证方式登记 8 用例
- 适用 scope: scripts/install-cli.sh, test/install.test.mjs
- norms/tdd-verification.md
- 当前结论: 完成前必须有可查验证;本变更的"红"在 CI 非 Windows 矩阵(本地 win 恒真无法复现),PR 上 CI 矩阵转绿即验证
决策
- 选型: 平台门:
platform() === 'win32' 时才断言 .cmd 存在(单行修复,非 win 环境断言 .cmd 不存在反而更贴合设计——顺带钉住"不越平台生成")。
- 对比方案: 让
gen_shims 在 unix 也生成 .cmd 被否——unix 下 .cmd 无运行语义,为迁就错误断言改正确行为是反模式。
- 理由: 断言错、行为对;测试向契约对齐,不是相反。
任务
完整 brief:shadow-docs/changes/20260918-fix-installer-ci-cmd-assert/brief.md
动机
test/install.test.mjs用例 53 无条件断言$BIN/shadow-dev.cmd存在,但.cmd按设计只在 MINGW/MSYS/CYGWIN 下生成(gen_shims的 uname 分支)。结果 ubuntu/macos 矩阵自 38b1364(安装器引入)起 main 分支 CI 持续红色——红 CI 掩盖真实回归、让后续所有 PR 在坏门禁下合并(#18/#21 均如此)。本变更修复断言本身,恢复 CI 门禁价值。引用规范
.sh全平台 +.cmd仅 Windows;验证方式登记 8 用例决策
platform() === 'win32'时才断言.cmd存在(单行修复,非 win 环境断言.cmd不存在反而更贴合设计——顺带钉住"不越平台生成")。gen_shims在 unix 也生成.cmd被否——unix 下.cmd无运行语义,为迁就错误断言改正确行为是反模式。任务
test/install.test.mjs— 用例 53 的.cmd断言加平台门(win32 存在 / 其他平台不存在)scripts/install-cli.sh无改动(确认边界);shadow-docs/knowledge/install-distribution.md— 验证方式登记平台分支语义,source 追加本 brief完整 brief:shadow-docs/changes/20260918-fix-installer-ci-cmd-assert/brief.md