import { describe, it, expect } from "bun:test"; import { showGlobalHelp, showCommandHelp } from "../../src/cli/help.ts"; describe("showGlobalHelp", () => { it("默认前缀时包含 rune", () => { const output = showGlobalHelp(); expect(output).toContain("rune <命令> [参数]"); expect(output).toContain("rune init opencode"); }); it("自定义前缀时使用传入前缀", () => { const output = showGlobalHelp("bunx @lanyuanxiaoyao/rune"); expect(output).toContain("bunx @lanyuanxiaoyao/rune <命令> [参数]"); expect(output).toContain("bunx @lanyuanxiaoyao/rune init opencode"); }); it("包含所有命令行", () => { const output = showGlobalHelp("rune"); expect(output).toContain("init <工具...>"); expect(output).toContain("discuss"); expect(output).toContain("create <变更>"); expect(output).toContain("plan <变更> <文档>"); expect(output).toContain("build <名称>"); expect(output).toContain("archive <名称>"); expect(output).toContain("finish <名称>"); expect(output).toContain("status"); expect(output).toContain("help"); expect(output).toContain("version"); }); it("以标题行开头", () => { const output = showGlobalHelp("rune"); expect(output.startsWith("Rune")).toBe(true); }); }); describe("showCommandHelp", () => { it("plan 命令包含用法、参数、描述、示例", () => { const output = showCommandHelp("plan", "bunx @lanyuanxiaoyao/rune"); expect(output).toContain("bunx @lanyuanxiaoyao/rune plan "); expect(output).toContain(""); expect(output).toContain(""); expect(output).toContain("规划阶段"); expect(output).toContain("bunx @lanyuanxiaoyao/rune plan add-user-auth"); }); it("init 命令包含工具参数说明", () => { const output = showCommandHelp("init", "rune"); expect(output).toContain("rune init <工具...>"); expect(output).toContain("opencode"); }); it("create 命令包含变更名参数", () => { const output = showCommandHelp("create", "rune"); expect(output).toContain("rune create "); expect(output).toContain("变更名称"); expect(output).toContain("rune create add-user-auth"); }); it("finish 命令包含归档变更说明", () => { const output = showCommandHelp("finish", "rune"); expect(output).toContain("rune finish "); expect(output).toContain("归档变更"); expect(output).toContain("将变更目录"); }); it("不存在的命令返回 null", () => { const output = showCommandHelp("nonexistent", "rune"); expect(output).toBeNull(); }); });