feat: scaffold CLI and minimal issue list (task 0001)
Tracer bullet for gitea-axi: runnable npm package on axi-sdk-js with gitea-js as the sole HTTP layer, ESM on Node 20+. - issue list with --state/--limit, default fields, count line from X-Total-Count, type=issues guard, explicit empty state, and next-step suggestions - repo context detection from the git origin remote (SSH/scp/HTTPS), tea credential discovery with the three-way login-matching split, and -R/--repo and --login overrides (flag > env > auto) - token retrieval via tea login helper get: tea's login list JSON carries no token (ADR 0001 amended) - full AxiError classification table with path-based 404 split, TOON errors on stdout, exit codes 0/1/2 - test mode (GITEA_AXI_API_URL/TOKEN/REPO) suppressing subprocesses, fixture server, and vitest suites driving the CLI seam (50 tests)
This commit is contained in:
42
test/harness.ts
Normal file
42
test/harness.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { runCli } from "../src/cli.js";
|
||||
|
||||
export interface CliResult {
|
||||
stdout: string;
|
||||
exitCode: number;
|
||||
}
|
||||
|
||||
export interface CliTestOptions {
|
||||
env?: Record<string, string | undefined>;
|
||||
cwd?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Drive the CLI seam: argv in, stdout and exit code out. The environment is
|
||||
* fully explicit — nothing leaks in from the test process's own env.
|
||||
*/
|
||||
export async function runCliTest(
|
||||
argv: string[],
|
||||
options: CliTestOptions = {},
|
||||
): Promise<CliResult> {
|
||||
let stdout = "";
|
||||
const exitCode = await runCli({
|
||||
argv,
|
||||
env: options.env ?? {},
|
||||
cwd: options.cwd ?? process.cwd(),
|
||||
stdout: {
|
||||
write: (chunk: string) => {
|
||||
stdout += chunk;
|
||||
},
|
||||
},
|
||||
});
|
||||
process.exitCode = 0;
|
||||
return { stdout, exitCode };
|
||||
}
|
||||
|
||||
export function testModeEnv(apiUrl: string): Record<string, string> {
|
||||
return {
|
||||
GITEA_AXI_API_URL: apiUrl,
|
||||
GITEA_AXI_TOKEN: "test-token",
|
||||
GITEA_AXI_REPO: "testowner/testrepo",
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user