Add repo-memory CLI test docs
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
# Repo Memory `add` Test Plan Index
|
||||
|
||||
## Case Files
|
||||
|
||||
| Case Slug | File | Coverage Note |
|
||||
| --- | --- | --- |
|
||||
| `add-registers-repo-and-entry` | [add-registers-repo-and-entry.md](./add-registers-repo-and-entry.md) | auto-bootstraps schema, registers the repo, and creates one durable entry |
|
||||
| `add-updates-existing-entry-on-same-kind-and-key` | [add-updates-existing-entry-on-same-kind-and-key.md](./add-updates-existing-entry-on-same-kind-and-key.md) | reuses the same entry id and records an update event on repeated upsert |
|
||||
| `add-failed-validation-still-registers-repo` | [add-failed-validation-still-registers-repo.md](./add-failed-validation-still-registers-repo.md) | failed validation still leaves a zero-entry repo row visible through `repos` |
|
||||
@@ -0,0 +1,32 @@
|
||||
# Case: `add-failed-validation-still-registers-repo`
|
||||
|
||||
## 用例意义
|
||||
|
||||
验证 `add` 即使因为 entry 校验失败退出,仍会留下 repo 注册副作用,这个行为需要被明确记录。
|
||||
|
||||
## 前置条件
|
||||
|
||||
- `TMPDIR/repo` 是一个已提交初始 commit 的 Git 仓库
|
||||
- `TMPDIR/repo-memory.db` 尚不存在
|
||||
|
||||
## 输入
|
||||
|
||||
```bash
|
||||
repo-memory add --db TMPDIR/repo-memory.db --repo TMPDIR/repo --summary "missing kind"
|
||||
repo-memory repos --db TMPDIR/repo-memory.db
|
||||
repo-memory list --db TMPDIR/repo-memory.db --repo repo
|
||||
```
|
||||
|
||||
## 预期输出
|
||||
|
||||
- `add` 退出码为 `1`
|
||||
- `add` 的 stderr 包含 `kind is required`
|
||||
- `repos` 退出码为 `0`
|
||||
- `repos` 输出包含 `TMPDIR/repo (0 entries, updated `
|
||||
- `list` 输出 `no entries`
|
||||
|
||||
## 断言结论
|
||||
|
||||
- `add` 会先初始化数据库并注册 repo,再进入 entry 级校验
|
||||
- 失败的 `add` 不会创建 entry,但会留下可见的零条目 repo 记录
|
||||
- 后续测试或调用方如果依赖“失败无副作用”,必须显式考虑这个例外
|
||||
@@ -0,0 +1,31 @@
|
||||
# Case: `add-registers-repo-and-entry`
|
||||
|
||||
## 用例意义
|
||||
|
||||
验证 `add` 可以在新数据库路径上自动初始化 schema、注册 repo,并写入一条可枚举的 durable knowledge entry。
|
||||
|
||||
## 前置条件
|
||||
|
||||
- `TMPDIR/repo` 是一个已提交初始 commit 的 Git 仓库
|
||||
- 证据文件 `TMPDIR/repo/app/app/src/main/java/foo/AITask.java` 已存在
|
||||
- `TMPDIR/repo-memory.db` 尚不存在
|
||||
|
||||
## 输入
|
||||
|
||||
```bash
|
||||
repo-memory add --db TMPDIR/repo-memory.db --repo TMPDIR/repo --kind term --key AITask --summary "Plan 内嵌任务结构,不是独立表" --status confirmed --source-path TMPDIR/repo/app/app/src/main/java/foo/AITask.java --source-line 42 --alias "AI Task" --dep file:TMPDIR/repo/app/app/src/main/java/foo/AITask.java:hard
|
||||
repo-memory list --db TMPDIR/repo-memory.db --repo repo --kind term --status confirmed
|
||||
```
|
||||
|
||||
## 预期输出
|
||||
|
||||
- `add` 退出码为 `0`
|
||||
- `add` 输出 `upserted entry 1 (term:AITask)`
|
||||
- `list` 输出包含 `#1 [repo] term:AITask [confirmed]`
|
||||
- `list` 输出包含摘要 `Plan 内嵌任务结构,不是独立表`
|
||||
|
||||
## 断言结论
|
||||
|
||||
- `add` 会自动完成 schema bootstrap 与 repo 注册,不要求先单独跑 `init`
|
||||
- 新增 entry 立即可被 `list` 读取
|
||||
- 证据路径、别名、依赖等增强字段不会阻止主写入流程
|
||||
@@ -0,0 +1,35 @@
|
||||
# Case: `add-updates-existing-entry-on-same-kind-and-key`
|
||||
|
||||
## 用例意义
|
||||
|
||||
验证同一 repo 下相同 `kind + key + scope` 再次执行 `add` 时会更新既有 entry,而不是生成重复记录。
|
||||
|
||||
## 前置条件
|
||||
|
||||
- `TMPDIR/repo` 是一个已提交初始 commit 的 Git 仓库
|
||||
- 空数据库已完成 `init`
|
||||
- 已执行过一次:
|
||||
|
||||
```bash
|
||||
repo-memory add --db TMPDIR/repo-memory.db --repo TMPDIR/repo --kind term --key AITask --summary "初版摘要" --status draft
|
||||
```
|
||||
|
||||
## 输入
|
||||
|
||||
```bash
|
||||
repo-memory add --db TMPDIR/repo-memory.db --repo TMPDIR/repo --kind term --key AITask --summary "修订后的摘要" --status confirmed --alias "AI Task"
|
||||
repo-memory events --db TMPDIR/repo-memory.db --id 1
|
||||
repo-memory list --db TMPDIR/repo-memory.db --repo repo --kind term
|
||||
```
|
||||
|
||||
## 预期输出
|
||||
|
||||
- 第二次 `add` 仍输出 `upserted entry 1 (term:AITask)`
|
||||
- `events` 中同时包含 `updated (draft -> confirmed)` 与更早的 `created (- -> draft)`
|
||||
- `list` 中该 entry 的摘要为 `修订后的摘要`
|
||||
|
||||
## 断言结论
|
||||
|
||||
- `add` 的核心语义是 upsert,而不是 append-only create
|
||||
- 更新会保留同一 entry id,同时追加历史事件
|
||||
- 最新摘要、状态、别名会覆盖旧值而不是与旧值并存
|
||||
Reference in New Issue
Block a user