AskaEth
c97ec293c3
test(core): 「哪些键真的交给日志」补自动化证据(M244 r2 P2-1)
复审 P2-1:旧用例只断言 `collect_fresh`(纯函数)与 `unknown_keys()`(表级清单),
没人断言 `report` **真的**只把「新键」交给 sink;把 `for key in fresh` 改成
`for key in unknown`(每次渲染重复写日志)当时 6 条用例全绿,而「同键只报一次」正是判据 ③。
- `report_with(&self, unknown, sink: impl FnMut(&str))`:`report` 变成
`report_with(unknown, emit)`,`emit` 仍是 `cfg(test)` 空实现(不碰进程级单例,flake 不回潮);
- 新用例 `report_emits_only_fresh_keys`:假 sink 收集,断言一次渲染内重复只交一次、
跨渲染只有新键才交、顺序与 `collect_fresh` 一致;
- 顺手收掉自己列的边角:`unknown_log_line` 先把键名里的 `\r`/`\n` 换成空格
(`launcher.log` 是行导向的,恶意清单塞换行能把一个键变成两行假日志),
新用例 `log_lines_never_break_into_two_lines`。
变异自证(各自 exit 101,均已还原、文件 sha256 复原):
- `for key in &fresh` → `for key in unknown` ⇒ `report_emits_only_fresh_keys` 红,
`left: ["a", "a"] right: ["a"]`;
- 删掉 `key.replace(['\r','\n'], " ")` 那一行 ⇒ `log_lines_never_break_into_two_lines` 红,
`left: 2 right: 1`。
门禁:fmt / check -p unlucky-core --all-targets / test -p unlucky-core -p unlucky-cli
(1678 passed / 0 failed)/ clippy --workspace --all-targets -- -D warnings 全绿。
2026-11-11 11:32:27 +08:00
..
2026-11-08 16:20:34 +08:00
2026-11-05 14:08:37 +08:00
2026-11-11 08:28:06 +08:00
2026-11-11 10:34:18 +08:00
2026-11-11 11:32:27 +08:00
2026-11-10 22:34:05 +08:00
2026-11-11 06:00:27 +08:00
2026-11-07 18:56:01 +08:00
2026-11-11 10:48:16 +08:00