测试策略¶
这个项目的测试策略和很多普通项目不一样。
它的目标不是“把覆盖率数字堆高”,而是证明 .pygit 的状态变化在关键路径上真的可靠。
为什么这个项目不能只测 happy path¶
Git 复现项目里很多命令都不是纯函数。它们会:
- 写磁盘;
- 改对象库;
- 改 index;
- 改 refs;
- 删文件;
- 重写工作区。
因此,一个看似成功的命令并不说明系统没问题。
真正要测的是:
- 成功路径;
- 失败路径;
- 失败后仓库有没有保持一致。
为什么强调真实测试¶
这个项目要求用真实临时目录、真实 .pygit、真实对象文件、真实 index 和真实工作区文件来测。
原因是它声称实现的就是这些真实东西。
如果把这些核心行为都抽成 mock,再让测试通过,那并不能证明仓库真的工作。
测试应覆盖哪些层¶
测试至少应覆盖:
- 对象库;
- Index V2;
- refs;
- 管道命令;
- 瓷器命令;
- merge;
- pack;
- remote;
- 服务端;
- 异常与损坏场景。
只有这样,项目才能既验证局部模块,也验证完整链路。