44 lines · 1.4 KB · TypeScript
RawDownload
import { assert, expect, it } from "@effect/vitest";import { HostProcessPlatform } from "@t3tools/shared/hostProcess";import * as Cause from "effect/Cause";import * as Effect from "effect/Effect";import * as Exit from "effect/Exit"; import * as BunPtyAdapter from "./BunPtyAdapter.ts"; it("describes unavailable Bun PTY operations structurally", () => {  const error = new BunPtyAdapter.BunPtyOperationUnavailableError({    operation: "resize",    pid: 42,  });   expect(error).toMatchObject({    _tag: "BunPtyOperationUnavailableError",    operation: "resize",    pid: 42,  });  expect(error.message).toBe("Bun PTY resize is unavailable for process 42.");}); it.effect("reports unsupported platforms with a structured startup defect", () =>  Effect.gen(function* () {    const exit = yield* BunPtyAdapter.make().pipe(      Effect.provideService(HostProcessPlatform, "win32"),      Effect.exit,    );     expect(Exit.isFailure(exit)).toBe(true);    if (Exit.isFailure(exit)) {      expect(Cause.hasDies(exit.cause)).toBe(true);      const error = Cause.squash(exit.cause);      assert.instanceOf(error, BunPtyAdapter.BunPtyUnsupportedPlatformError);      expect(error).toMatchObject({        _tag: "BunPtyUnsupportedPlatformError",        platform: "win32",      });      expect(error.message).toBe(        "Bun PTY terminal support is unavailable on win32. Please use Node.js (e.g. by running `npx t3`) instead.",      );    }  }),);