test(criteria): 规范补两条 + 还原纪律改写成"先固化基线再破坏"
pi 三条增量的第三条(纠正我的写法)与配套文档: ## 1 还原纪律:禁令 → 操作顺序(pi 纠正) 我原来写的是"变异后不要用 `git checkout` 还原"——**治症不治因**。真因是 **被还原到的那个状态还没提交**(我丢的是一个刚加、尚未提交的 marker)。 可执行的形状: > **任何破坏性还原,都要求"将被还原到的那个状态已经在某个提交里"。** 所以:**变异前先把基线提交掉**;更稳就 `git worktree add` 一个干净副本去变异。 `cp` 备份仍然可用,但它依赖"人记得备份",顺序改对了则不依赖记性 —— 与"记得打 marker"改成"计数写在 `check()` 内部"是同一招。 本提交自身就是这条纪律的示范:先提交 `ec90cba`(helper + 移植 + 错误信息)作为基线, 再在已提交的基线上做 marker 变异验证。 ## 2 共享 helper 与"失败信息自带修法"写进 §6.6 - `test/lib/checks.mjs` 的存在理由与用法(计数只可能在该模块内发生 → 漏 marker / 计数写错位置在新判据上不可能发生); - **失败信息要自带修法**:red 是那个人一定会看到的东西,文档不一定被打开。 验证方式也记了:真删掉一条判据的 marker 行跑一遍,确认错误信息能照抄执行 (已验:输出里给了 helper 用法与样板文件路径,且 `node:test` 的判据不用管)。 ## 3 规范自检关键词 7 → 9 新增 '已经在某个提交里'、'自带修法',防止这两条被删掉还不报错。 ## 验证 `npm test` 退出码 0(12 个判据文件全绿 + vitest 258/258)。
This commit is contained in:
@ -49,7 +49,7 @@ if (!existsSync(CRITERIA_DOC)) {
|
||||
process.exit(1);
|
||||
}
|
||||
const criteriaDoc = readFileSync(CRITERIA_DOC, 'utf8');
|
||||
for (const must of ['配对/解析', 'allow-list', '变异验证', '剥掉注释', '按行', '自报条数', '只支撑你看到的那一层']) {
|
||||
for (const must of ['配对/解析', 'allow-list', '变异验证', '剥掉注释', '按行', '自报条数', '只支撑你看到的那一层', '已经在某个提交里', '自带修法']) {
|
||||
if (!criteriaDoc.includes(must)) {
|
||||
console.error(`✗ 判据规范里少了「${must}」这条 —— 规则被删掉了还是搬走了?`);
|
||||
process.exit(1);
|
||||
|
||||
Reference in New Issue
Block a user