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 23:57:49 +08:00
2026-11-08 22:42:00 +08:00
2026-11-11 05:18:56 +08:00
2026-11-07 11:06:18 +08:00
2026-11-11 11:32:27 +08:00
2026-11-11 10:48:04 +08:00
2026-11-11 09:19:42 +08:00
2026-10-31 21:54:10 +08:00
2026-10-31 21:54:10 +08:00
2026-10-31 21:54:10 +08:00
2026-10-31 21:54:10 +08:00
2026-11-08 23:57:49 +08:00
2026-11-08 22:42:00 +08:00
2026-11-09 14:12:23 +08:00
2026-11-07 09:33:22 +08:00
2026-10-31 21:54:10 +08:00
2026-11-09 21:30:55 +08:00
2026-11-09 17:07:22 +08:00
2026-10-31 21:54:10 +08:00
2026-10-31 21:54:10 +08:00
2026-10-31 21:54:10 +08:00
2026-11-09 17:07:22 +08:00
2026-11-09 17:07:22 +08:00
2026-11-09 14:12:23 +08:00
2026-11-11 05:18:56 +08:00
2026-10-31 21:54:10 +08:00
2026-11-11 05:18:54 +08:00
2026-11-07 10:36:37 +08:00
2026-11-11 11:32:27 +08:00
2026-10-31 21:54:10 +08:00
2026-11-09 17:07:22 +08:00
2026-10-31 21:54:10 +08:00
2026-11-11 10:48:04 +08:00
2026-11-11 05:18:54 +08:00
2026-11-09 17:07:22 +08:00
2026-11-09 14:12:23 +08:00
2026-10-31 21:54:10 +08:00
2026-11-09 14:12:23 +08:00
2026-10-31 21:54:10 +08:00
2026-11-09 17:07:22 +08:00
2026-11-11 09:19:42 +08:00
2026-10-31 21:54:10 +08:00
2026-11-09 17:07:22 +08:00
2026-10-31 21:54:10 +08:00
2026-11-09 17:07:22 +08:00
2026-10-31 21:54:10 +08:00
2026-11-09 17:07:22 +08:00