fix(e2e): keep parallels json output parseable

This commit is contained in:
Vincent Koc
2026-06-04 05:01:06 +02:00
parent 59768909ba
commit 8c74fd4e23
7 changed files with 67 additions and 23 deletions

View File

@@ -26,6 +26,7 @@ import {
resolveWindowsProviderAuth,
run,
shellQuote,
withProgressOnStderr,
} from "../../scripts/e2e/parallels/common.ts";
import { resolveHostCommandInvocation } from "../../scripts/e2e/parallels/host-command.ts";
import { testing as hostServerTesting } from "../../scripts/e2e/parallels/host-server.ts";
@@ -327,6 +328,26 @@ describe("Parallels smoke model selection", () => {
expect(retained).toBe(`${"a".repeat(2)}${"b".repeat(10)}`);
});
it("keeps JSON-mode progress off stdout", async () => {
const stdoutWrite = vi.spyOn(process.stdout, "write").mockImplementation(() => true);
const stderrWrite = vi.spyOn(process.stderr, "write").mockImplementation(() => true);
try {
await withProgressOnStderr(async () => {
const { say } = await import("../../scripts/e2e/parallels/common.ts");
say("progress");
process.stdout.write('{"ok":true}\n');
});
expect(stdoutWrite).toHaveBeenCalledTimes(1);
expect(stdoutWrite).toHaveBeenCalledWith('{"ok":true}\n');
expect(JSON.parse(String(stdoutWrite.mock.calls[0]?.[0]))).toEqual({ ok: true });
expect(stderrWrite).toHaveBeenCalledWith("==> progress\n");
} finally {
stdoutWrite.mockRestore();
stderrWrite.mockRestore();
}
});
it("waits for host artifact server exit after SIGKILL before stop resolves", async () => {
vi.useFakeTimers();
try {