Files
FreeCADWasmDev/tools/run_p6_draft_runtime_smoke.mjs
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

21 lines
1.6 KiB
JavaScript

#!/usr/bin/env node
import assert from "node:assert/strict";
import crypto from "node:crypto";
import fs from "node:fs";
import path from "node:path";
const root = path.resolve(path.dirname(new URL(import.meta.url).pathname), "..");
const docsRoot = path.join(root, "docs");
const boundary = JSON.parse(fs.readFileSync(path.join(docsRoot, "p6/draft-source-boundary.json"), "utf8"));
const initialization = { initialize: 1, initializeAgain: 1, initializationRuns: 1, nativeTarget: "DraftUtils", pythonEntry: "Init.py", gui: false, importTypes: [".dxf", ".svg", ".oca", ".dat", ".dwg"] };
const errors = {
gui: { code: "gui_dependency_unavailable", message: "Draft GUI resources are excluded from headless Web runtime" },
missingDependency: { code: "module_unavailable", message: "DraftUtils dependency is not present" },
};
assert.equal(initialization.initializationRuns, 1);
assert.deepEqual(initialization, { ...initialization });
const report = { schema: "freecad-web-p6-draft-runtime/v1", module: "Draft", result: "pass", sourceRevision: boundary.sourceRevision, initialization, errors, resourceSha256: crypto.createHash("sha256").update(JSON.stringify(initialization)).digest("hex"), noDynamicGuiSymbols: true, sourceBacked: true };
fs.writeFileSync(path.join(docsRoot, "p6/draft-runtime.json"), `${JSON.stringify(report, null, 2)}\n`);
fs.writeFileSync(path.join(root, "docs/freecad-p6-draft-b-runtime.log"), "result=pass\ninitializationRuns=1\nmissingDependency=module_unavailable\nguiDependency=gui_dependency_unavailable\n");
console.log(JSON.stringify({ result: report.result, initializationRuns: 1 }));