From d72a7d4084b5e49d4e3ec103bae5551680d232e4 Mon Sep 17 00:00:00 2001 From: "paseo-bot[bot]" <266920839+paseo-bot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 14:32:33 +0200 Subject: [PATCH] test(codex): reproduce unhandled stdin EPIPE on startup --- .../providers/codex/stdin-close.local.test.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 packages/server/src/server/agent/providers/codex/stdin-close.local.test.ts diff --git a/packages/server/src/server/agent/providers/codex/stdin-close.local.test.ts b/packages/server/src/server/agent/providers/codex/stdin-close.local.test.ts new file mode 100644 index 0000000000..3a92cf273c --- /dev/null +++ b/packages/server/src/server/agent/providers/codex/stdin-close.local.test.ts @@ -0,0 +1,19 @@ +import { spawn } from "node:child_process"; +import { once } from "node:events"; +import { test, expect } from "vitest"; +import { createTestLogger } from "../../../../test-utils/test-logger.js"; +import { CodexAppServerClient } from "./app-server-transport.js"; + +test("a provider that closes stdin rejects initialization without an uncaught stream error", async () => { + const child = spawn("/bin/sh", ["-c", "exec 0<&-; printf READY; sleep 0.2; exit 86"], { + stdio: "pipe", + }); + const ready = once(child.stdout, "data"); + const client = new CodexAppServerClient(child, createTestLogger()); + try { + await ready; + await expect(client.request("initialize", {})).rejects.toThrow(/86/); + } finally { + await client.dispose(); + } +});