40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import test from "node:test";
|
|
import ts from "typescript";
|
|
|
|
const repoRoot = path.resolve(import.meta.dirname, "../../..");
|
|
const sourcePath = path.join(repoRoot, "web/protocol/worker-fault.ts");
|
|
const transpiled = ts.transpileModule(fs.readFileSync(sourcePath, "utf8"), {
|
|
compilerOptions: { module: ts.ModuleKind.ES2022, target: ts.ScriptTarget.ES2022 },
|
|
fileName: sourcePath,
|
|
reportDiagnostics: true,
|
|
});
|
|
assert.deepEqual(transpiled.diagnostics, []);
|
|
const moduleUrl = "data:text/javascript;base64," + Buffer.from(transpiled.outputText).toString("base64");
|
|
const { createWorkerFault } = await import(moduleUrl);
|
|
|
|
test("M7-08 maps engine and storage crashes to one recoverable fault contract", () => {
|
|
assert.deepEqual(createWorkerFault("engine", "engine crashed"), {
|
|
source: "engine",
|
|
error: {
|
|
code: "WORKER_TERMINATED",
|
|
severity: "error",
|
|
message: "engine crashed",
|
|
recoverable: true,
|
|
cause: "engine-worker-fault",
|
|
},
|
|
});
|
|
assert.deepEqual(createWorkerFault("storage", "storage crashed"), {
|
|
source: "storage",
|
|
error: {
|
|
code: "WORKER_TERMINATED",
|
|
severity: "error",
|
|
message: "storage crashed",
|
|
recoverable: true,
|
|
cause: "storage-worker-fault",
|
|
},
|
|
});
|
|
});
|