JianFeeeee
753310d12f
test(桥): 把「三个变异逐个验过」从**手跑**变成**判据**(原来文件里只钉了变异①)
pi 复核我那笔 `1de93fe` 时指出:提交信息里写了"三个变异逐个验过",
但判据文件里**只给变异①配了自检** —— 那三个是手跑的,手跑过一次 ≠ 以后还会红;
谁把断言改松,另两种变异不会有任何人发现。
原文件的问题(这次才看清):
- 变异②(`if (true) return undefined`:catch 形状不变、也"看"了 code,只是判断写反)
与变异①在**判据层面完全同形** —— 只用"有没有 code 比较"去判,两者都抓不到;
- 变异③(`throw e` 提到 code 判断之前)**根本不改"是否区分"**:
`distinguishes()` 对它恒为真。它测的是**顺序**,所以必须单独一条 `orderHolds()`。
这正是我原来漏掉③的真正原因 —— 不是"忘了写",是**当时没有能表达它的判据**。
本次改动:
- 把判据抽成 `distinguishes()`(区分)与 `orderHolds()`(顺序)两条,`criterionPasses` 取合取;
- 三条变异各一条断言 + 一条**前置**(原样源码必须通过 ⇒ 否则三条自检恒假,等于没写);
- 每条变异都断言"真的落在 persistedCwd 内"(全局正则会命中文件里第一个无关的
`catch (e: any)`,变异没落下而判据全绿 —— 本仓踩过,`assert.notEqual` 守住);
- 变异③额外断言 `distinguishes(mutated) === true`:**证明它测的是顺序而不是退化成①**。
验证(对**真源码**做变异,不是只喂文本):
基线 pass=5 fail=0 | ①pass=0 fail=5 | ②pass=1 fail=4 | ③pass=3 fail=2 | 还原 pass=5 fail=0
源码逐字节还原(cmp 过)。门禁 `npx tsc && npm test`:402/402。
2026-09-25 04:30:53 +08:00
..
2026-09-03 12:09:12 +08:00
2026-09-04 11:14:44 +08:00
2026-09-12 11:20:13 +08:00
2026-09-06 15:18:06 +08:00
2026-09-14 16:21:27 +08:00
2026-09-06 15:18:06 +08:00
2026-09-03 12:09:12 +08:00
2026-09-13 10:39:26 +08:00
2026-09-14 12:07:45 +08:00
2026-09-11 12:03:51 +08:00
2026-09-19 12:03:34 +08:00
2026-09-03 12:09:12 +08:00
2026-09-14 16:21:27 +08:00
2026-09-12 23:13:48 +08:00
2026-09-03 21:10:48 +08:00
2026-09-14 16:21:27 +08:00
2026-09-14 08:17:23 +08:00
2026-09-25 04:30:53 +08:00
2026-09-14 23:18:12 +08:00
2026-09-11 22:28:47 +08:00
2026-09-12 23:13:48 +08:00
2026-09-04 23:52:52 +08:00
2026-09-08 19:16:35 +08:00
2026-09-03 12:09:12 +08:00
2026-09-11 12:03:51 +08:00
2026-09-11 22:12:01 +08:00
2026-09-04 21:39:50 +08:00
2026-09-11 10:44:18 +08:00
2026-09-02 20:28:19 +08:00