Files
Rune-Spec/tests/cli/help.test.ts

52 lines
1.7 KiB
TypeScript

import { describe, it, expect } from "bun:test";
import { showGlobalHelp, showCommandHelp } from "../../src/cli/help.ts";
describe("showGlobalHelp", () => {
it("包含所有命令行", () => {
const output = showGlobalHelp();
expect(output).toContain("rune <命令> [参数]");
expect(output).toContain("init <工具...>");
expect(output).toContain("discuss");
expect(output).toContain("plan <变更> <文档>");
expect(output).toContain("build <名称>");
expect(output).toContain("archive <名称>");
expect(output).toContain("status");
expect(output).toContain("help");
expect(output).toContain("version");
});
it("包含示例", () => {
const output = showGlobalHelp();
expect(output).toContain("rune init opencode");
expect(output).toContain("rune plan add-login design");
expect(output).toContain("rune status");
});
it("以标题行开头", () => {
const output = showGlobalHelp();
expect(output.startsWith("Rune")).toBe(true);
});
});
describe("showCommandHelp", () => {
it("plan 命令包含用法、参数、描述、示例", () => {
const output = showCommandHelp("plan");
expect(output).toContain("rune plan <change-name> <document-name>");
expect(output).toContain("<change-name>");
expect(output).toContain("<document-name>");
expect(output).toContain("规划阶段");
expect(output).toContain("rune plan add-user-auth");
});
it("init 命令包含工具参数说明", () => {
const output = showCommandHelp("init");
expect(output).toContain("rune init <工具...>");
expect(output).toContain("opencode");
});
it("不存在的命令返回 null", () => {
const output = showCommandHelp("nonexistent");
expect(output).toBeNull();
});
});