Files
bun.sh/test/js/bun/spawn/spawnSync.test.ts

44 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "bun:test";
import { bunEnv, bunExe, isPosix } from "harness";
import { join } from "path";
describe("spawnSync", () => {
it("should throw a RangeError if timeout is less than 0", () => {
expect(() =>
Bun.spawnSync({
cmd: [bunExe()],
env: bunEnv,
timeout: -1,
}),
).toThrowErrorMatchingInlineSnapshot(
`"The value of "timeout" is out of range. It must be >= 0 and <= 9007199254740991. Received -1"`,
);
});
for (const ioOption of ["ignore", "pipe", "inherit"]) {
it(`should not set a timeout if timeout is 0 and ${ioOption} is used for stdout`, () => {
const start = performance.now();
const result = Bun.spawnSync({
cmd: [bunExe(), "-e", "setTimeout(() => {}, 5)"],
env: bunEnv,
stdin: "ignore",
stdout: ioOption,
stderr: ioOption,
timeout: 0,
maxBuffer: 0,
});
const end = performance.now();
expect(end - start).toBeLessThan(1000);
expect(!!result.exitedDueToTimeout).toBe(false);
expect(result.exitCode).toBe(0);
});
}
it.skipIf(process.platform !== "linux")("should use memfd when possible", () => {
expect([join(import.meta.dir, "spawnSync-memfd-fixture.ts")]).toRun();
});
it.skipIf(!isPosix)("should use spawnSync optimizations when possible", () => {
expect([join(import.meta.dir, "spawnSync-counters-fixture.ts")]).toRun();
});
});