Skip to content

[r2cn-测试任务][libra]为 init 子命令补充异常路径测试 #148

@jikongabc

Description

@jikongabc

任务描述

init 是 libra 的基础命令之一,其在异常输入和错误环境下的行为对用户体验和仓库安全非常重要。
目前已有的测试主要覆盖正常初始化流程,对部分错误/边界场景的验证不足。

本任务旨在为 init 命令补充异常路径相关的测试用例,确保在初始化失败时能够返回合理的错误信息,
且不会产生不一致或损坏的仓库状态。

拟覆盖的异常场景包括(但不限于):

  1. 初始化路径指向普通文件而非目录
  2. 父目录不可写,无法创建仓库目录
  3. 已存在仓库目录时,使用 --bare 进行初始化的行为

通过这些测试,可以明确 init 命令在非法输入和权限受限环境下的预期行为。

实现方案

本测试任务不修改现有 init 命令实现,仅通过新增测试用例来验证其在异常和关键初始化行为下的正确性。
测试统一放置于 tests/command/init_test.rs,并遵循现有测试风格,使用 tokio::test + serial 保证环境隔离。

  1. 父目录不可写场景

    • 在 Unix 环境下,创建临时目录并移除写权限;
    • 尝试在该目录下执行 init
    • 断言初始化失败,并返回 PermissionDenied 错误。
  2. hooks / pre-commit 文件生成

    • 在空目录中执行 init
    • 验证 .libra/hooks/pre-commit.sh 文件存在;
    • 确保该文件非空,说明初始化时正确写入了默认 hook。
  3. 默认分支与 HEAD 行为

    • 在未指定初始分支的情况下执行 init
    • 读取当前 HEAD 状态;
    • 验证 HEAD 指向一个有效的分支名称。

通过以上测试用例,可以覆盖 init 命令在权限受限环境、初始化产物完整性以及默认分支行为等关键路径,
增强对异常场景和基础行为的回归保障。

参考

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions