mirror of
https://github.com/musistudio/claude-code-router.git
synced 2026-08-07 23:53:28 +00:00
69 lines
2.2 KiB
JavaScript
69 lines
2.2 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { spawnSync } from "node:child_process";
|
|
import path from "node:path";
|
|
import test from "node:test";
|
|
|
|
const cliRuntime = path.join(process.cwd(), ".test-dist", "cli", "runtime", "cli.js");
|
|
|
|
test("built CLI exposes package-owned help", () => {
|
|
const result = runCli(["--help"]);
|
|
|
|
assert.equal(result.status, 0, result.stderr);
|
|
assert.match(result.stdout, /Usage:/);
|
|
assert.match(result.stdout, /ccr serve/);
|
|
assert.match(result.stdout, /ccr <profile-name-or-id>/);
|
|
});
|
|
|
|
test("built CLI rejects invalid ports before starting services", () => {
|
|
const result = runCli(["serve", "--port", "invalid", "--no-open", "--no-gateway"]);
|
|
|
|
assert.equal(result.status, 1);
|
|
assert.match(result.stderr, /Invalid port: invalid/);
|
|
});
|
|
|
|
test("every service command exposes its package-owned command help", () => {
|
|
for (const [command, usage] of [
|
|
["start", /ccr start/],
|
|
["ui", /ccr ui/],
|
|
["serve", /ccr serve/],
|
|
["stop", /ccr stop/]
|
|
]) {
|
|
const result = runCli([command, "--help"]);
|
|
assert.equal(result.status, 0, `${command}: ${result.stderr}`);
|
|
assert.match(result.stdout, usage, command);
|
|
}
|
|
});
|
|
|
|
test("built CLI rejects missing, out-of-range, and unknown service options", () => {
|
|
const cases = [
|
|
[["serve", "--host"], /--host requires a value/],
|
|
[["serve", "--host="], /--host requires a value/],
|
|
[["serve", "--port", "0"], /Invalid port: 0/],
|
|
[["serve", "--port=65536"], /Invalid port: 65536/],
|
|
[["ui", "--unknown"], /Unknown web option: --unknown/],
|
|
[["stop", "--force"], /Unknown stop option: --force/]
|
|
];
|
|
|
|
for (const [args, error] of cases) {
|
|
const result = runCli(args);
|
|
assert.equal(result.status, 1, `${args.join(" ")}: ${result.stderr}`);
|
|
assert.match(result.stderr, error, args.join(" "));
|
|
}
|
|
});
|
|
|
|
test("built CLI requires a profile reference when no command is supplied", () => {
|
|
const result = runCli([]);
|
|
|
|
assert.equal(result.status, 2, result.stderr);
|
|
assert.match(`${result.stdout}${result.stderr}`, /ccr <profile-name-or-id>/);
|
|
});
|
|
|
|
function runCli(args) {
|
|
return spawnSync(process.execPath, [cliRuntime, ...args], {
|
|
encoding: "utf8",
|
|
env: {
|
|
...process.env,
|
|
CCR_CLI_COMMAND_NAME: "ccr"
|
|
}
|
|
});
|
|
}
|