test(integration): skip qwen serve streaming suite under container sandbox (#5655)

The qwen serve streaming integration tests back the model side with a fake
OpenAI server bound to the host's 127.0.0.1. Under QWEN_SANDBOX=docker/podman
the daemon's `qwen --acp` child runs inside the container and cannot reach the
host loopback, so every prompt turn fails with "Connection error" — the
permission fan-out and Last-Event-ID flows never fire and the suite fails
deterministically (Release "Integration Tests (Docker)" job).

Skip the suite under any container sandbox, matching the existing
qwen-serve-baseline / acp-integration / cron-tools precedent. The no-AK smoke
job (sandbox:none) still runs the full suite, so coverage is unchanged.
This commit is contained in:
易良 2026-06-22 23:00:23 +08:00 committed by GitHub
parent 9a63d565aa
commit e9afd52785
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -52,7 +52,21 @@ const REPO_ROOT = path.resolve(__dirname, '../..');
// child-process crashes for the SIGKILL → `session_died` test, and those
// binaries are POSIX-only. A Windows-equivalent (`taskkill`) would need
// different test scaffolding.
const SKIP = process.platform === 'win32';
//
// Container sandbox (QWEN_SANDBOX=docker/podman): the model side is a fake
// OpenAI server bound to the host's 127.0.0.1, but under the sandbox the
// daemon's `qwen --acp` child runs inside the container and cannot reach the
// host loopback — every prompt turn fails with "Connection error", so the
// permission fan-out and Last-Event-ID flows below never fire. (The host
// `pgrep -P` in the SIGKILL test can't see the in-container PID either.) Skip
// under any container sandbox, matching the existing qwen-serve-baseline /
// acp-integration / cron-tools precedent.
const SKIP =
process.platform === 'win32' ||
Boolean(
process.env['QWEN_SANDBOX'] &&
process.env['QWEN_SANDBOX']!.toLowerCase() !== 'false',
);
const describePOSIX = SKIP ? describe.skip : describe;
let daemon: ChildProcess;