From 8e4b5d51b3c6bbf9047aee80e2ab47fa476764bd Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Wed, 30 Jul 2025 22:11:17 -0800 Subject: [PATCH] test: handle docker exiting with a signal (#21512) --- test/harness.ts | 16 ++++++++++++---- test/js/valkey/test-utils.ts | 3 +++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/test/harness.ts b/test/harness.ts index 474c666155..2b698e73a5 100644 --- a/test/harness.ts +++ b/test/harness.ts @@ -883,28 +883,36 @@ export async function describeWithContainer( let containerId: string; { const envs = Object.entries(env).map(([k, v]) => `-e${k}=${v}`); - const { exitCode, stdout, stderr } = Bun.spawnSync({ + const { exitCode, stdout, stderr, signalCode } = Bun.spawnSync({ cmd: [docker, "run", "--rm", "-dPit", ...envs, image, ...args], stdout: "pipe", stderr: "pipe", }); if (exitCode !== 0) { process.stderr.write(stderr); - test.skip(`docker container for ${image} failed to start`, () => {}); + test.skip(`docker container for ${image} failed to start (exit: ${exitCode})`, () => {}); + return false; + } + if (signalCode) { + test.skip(`docker container for ${image} failed to start (signal: ${signalCode})`, () => {}); return false; } containerId = stdout.toString("utf-8").trim(); } let port: number; { - const { exitCode, stdout, stderr } = Bun.spawnSync({ + const { exitCode, stdout, stderr, signalCode } = Bun.spawnSync({ cmd: [docker, "port", containerId], stdout: "pipe", stderr: "pipe", }); if (exitCode !== 0) { process.stderr.write(stderr); - test.skip(`docker container for ${image} failed to find a port`, () => {}); + test.skip(`docker container for ${image} failed to find a port (exit: ${exitCode})`, () => {}); + return false; + } + if (signalCode) { + test.skip(`docker container for ${image} failed to find a port (signal: ${signalCode})`, () => {}); return false; } const [firstPort] = stdout diff --git a/test/js/valkey/test-utils.ts b/test/js/valkey/test-utils.ts index 7d9fd69c66..0e364c6343 100644 --- a/test/js/valkey/test-utils.ts +++ b/test/js/valkey/test-utils.ts @@ -13,7 +13,10 @@ export const isEnabled = stdout: "pipe", stderr: "inherit", env: bunEnv, + timeout: 5_000, }); + if (info.exitCode !== 0) return false; + if (info.signalCode) return false; return info.stdout.toString().indexOf("Server Version:") !== -1; } catch (error) { return false;