feat(S-104): Add stderr-length and exit-code correlation diagnostics
This commit is contained in:
@@ -320,4 +320,46 @@ describe("executePrompt", () => {
|
||||
assert.strictEqual(debugInfos[0].exitCode, null);
|
||||
assert.strictEqual(debugInfos[0].exitSignal, null);
|
||||
});
|
||||
|
||||
it("reports noisySuccess=true when stderr is non-empty and exitCode is 0", async () => {
|
||||
const scenarios = new Map<string, MockScenario>([
|
||||
["codex exec --yolo hello", { stdout: "ok", stderr: "warn", exitCode: 0 }],
|
||||
]);
|
||||
const debugInfos: any[] = [];
|
||||
await executePrompt("codex", "hello", {
|
||||
spawn: mockSpawn(scenarios),
|
||||
existsSync: () => true,
|
||||
debug: true,
|
||||
onDebug: (info) => debugInfos.push(info),
|
||||
});
|
||||
assert.strictEqual(debugInfos[0].noisySuccess, true);
|
||||
});
|
||||
|
||||
it("reports noisySuccess=false when stderr is empty and exitCode is 0", async () => {
|
||||
const scenarios = new Map<string, MockScenario>([
|
||||
["codex exec --yolo hello", { stdout: "ok", stderr: "", exitCode: 0 }],
|
||||
]);
|
||||
const debugInfos: any[] = [];
|
||||
await executePrompt("codex", "hello", {
|
||||
spawn: mockSpawn(scenarios),
|
||||
existsSync: () => true,
|
||||
debug: true,
|
||||
onDebug: (info) => debugInfos.push(info),
|
||||
});
|
||||
assert.strictEqual(debugInfos[0].noisySuccess, false);
|
||||
});
|
||||
|
||||
it("reports noisySuccess=false when exitCode is non-zero even if stderr is non-empty", async () => {
|
||||
const scenarios = new Map<string, MockScenario>([
|
||||
["codex exec --yolo fail", { stdout: "", stderr: "error", exitCode: 1 }],
|
||||
]);
|
||||
const debugInfos: any[] = [];
|
||||
await executePrompt("codex", "fail", {
|
||||
spawn: mockSpawn(scenarios),
|
||||
existsSync: () => true,
|
||||
debug: true,
|
||||
onDebug: (info) => debugInfos.push(info),
|
||||
});
|
||||
assert.strictEqual(debugInfos[0].noisySuccess, false);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user