Files
opencode/packages/schema/test/v1-isolation.test.ts

27 lines
1.3 KiB
TypeScript

import { expect, test } from "bun:test"
import path from "node:path"
import { LegacyEventV1 } from "../src/legacy-event.js"
import { PermissionV1 } from "../src/permission-v1.js"
import { SessionV1 } from "../src/session-v1.js"
const isolatedLegacyEvent = await import("../src/v1/legacy-event.js")
const isolatedPermission = await import("../src/v1/permission.js")
const isolatedSession = await import("../src/v1/session.js")
test("compatibility entrypoints preserve isolated V1 schema identity", () => {
expect(LegacyEventV1).toBe(isolatedLegacyEvent.LegacyEventV1)
expect(PermissionV1).toBe(isolatedPermission.PermissionV1)
expect(SessionV1).toBe(isolatedSession.SessionV1)
})
test("current source does not import the V1 subtree directly", async () => {
const allowed = new Set(["filesystem-v1.ts", "legacy-event.ts", "permission-v1.ts", "session-v1.ts"])
const files = [...new Bun.Glob("*.ts").scanSync(path.join(import.meta.dir, "../src"))].filter(
(file) => !allowed.has(file),
)
const directImports = await Promise.all(
files.map(async (file) => ({ file, source: await Bun.file(new URL(`../src/${file}`, import.meta.url)).text() })),
).then((values) => values.filter((value) => value.source.includes('from "./v1/')))
expect(directImports).toEqual([])
})