feat(S-102): Test-drive and implement --timeout flag, config layering, and default in

This commit is contained in:
2026-05-19 19:39:46 -05:00
parent 5375c83c77
commit dc3fe8d6eb
6 changed files with 182 additions and 15 deletions
+12 -6
View File
@@ -39,6 +39,8 @@ describe("main", () => {
stdout: "output",
stderr: "",
exitCode: 0,
client: "codex",
durationMs: 42,
};
it("returns 0 for --help and prints usage", async () => {
@@ -152,6 +154,8 @@ describe("main", () => {
stdout: "hello-out",
stderr: "hello-err",
exitCode: 0,
client: "codex",
durationMs: 42,
}),
stdoutWrite: (chunk) => stdoutChunks.push(chunk),
stderrWrite: (chunk) => stderrChunks.push(chunk),
@@ -259,7 +263,7 @@ describe("main", () => {
return mockResult;
},
resolveClient: () => "claude",
resolveConfig: () => ({ paths: {} }),
resolveConfig: () => ({ paths: {}, timeout: 600_000 }),
}
);
assert.strictEqual(code, 0);
@@ -286,7 +290,7 @@ describe("main", () => {
return mockResult;
},
resolveClient: () => "codex",
resolveConfig: () => ({ paths: {} }),
resolveConfig: () => ({ paths: {}, timeout: 600_000 }),
}
);
assert.strictEqual(code, 0);
@@ -310,7 +314,7 @@ describe("main", () => {
return mockResult;
},
resolveClient: (_p, cfg) => cfg?.client ?? null,
resolveConfig: () => ({ paths: {}, defaultClient: "claude" }),
resolveConfig: () => ({ paths: {}, defaultClient: "claude", timeout: 600_000 }),
}
);
assert.strictEqual(code, 0);
@@ -329,7 +333,7 @@ describe("main", () => {
detectClients: () => mockClients,
executePrompt: async () => mockResult,
resolveClient: () => null,
resolveConfig: () => ({ paths: {} }),
resolveConfig: () => ({ paths: {}, timeout: 600_000 }),
}
);
assert.strictEqual(code, 1);
@@ -351,7 +355,7 @@ describe("main", () => {
throw new ClientNotFoundError("claude");
},
resolveClient: () => "claude",
resolveConfig: () => ({ paths: {} }),
resolveConfig: () => ({ paths: {}, timeout: 600_000 }),
}
);
assert.strictEqual(code, 1);
@@ -388,9 +392,11 @@ describe("main", () => {
stdout: "done",
stderr: "",
exitCode: 0,
client: "codex",
durationMs: 42,
}),
resolveClient: () => "codex",
resolveConfig: () => ({ paths: {} }),
resolveConfig: () => ({ paths: {}, timeout: 600_000 }),
stdoutWrite: (chunk) => stdoutChunks.push(chunk),
}
);