mirror of
https://github.com/anomalyco/opencode.git
synced 2026-11-08 09:37:47 +03:00
33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import path from "node:path"
|
|
import { globalNames } from "../src/interpreter/globals.js"
|
|
import { VmEngine } from "../src/vm/index.js"
|
|
|
|
const fixture = path.join(import.meta.dir, "fixtures/engine-modules.ts")
|
|
|
|
const run = async (...args: Array<string>) => {
|
|
const child = Bun.spawn([process.execPath, fixture, ...args], { stdout: "pipe", stderr: "inherit" })
|
|
const output = await new Response(child.stdout).text()
|
|
expect(await child.exited).toBe(0)
|
|
return JSON.parse(output) as { result: unknown; vm: Array<string> }
|
|
}
|
|
|
|
describe("engines", () => {
|
|
// `CodeMode.make` checks extension globals against one list, so both engines must bind the same names.
|
|
test("bind the same global names", () => {
|
|
expect([...VmEngine.globalNames].sort()).toEqual([...globalNames].sort())
|
|
})
|
|
|
|
test("the default engine loads no VM code", async () => {
|
|
const output = await run()
|
|
expect(output.result).toEqual({ ok: true, value: [2, 4], toolCalls: [] })
|
|
expect(output.vm).toEqual([])
|
|
})
|
|
|
|
test("the VM engine loads the VM on first use", async () => {
|
|
const output = await run("vm")
|
|
expect(output.result).toEqual({ ok: true, value: [2, 4], toolCalls: [] })
|
|
expect(output.vm.length).toBeGreaterThan(0)
|
|
})
|
|
})
|