Files
BakNRet/docs/adr/0006-testing-strategy.md
T
Shuery 3a3a57a6a1 docs: 决策记录 8 条、变更日志、README 的验收与口令两节
0007 与 0008 是本次改造新产生的决策(原计划 6 条)。它们同样满足「后人会问为什么」:把运行锁改成互斥体、或给库里 27 个函数补上 SupportsShouldProcess,都是看起来更规范的错法。

CHANGELOG.md:把 README 里那 33 行「相对旧版修了什么」整节搬过去,并补上本次改造的记录(11 条修复 + 6 条结构与规范,每条修复都写明现象与现状)。README 那一节换成指针。

README 新增两节:「验收与静态分析」(六个层次、Run-RealSmoke 为什么独立存在、以及那 6 条格式规则默认 Disabled 这个容易漏掉的事实);「口令放在哪里」(默认留空不是遗漏,附迁移与验证命令)。

.markdownlint.json 照 PowerShell 主仓库的实践(default true、行长 240),只把 MD024 从关闭改成「仅同级不重复」,因为变更日志需要重复标题。顺带按 .editorconfig 把 .md 的 BOM 去掉。
2026-09-27 10:01:54 +08:00

20 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 测试双轨:Pester 是单元面,零依赖套件是冒烟与 5.1 入口
两套套件一度覆盖同一批行为(`tests/Run-Tests.ps1` 96 个用例与 Pester 的 129 个 `It` 逐节
对应)。留下两套完整副本是纯维护税,但**只留 Pester 也不行**:`.tools/` 是 gitignore 的,
一台新克隆、没网、或只有 5.1 的机器上 `Install-TestDependencies.ps1` 拉不到 Pester。
分工:
- **Pester 套件**(`tests/*.Tests.ps1`)= 单元面,用 `Mock` / `InModuleScope` 测私有函数。
- **零依赖套件**(`tests/Run-Tests.ps1`)= 关键冒烟:清单与名录解析、归档命名、排除翻译、
manifest 往返、原子写与运行锁。只要 PowerShell 与 7z,两个版本都能跑。
- **`tests/Run-E2E.ps1`** = 端到端:真的调用 7z 打包、删源、恢复、逐字节对拍。
- **`tests/Run-RealSmoke.ps1`** = 拿**真实清单与真实归档**跑只读冒烟(`-DryRun` /
`-VerifyOnly`,并用 manifest 的 SHA256 证明一个字节都没写)。
- **`test.ps1`** = 唯一入口,把上面几层在 7 与 5.1 上各跑一遍。
最后那个"真实清单冒烟"不是锦上添花:清单里 24 条把方向标记贴在目标上(`+WindowsTerminal`),
而解析器当时只认独立记号 —— 于是那些条目被当成"名叫 +WindowsTerminal 的软件名"、静默记成
`missing-source` 跳过,**备份照常退出 0,所有夹具测试全绿**。只有拿真实清单跑一遍才看得见。