Skip to content
Source
Sign inSign up

stdio.test.ts

31 lines1.1 KB

1import { assert, describe, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";
3import * as PlatformError from "effect/PlatformError";
4import { ChildProcessSpawner } from "effect/process";
5​
6import * as AcpError from "../errors.ts";
7import { makeTerminationError } from "./stdio.ts";
8​
9describe("ACP child process termination", () => {
10 it.effect("retains the process identifier and exact exit-status cause", () =>
11 Effect.gen(function* () {
12 const rootCause = new Error("private process diagnostics");
13 const cause = PlatformError.systemError({
14 _tag: "Unknown",
15 module: "ChildProcess",
16 method: "exitCode",
17 cause: rootCause,
18 });
19 const error = yield* makeTerminationError({
20 pid: ChildProcessSpawner.ProcessId(42),
21 exitCode: Effect.fail(cause),
22 });
23​
24 assert.instanceOf(error, AcpError.AcpTransportError);
25 assert.equal(error.pid, 42);
26 assert.strictEqual(error.cause, cause);
27 assert.equal(error.message, "ACP transport operation read-process-exit-status failed.");
28 assert.notInclude(error.message, rootCause.message);
29 }),
30 );
31});