-
Notifications
You must be signed in to change notification settings - Fork 53
Open
Labels
Description
任务描述
init 是 libra 的基础命令之一,其在异常输入和错误环境下的行为对用户体验和仓库安全非常重要。
目前已有的测试主要覆盖正常初始化流程,对部分错误/边界场景的验证不足。
本任务旨在为 init 命令补充异常路径相关的测试用例,确保在初始化失败时能够返回合理的错误信息,
且不会产生不一致或损坏的仓库状态。
拟覆盖的异常场景包括(但不限于):
- 初始化路径指向普通文件而非目录
- 父目录不可写,无法创建仓库目录
- 已存在仓库目录时,使用
--bare进行初始化的行为
通过这些测试,可以明确 init 命令在非法输入和权限受限环境下的预期行为。
实现方案
本测试任务不修改现有 init 命令实现,仅通过新增测试用例来验证其在异常和关键初始化行为下的正确性。
测试统一放置于 tests/command/init_test.rs,并遵循现有测试风格,使用 tokio::test + serial 保证环境隔离。
-
父目录不可写场景
- 在 Unix 环境下,创建临时目录并移除写权限;
- 尝试在该目录下执行
init; - 断言初始化失败,并返回
PermissionDenied错误。
-
hooks / pre-commit 文件生成
- 在空目录中执行
init; - 验证
.libra/hooks/pre-commit.sh文件存在; - 确保该文件非空,说明初始化时正确写入了默认 hook。
- 在空目录中执行
-
默认分支与 HEAD 行为
- 在未指定初始分支的情况下执行
init; - 读取当前
HEAD状态; - 验证
HEAD指向一个有效的分支名称。
- 在未指定初始分支的情况下执行
通过以上测试用例,可以覆盖 init 命令在权限受限环境、初始化产物完整性以及默认分支行为等关键路径,
增强对异常场景和基础行为的回归保障。
参考
- 已检查当前 open / closed 的 pre-task Issue,未发现与本任务重复的测试项
- r2cn pre-task 说明:https://r2cn.dev/docs/student/pre-task