64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
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("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 <change-name> <document-name>");
|
|
expect(output).toContain("<change-name>");
|
|
expect(output).toContain("<document-name>");
|
|
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 <change-name>");
|
|
expect(output).toContain("变更名称");
|
|
expect(output).toContain("rune create add-user-auth");
|
|
});
|
|
|
|
it("不存在的命令返回 null", () => {
|
|
const output = showCommandHelp("nonexistent", "rune");
|
|
expect(output).toBeNull();
|
|
});
|
|
});
|