67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
import { describe, it } from "node:test";
|
|
import assert from "node:assert";
|
|
import { main, discoverClients, execClient } from "../src/cli.js";
|
|
import { ClientNotFoundError } from "../src/types.js";
|
|
|
|
describe("discoverClients", () => {
|
|
it("returns all three configured clients", () => {
|
|
const clients = discoverClients();
|
|
assert.strictEqual(clients.length, 3);
|
|
const names = clients.map((c) => c.name);
|
|
assert.deepStrictEqual(names, ["codex", "claude", "opencode"]);
|
|
});
|
|
|
|
it("returns ClientInfo with found boolean", () => {
|
|
const clients = discoverClients();
|
|
for (const c of clients) {
|
|
assert.strictEqual(typeof c.found, "boolean");
|
|
}
|
|
});
|
|
});
|
|
|
|
describe("main", () => {
|
|
it("returns 0 for --help", async () => {
|
|
const code = await main(["node", "cli.ts", "--help"]);
|
|
assert.strictEqual(code, 0);
|
|
});
|
|
|
|
it("returns 0 for list", async () => {
|
|
const code = await main(["node", "cli.ts", "list"]);
|
|
assert.strictEqual(code, 0);
|
|
});
|
|
|
|
it("returns 0 for list --json", async () => {
|
|
const code = await main(["node", "cli.ts", "list", "--json"]);
|
|
assert.strictEqual(code, 0);
|
|
});
|
|
|
|
it("returns 1 for exec without --client", async () => {
|
|
const code = await main(["node", "cli.ts", "exec", "--prompt", "hello"]);
|
|
assert.strictEqual(code, 1);
|
|
});
|
|
|
|
it("returns 1 for exec without --prompt", async () => {
|
|
const code = await main(["node", "cli.ts", "exec", "--client", "codex"]);
|
|
assert.strictEqual(code, 1);
|
|
});
|
|
|
|
it("returns 1 for unknown command", async () => {
|
|
const code = await main(["node", "cli.ts", "bogus"]);
|
|
assert.strictEqual(code, 1);
|
|
});
|
|
|
|
it("returns 1 when no command is given", async () => {
|
|
const code = await main(["node", "cli.ts"]);
|
|
assert.strictEqual(code, 1);
|
|
});
|
|
});
|
|
|
|
describe("execClient", () => {
|
|
it("throws ClientNotFoundError when client path is empty", () => {
|
|
assert.throws(
|
|
() => execClient("codex", "test prompt", ""),
|
|
(err: unknown) => err instanceof ClientNotFoundError
|
|
);
|
|
});
|
|
});
|