34 lines · 978 B · TypeScript
RawDownload
import { describe, expect, test } from "vitest";import { NodeRuntime } from "../src/index.js";import { createInMemoryFileSystem } from "../src/test-runtime.js"; describe("NodeRuntime execCommand output capture", () => {	test(		"captures complete stdout when a fast process exits immediately",		async () => {			const runtime = await NodeRuntime.create({				filesystem: createInMemoryFileSystem(),			});			const expected = "x".repeat(64 * 1024);			const script = [				'const fs = require("node:fs");',				"const chunk = Buffer.alloc(4096, 120);",				"for (let i = 0; i < 16; i += 1) fs.writeSync(1, chunk);",				"process.exit(0);",			].join(" "); 			try {				for (let i = 0; i < 10; i += 1) {					const result = await runtime.execCommand("node", ["-e", script]); 					expect(result.exitCode).toBe(0);					expect(result.stdout).toBe(expected);					expect(result.stderr).toBe("");				}			} finally {				await runtime.dispose();			}		},		120_000,	);});