test: 调整 archive 流程测试,新增 finish 命令测试
This commit is contained in:
@@ -64,21 +64,12 @@ describe("完整 SDD 流程", () => {
|
||||
expect(buildPrompt2).toContain("已完成");
|
||||
|
||||
const archivePrompt = await assembleArchivePrompt(config, TMP_DIR, changeName);
|
||||
expect(archivePrompt).toContain("归档");
|
||||
const today = new Date().toISOString().slice(0, 10);
|
||||
const src = getChangeDir(TMP_DIR, changeName);
|
||||
const dest = join(getArchiveDir(TMP_DIR), `${today}-${changeName}`);
|
||||
await mkdir(join(TMP_DIR, ".rune", "archive"), { recursive: true });
|
||||
await rename(src, dest);
|
||||
|
||||
expect(existsSync(dest)).toBe(true);
|
||||
expect(existsSync(src)).toBe(false);
|
||||
|
||||
const archives = await scanArchives(TMP_DIR);
|
||||
expect(archives).toContain(`${today}-${changeName}`);
|
||||
expect(archivePrompt).toContain("归档阶段");
|
||||
expect(archivePrompt).toContain("user-auth");
|
||||
expect(archivePrompt).toContain("finish");
|
||||
|
||||
const postArchiveChanges = await scanChanges(TMP_DIR, config);
|
||||
expect(postArchiveChanges).toHaveLength(0);
|
||||
expect(postArchiveChanges).toHaveLength(1);
|
||||
});
|
||||
|
||||
it("多变更并行", async () => {
|
||||
@@ -220,3 +211,56 @@ describe("archive 校验", () => {
|
||||
expect(prompt).not.toContain("警告");
|
||||
});
|
||||
});
|
||||
|
||||
describe("finish 命令", () => {
|
||||
it("将变更目录移动到 archive", async () => {
|
||||
await runInit(TMP_DIR, ["opencode"]);
|
||||
const config = await loadConfig(TMP_DIR);
|
||||
|
||||
const changeName = "finish-test";
|
||||
await mkdir(getChangeDir(TMP_DIR, changeName), { recursive: true });
|
||||
await writeFile(join(getChangeDir(TMP_DIR, changeName), "design.md"), "# 设计");
|
||||
await writeFile(join(getChangeDir(TMP_DIR, changeName), "task.md"), "- [x] 全部完成");
|
||||
|
||||
const today = new Date().toISOString().slice(0, 10);
|
||||
const src = getChangeDir(TMP_DIR, changeName);
|
||||
const dest = join(getArchiveDir(TMP_DIR), `${today}-${changeName}`);
|
||||
await mkdir(getArchiveDir(TMP_DIR), { recursive: true });
|
||||
await rename(src, dest);
|
||||
|
||||
expect(existsSync(dest)).toBe(true);
|
||||
expect(existsSync(src)).toBe(false);
|
||||
|
||||
const archives = await scanArchives(TMP_DIR);
|
||||
expect(archives).toContain(`${today}-${changeName}`);
|
||||
|
||||
const changes = await scanChanges(TMP_DIR, config);
|
||||
expect(changes).toHaveLength(0);
|
||||
});
|
||||
|
||||
it("目标路径已存在时抛出错误", async () => {
|
||||
await runInit(TMP_DIR, ["opencode"]);
|
||||
|
||||
const changeName = "dup-test";
|
||||
await mkdir(getChangeDir(TMP_DIR, changeName), { recursive: true });
|
||||
await writeFile(join(getChangeDir(TMP_DIR, changeName), "design.md"), "# 设计");
|
||||
|
||||
const today = new Date().toISOString().slice(0, 10);
|
||||
const dest = join(getArchiveDir(TMP_DIR), `${today}-${changeName}`);
|
||||
await mkdir(dest, { recursive: true });
|
||||
await writeFile(join(dest, "existing.md"), "# 已有内容");
|
||||
|
||||
await expect(rename(getChangeDir(TMP_DIR, changeName), dest)).rejects.toThrow();
|
||||
});
|
||||
|
||||
it("变更目录不存在时抛出错误", async () => {
|
||||
await runInit(TMP_DIR, ["opencode"]);
|
||||
|
||||
await expect(
|
||||
rename(
|
||||
getChangeDir(TMP_DIR, "nonexistent"),
|
||||
join(getArchiveDir(TMP_DIR), "2024-01-01-nonexistent"),
|
||||
),
|
||||
).rejects.toThrow();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user