mirror of
https://github.com/anomalyco/opencode.git
synced 2026-11-08 18:51:24 +03:00
29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
import assert from "node:assert/strict"
|
|
import { pathToFileURL } from "node:url"
|
|
import { runLua } from "../index.js"
|
|
|
|
const response = await fetch(
|
|
process.argv[2] ? pathToFileURL(process.argv[2]) : "https://www.lua.org/tests/lua5.1-tests.tar.gz",
|
|
)
|
|
if (!response.ok) throw new Error(`Lua test suite: ${response.status} ${response.statusText}`)
|
|
const bytes = await response.arrayBuffer()
|
|
assert.equal(
|
|
Bun.SHA256.hash(bytes, "hex"),
|
|
"49e4ca6561f82ea605908c5041ab5fad66ed9930fa0686675bd51b02767f18ad",
|
|
"unexpected Lua test archive",
|
|
)
|
|
const names = ["vararg", "pm", "locals", "math"]
|
|
const files = await new Bun.Archive(bytes).files(`lua5.1-tests/{${names.join(",")}}.lua`)
|
|
|
|
// Run source unchanged in fresh globals. locals.lua also returns a closure;
|
|
// check its first result in Lua rather than exporting that closure to JS.
|
|
for (const name of names) {
|
|
const source = Buffer.from(await files.get(`lua5.1-tests/${name}.lua`).arrayBuffer()).toString("latin1")
|
|
const prefix = name === "math" ? "_soft = true\n" : ""
|
|
const result = runLua(
|
|
name === "locals" ? `local function suite()\n${source}\nend\nreturn (suite())` : prefix + source,
|
|
)
|
|
assert.deepEqual(result, name === "locals" ? [5] : [])
|
|
console.log(`PASS ${name}.lua${prefix ? " (_soft)" : ""}`)
|
|
}
|