silverbullet/common/space_lua/language.test.ts

25 lines
878 B
TypeScript
Raw Normal View History

import { parse } from "$common/space_lua/parse.ts";
import { luaBuildStandardEnv } from "$common/space_lua/stdlib.ts";
2024-10-26 22:02:37 +08:00
import { LuaEnv, LuaStackFrame } from "$common/space_lua/runtime.ts";
import { evalStatement } from "$common/space_lua/eval.ts";
import { assert } from "@std/assert/assert";
2024-11-14 04:08:24 +08:00
import { fileURLToPath } from "node:url";
Deno.test("Lua language tests", async () => {
2024-10-11 21:34:27 +08:00
// Read the Lua file
const luaFile = await Deno.readTextFile(
2024-11-14 04:08:24 +08:00
fileURLToPath(new URL("./language_test.lua", import.meta.url)),
2024-10-11 21:34:27 +08:00
);
const chunk = parse(luaFile, {});
const env = new LuaEnv(luaBuildStandardEnv());
2024-10-20 21:06:23 +08:00
const sf = new LuaStackFrame(new LuaEnv(), chunk.ctx);
sf.threadLocal.setLocal("_GLOBAL", env);
2024-10-11 21:34:27 +08:00
try {
2024-10-20 21:06:23 +08:00
await evalStatement(chunk, env, sf);
2024-10-11 21:34:27 +08:00
} catch (e: any) {
2024-10-26 22:02:37 +08:00
console.error(`Error evaluating script:`, e.toPrettyString(luaFile));
2024-10-11 21:34:27 +08:00
assert(false);
}
});