mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-23 10:45:33 -04:00
75 lines
2.1 KiB
TypeScript
75 lines
2.1 KiB
TypeScript
import { expect, test } from "bun:test"
|
|
import { ConfigProvider, Effect, FileSystem, Layer } from "effect"
|
|
import { DriveManifest } from "../src/manifest"
|
|
|
|
test("loads and validates a Drive manifest through Effect services", async () => {
|
|
const manifest = await Effect.runPromise(
|
|
DriveManifest.resolve().pipe(
|
|
Effect.provide(
|
|
Layer.merge(
|
|
FileSystem.layerNoop({
|
|
readFileString: () =>
|
|
Effect.succeed(
|
|
JSON.stringify({
|
|
endpoints: {
|
|
ui: "ws://127.0.0.1:41000",
|
|
backend: "ws://127.0.0.1:41050",
|
|
},
|
|
viewport: { cols: 120, rows: 50 },
|
|
recording: { timeline: "/tmp/drive/timeline.jsonl" },
|
|
}),
|
|
),
|
|
}),
|
|
ConfigProvider.layer(
|
|
ConfigProvider.fromUnknown({
|
|
OPENCODE_DRIVE: "test-instance",
|
|
DRIVE_REGISTRY_DIR: "/tmp/drive",
|
|
}),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
)
|
|
|
|
expect(manifest).toEqual({
|
|
endpoints: {
|
|
ui: "ws://127.0.0.1:41000",
|
|
backend: "ws://127.0.0.1:41050",
|
|
},
|
|
viewport: { cols: 120, rows: 50 },
|
|
recording: { timeline: "/tmp/drive/timeline.jsonl" },
|
|
})
|
|
})
|
|
|
|
test("reports schema-invalid manifests as typed decode failures", async () => {
|
|
const error = await Effect.runPromise(
|
|
DriveManifest.resolve().pipe(
|
|
Effect.flip,
|
|
Effect.provide(
|
|
Layer.merge(
|
|
FileSystem.layerNoop({
|
|
readFileString: () =>
|
|
Effect.succeed(
|
|
JSON.stringify({
|
|
endpoints: {
|
|
ui: "https://example.com",
|
|
backend: "ws://127.0.0.1:41050",
|
|
},
|
|
}),
|
|
),
|
|
}),
|
|
ConfigProvider.layer(
|
|
ConfigProvider.fromUnknown({
|
|
OPENCODE_DRIVE: "test-instance",
|
|
DRIVE_REGISTRY_DIR: "/tmp/drive",
|
|
}),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
)
|
|
|
|
expect(error).toBeInstanceOf(DriveManifest.ResolveError)
|
|
expect(error.reason).toBe("decode")
|
|
})
|