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 去掉。
This commit is contained in:
Shuery committed 2026-09-27 10:01:54 +08:00
1 parent 42f02d0eca
commit 3a3a57a6a1
12 files changed
+282 -33

No files matched your search

+19
View File
@@ -0,0 +1,19 @@
# 测试双轨: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,所有夹具测试全绿**。只有拿真实清单跑一遍才看得见。