17 lines
2.1 KiB
JavaScript
17 lines
2.1 KiB
JavaScript
#!/usr/bin/env node
|
|
import crypto from "node:crypto";
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { execFileSync } from "node:child_process";
|
|
|
|
const root = path.resolve(path.dirname(new URL(import.meta.url).pathname), "..");
|
|
const docs = path.join(root, "docs", "p6");
|
|
const build = path.resolve(process.argv[2] ?? path.join(root, "freecad-source", "build-web", "configure", "bin"));
|
|
const output = execFileSync(process.execPath, [path.join(root, "freecad-source", "src", "WebAssembly", "FreeCADCoreProbe", "sandbox-runtime-smoke.js"), build], { encoding: "utf8" }).trim().split("\n").at(-1);
|
|
const smoke = JSON.parse(output);
|
|
const report = { schema: "freecad-web-p6-sandbox-geometry-family-r1/v1", taskId: "FW-P6-FPA-D1-SANDBOX-R1", result: smoke.type === 1 && smoke.createRecompute === 1 && smoke.action?.objectType === "Sandbox::SandboxObject" && smoke.action?.resourcesReleased === 1 ? "passed" : "blocked", target: { requestedType: "Sandbox::SandboxObject", typeProbe: smoke.type, objectType: smoke.action?.objectType ?? "", createRecompute: smoke.createRecompute, recomputeCount: smoke.action?.recomputeCount ?? 0, integer: smoke.action?.objectInteger ?? null, resourcesReleased: smoke.action?.resourcesReleased ?? 0 }, recovery: smoke.recoveryState, source: { smoke: "src/WebAssembly/FreeCADCoreProbe/sandbox-runtime-smoke.js", outputSha256: crypto.createHash("sha256").update(output).digest("hex") }, boundaries: ["The official registered type is Sandbox::SandboxObject; the former bare SandboxObject probe input remains preserved as the original failure.", "No source-only registration is used as a runtime pass."] };
|
|
fs.writeFileSync(path.join(docs, "sandbox-geometry-family-r1.json"), `${JSON.stringify(report, null, 2)}\n`);
|
|
fs.writeFileSync(path.join(root, "docs", "freecad-p6-sandbox-geometry-family-r1.log"), `result=${report.result}\nrequestedType=${report.target.requestedType}\nobjectType=${report.target.objectType}\ncreateRecompute=${report.target.createRecompute}\nresourcesReleased=${report.target.resourcesReleased}\n`);
|
|
console.log(JSON.stringify({ result: report.result, target: report.target }));
|
|
if (report.result !== "passed") process.exitCode = 1;
|