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.", ); } }),);
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.",
);
}
}),
);