JianFeeeee
6be5a543af
test(suite): 判据总入口 run-all —— 全部跑完再算退出码,并接上两条从未跑过的判据
## 为什么
`npm test` 是 `&&` 链:**前面红一条,后面全部不跑**。于是"只红一条"看起来像
"只有一个问题",实际后面那些判据连跑都没跑(`packaging` 那条能发现"界面改了没重打包"的
判据,长期因此隐身)。而且这套规矩下"全绿"可信、"红"不可信。
改成 `test/run-all.mjs`(pi 建议):每条都跑,红的收集起来最后一起报、一起退出。
- **自检 1**:清单里的文件必须存在(名字写错 = 一条判据静默消失);
- **自检 2**:`test/` 下每个 `*.test.mjs` 都必须接进清单 —— **新增判据忘了接线直接红**。
这条自检当场抓出 `nav-merge.test.mjs`、`build-stamp.test.mjs` 两个"写好了没接线"的文件
(8 + 4 条判据此前从未跑过,与 `cross-client-theme` 是同一族问题)。
- 变异验证:强制 `theme.test.mjs` 判红 → 后面 5 条判据照跑,汇总如实报"红 1/9"、退出码 1。
`package.json`:`"test": "node test/run-all.mjs && vitest run"`。
## 接线后暴露的两条陈旧判据(代码没错、判据钉的是旧写法),按"钉行为不钉字面"修
1. `setViewMode(target || commTab` —— 代码后来等价改写成
`target ?? (isComm ? commTab : modes[0])`。改成钉行为"isComm 时落到 commTab",
并额外要求桌面分支带 `target`(否则日历/联系人点不动)。
2. `MailView.tsx` 里 grep `glass-control` —— 授权多选胶囊已抽成共用组件 `ComposerChip`,
样式其实是对的(neutral 未选中态就是 `glass-control`)。改成钉
"MailView 用 ComposerChip" + "ComposerChip 用控件档"(文件会搬、组件不会)。
两条都做了变异验证(去掉玻璃档 / 去掉 commTab 回退 → 各判红 1 条)。
## 生成产物再补一条判据(pi 提议)
用 postcss 真解析 `background-takeover.generated.css`:断言每条规则的选择器形状恰好是
`html[data-bg='on'] .bg-xxx`,且规则条数与源码扫到的清单条数一致。
只验"能解析"不够 —— 实测 postcss 对当年那份坏产物照样解析出 1 条规则(选择器前粘了
注释尾巴),所以卡形状与条数。变异:把坏头注释塞回生成产物 → 该条判红。
## BUILD.md:deb 结论撤回(不是 fpm)
`TMPDIR=/var/tmp/ebtmp` 在本沙箱建不出来;把 TMPDIR 指到工作区大盘后 deb 正常产出
(`release/agentmail-web_0.1.0_amd64.deb`,约 100MB)。日志关键行是 **`Errno::ENOSPC`**:
fpm 要把 291MB 的 `linux-unpacked` 整份复制进 TMPDIR,而本机 `/tmp` 是 9.8G tmpfs、
被 `/tmp/gocache`(4.5G)等占到 99%。所以「本机打不出 deb」是环境症状、不是工具链缺陷,
deb 不必从 `build.linux.target` 摘掉。排查命令写进 BUILD.md。
## 验证
`npm test` 退出码 0:9 个判据文件全绿(markdown-xss、narrow-layout、nav-merge 8、
theme、background 42、cross-client 8、harmony-logic 14、build-stamp 4、packaging 3)
+ vitest 258/258。鸿蒙侧 `hvigorw assembleHap` 仍 BUILD SUCCESSFUL。
2026-09-14 13:44:00 +08:00
..
2026-09-14 13:44:00 +08:00
2026-09-14 13:36:05 +08:00