fix(docs): 测试数处处一致——替换规则收拢到共用模块 - #346
Conversation
双 README 里测试数以五种形状重复出现(1 个 shields.io 徽章 + 4 种开发命令注释, root 双语再多一条)。v0.8.11 发版后徽章跳到 1437,四条注释却留在 1431。 根因不是「忘了改」,而是两条写入路径各存了一份替换规则、形状集合还不一样: - scripts/release-prep.mjs(Release Prep 工作流,自动,每次发版都跑) - dsh-mneme/scripts/sync-test-badge.mjs(npm run badge:sync,手动) 前者只 replace 徽章 URL,注释压根不在它的替换范围内——自动路径反倒成了漂移来源, 下次发版还会再错一遍。A/B 实测:拿「徽章 1437 / 注释 1431」的漂移态跑修复前的 release-prep,它静默放过、README 仍不一致;修复后同一场景两处都刷成 1437。 改动: - 新增 dsh-mneme/scripts/test-count-sync.mjs,把形状集合(徽章 + 4 种注释)连同 applyTestCount / readTestCounts 收在一处,两条路径共用; - release-prep.mjs 与 sync-test-badge.mjs 改为调用它(后者逻辑不变,只是不再自带 一份正则); - 修正双 README 里四行落后于徽章的注释(1431 → 1437); - 新增 test/test-count-sync.test.js 四条:直接断言双 README 的徽章与注释同数 (跑在真实文件上,就是这次漂移的回归锁)、覆盖全部五种形状、幂等、以及不碰 历史版本表里的「N 测试全绿」。 变异检验:把 root README 注释改回 1431 → 一致性用例变红,并精确报出 badge=1437 / comment-cjk=1431;把徽章正则改坏 → 一致性用例与形状用例同时变红。 两条都如实变红,用例不是空转。 测试 1441 项:1440 通过 / 0 失败 / 1 跳过(原 1437 + 新增 4)。
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Important Review skippedReview was skipped as selected files did not have any reviewable changes. ⚙️ Run configurationConfiguration used: Repository: slow-stack/mneme/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: slow-stack/mneme/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 0 remain after this review. 📝 WalkthroughWalkthrough新增共用的测试数量识别与更新逻辑,并将其用于手动同步和发版准备流程。新增测试验证同步规则。两个 README 中列出的测试数量更新为 1441。 Changes测试数量同步
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The change only updates the documented test counts in both READMEs and centralizes the sync logic. No merge-blocking risk was identified. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
本 PR 自己新增了 4 条测试(1437 → 1441),不跟着刷就又是一处「说明落后于现实」—— 修漂移的那条 PR 反倒制造新的漂移。用仓库自己的工具刷(npm run badge:sync), 6 处出现(2 个徽章 + 4 条注释)一次对齐。 这次调用同时也是重构后端到端的验证:sync-test-badge.mjs 改为调用共用模块 test-count-sync.mjs 之后行为不变(输出 tests=1441, files changed=2,恰好就是 预期的两个 README)。
问题
双 README 里测试数以五种形状重复出现(1 个 shields.io 徽章 + 4 种开发命令注释,root 双语再多一条)。v0.8.11 发版后徽章跳到 1437,四条注释却留在 1431。
根因不是「忘了改」,而是两条写入路径各存了一份替换规则、形状集合还不一样:
scripts/release-prep.mjsdsh-mneme/scripts/sync-test-badge.mjsnpm run badge:sync自动路径只管一半,于是它反倒成了漂移来源——下次发版还会再错一遍。
改动
dsh-mneme/scripts/test-count-sync.mjs:把形状集合与applyTestCount/readTestCounts收在一处,两条路径共用release-prep.mjs与sync-test-badge.mjs改为调用它(后者逻辑不变,只是不再自带一份正则)test/test-count-sync.test.js四条:直接断言双 README 的徽章与注释同数(跑在真实文件上,就是这次漂移的回归锁)、覆盖全部五种形状、幂等、以及不碰历史版本表里的「N 测试全绿」验证
A/B 复现 —— 拿「徽章 1437 / 注释 1431」的真实漂移态跑
release-prep 9.9.9 1437:徽章=1437 / 注释=1431❌ 连一行输出都没有,静默放过,README 仍不一致✓ README.md 测试数 → 1437/✓ dsh-mneme/README.md 测试数 → 1437,两处全部一致变异检验(确认用例不是空转):
badge=1437 / comment-cjk=1431工具端到端:用仓库自己的
npm run badge:sync刷计数,输出tests=1441, files changed=2,两个 README 的六处出现一次对齐——这也验证了重构后的sync-test-badge.mjs行为不变。测试 1441 项:1440 通过 / 0 失败 / 1 跳过。
check-sync通过。与另外两条 PR 的合并关系
本 PR 与 #344(宿主 0.2 对齐)、#345(brace-expansion 钉版本)是三个独立改动,故分开提。已本地试合并验证三者互不冲突(
git merge全部自动合并,无冲突;#344+#345 合并后还实测了npm ci+npm test全绿)。Summary by CodeRabbit