feat(M1): Project Scaffold
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
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
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user