jkooe
6adf11c85a
fix(test): 两条守卫在 Windows 上必红(CRLF 与路径分隔符)
CI run 38380306200(提交 73ed06f)Windows 单元测试 319/321,macOS 全绿。
① 仓库内全部版本号互一致 → 报 undefined apps/console/src-tauri/Cargo.lock
根因:actions/checkout 在 Windows 默认 core.autocrlf=true → CRLF,
而 Cargo.lock 的版本提取把 \n 写死。**同一隐患也在生产代码里**:
version-write.mjs 另有一条 name…\nversion… 正则读旧值,CRLF 下返回
undefined → 把 Cargo.lock 记入 skipped 并跳过 → 发版后滞留旧版本
(正是本模块要消灭的分叉,且不报错)。
修法:读旧值收敛到 readCargoTomlVersion / setCargoLockVersion().before
单一真源,删掉重复正则;新增 splitLineEol() 拆「正文+行尾」后改写
(不能写 ("".*)$ 兜行尾 —— JS 的 . 不匹配 \r)。
② W-01 根因守卫 → 把唯一真源自己判成违规(util\quote.ts)
根因:file.slice(dir.length+1) 在 Windows 得到反斜杠路径,与白名单
的 util/quote.ts 比不中 → 守卫自己错。
修法:新增 relPosix() 归一成 /。
新增 4 条守卫:Cargo.lock / Cargo.toml 的 CRLF 纯函数用例、
CRLF 工作区上真跑 writeVersionEverywhere 再读回文件、
以及用 path.win32 形态字符串在 macOS 上直接测 Windows 分支。
注入故障实测 4 条如期变红;test:unit 325/325(321 + 4)。
2026-10-13 18:57:04 +08:00
..
2026-10-13 18:57:04 +08:00
2026-10-11 00:18:43 +08:00
2026-10-04 23:54:51 +08:00
2026-10-11 00:05:42 +08:00
2026-09-29 10:55:38 +08:00
2026-10-10 14:27:12 +08:00
2026-10-10 14:27:12 +08:00
2026-09-29 10:55:38 +08:00
2026-10-11 11:41:38 +08:00
2026-10-11 11:41:56 +08:00
2026-10-13 17:16:46 +08:00
2026-10-10 12:26:41 +08:00
2026-10-10 13:39:42 +08:00
2026-10-04 23:03:37 +08:00
2026-10-04 22:54:45 +08:00
2026-10-11 01:13:12 +08:00
2026-09-29 15:47:34 +08:00
2026-09-27 17:04:21 +08:00