Initial Commit
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
import { COMPILER_ABI_VERSION, writeManifest } from "./manifest.js";
|
||||
|
||||
describe("writeManifest", () => {
|
||||
it("emits a manifest mirroring the supplied routes", {
|
||||
timeout: 5000,
|
||||
}, async () => {
|
||||
const writes: Array<[string, string]> = [];
|
||||
const manifest = await writeManifest({
|
||||
manifestPath: "/tmp/x.wasm.json",
|
||||
routes: [
|
||||
{ method: "GET", path: "/a" },
|
||||
{ method: "POST", path: "/b" },
|
||||
],
|
||||
bundledJs: "var plugin = {};",
|
||||
javyVersion: "v8.1.1",
|
||||
compilerVersion: "0.1.0",
|
||||
compiledAt: "2026-01-01T00:00:00.000Z",
|
||||
fsWrite: async (p, d) => {
|
||||
writes.push([p, d]);
|
||||
},
|
||||
});
|
||||
expect(manifest.routes).toHaveLength(2);
|
||||
expect(manifest.abiVariant).toBe("wasi-stdio");
|
||||
expect(manifest.abiVersion).toBe(COMPILER_ABI_VERSION);
|
||||
expect(manifest.javyVersion).toBe("v8.1.1");
|
||||
expect(manifest.compilerVersion).toBe("0.1.0");
|
||||
expect(manifest.compiledAt).toBe("2026-01-01T00:00:00.000Z");
|
||||
expect(manifest.sourceDigest).toHaveLength(64);
|
||||
expect(writes).toHaveLength(1);
|
||||
expect(writes[0]?.[0]).toBe("/tmp/x.wasm.json");
|
||||
const reparsed = JSON.parse(writes[0]?.[1] ?? "{}");
|
||||
expect(reparsed.routes).toHaveLength(2);
|
||||
});
|
||||
|
||||
it("raises MANIFEST_MISSING_ROUTES on empty routes", {
|
||||
timeout: 5000,
|
||||
}, async () => {
|
||||
await expect(
|
||||
writeManifest({
|
||||
manifestPath: "/tmp/x.wasm.json",
|
||||
routes: [],
|
||||
bundledJs: "",
|
||||
javyVersion: "v8.1.1",
|
||||
compilerVersion: "0.1.0",
|
||||
fsWrite: async () => undefined,
|
||||
})
|
||||
).rejects.toMatchObject({
|
||||
code: "WASM_COMPILER.MANIFEST_MISSING_ROUTES",
|
||||
});
|
||||
});
|
||||
|
||||
it("defaults compiledAt to the current ISO timestamp", {
|
||||
timeout: 5000,
|
||||
}, async () => {
|
||||
const manifest = await writeManifest({
|
||||
manifestPath: "/tmp/y.wasm.json",
|
||||
routes: [{ method: "GET", path: "/x" }],
|
||||
bundledJs: "var plugin = {};",
|
||||
javyVersion: "v8.1.1",
|
||||
compilerVersion: "0.1.0",
|
||||
fsWrite: async () => undefined,
|
||||
});
|
||||
// ISO 8601 format check
|
||||
expect(manifest.compiledAt.endsWith("Z")).toBe(true);
|
||||
expect(manifest.compiledAt.includes("T")).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user