Files
FreeCADWasmDev/tools/run_p6_cloud_action04_kernel_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

4 lines
2.9 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"; import { createRequire } from "node:module"; import { pathToFileURL } from "node:url";
const root = path.resolve(path.dirname(new URL(import.meta.url).pathname), ".."); const build = path.resolve(process.argv[2] || path.join(root, "freecad-source/build-web/cloud-configure-r2/bin")); globalThis.__dirname = `${build}${path.sep}`; globalThis.require = createRequire(import.meta.url); const loader = await import(pathToFileURL(path.join(build, "FreeCADWebCloudKernelProbe.js")).href); const kernel = await loader.default({ wasmBinary: fs.readFileSync(path.join(build, "FreeCADWebCloudKernelProbe.wasm")) }); const call = (name, type = "number") => kernel.ccall(name, type); const run = () => ({ run: call("fc_web_cloud_kernel_persistence_boundary"), applicable: call("fc_web_cloud_persistence_applicable"), reason: call("fc_web_cloud_persistence_reason", "string"), save: call("fc_web_cloud_persistence_save_available"), restore: call("fc_web_cloud_persistence_restore_available"), before: call("fc_web_cloud_persistence_document_count_before"), after: call("fc_web_cloud_persistence_document_count_after"), replayEqual: call("fc_web_cloud_persistence_replay_equal"), state: call("fc_web_cloud_persistence_state_before", "string") }); const success = run(); const repeated = run(); assert.equal(success.run, 1); assert.equal(success.applicable, 0); assert.equal(success.save, 1); assert.equal(success.restore, 1); assert.equal(success.before, success.after); assert.equal(success.replayEqual, 1); assert.deepEqual(repeated, success); const fixture = { module: "Cloud", action: "save/reopen", applicable: false }; const report = { schema: "freecad-web-p6-cloud-action-04-kernel/v1", task_id: "FW-P6-CLD-ACT-04-C", module: "Cloud", action: "save/reopen", status: "pass", source_revision: "b5a086fda59b0325fe0996147e6e9b344414f9bc", fixture: { ...fixture, input_sha256: crypto.createHash("sha256").update(JSON.stringify(fixture)).digest("hex") }, result: { success, repeated, result_sha256: crypto.createHash("sha256").update(JSON.stringify(success)).digest("hex") }, resources: { documents_unchanged: true, remote_request: false }, commands: ["node tools/run_p6_cloud_action04_kernel_smoke.mjs"], artifacts: { wasm: "freecad-source/build-web/cloud-configure-r2/bin/FreeCADWebCloudKernelProbe.wasm" }, boundaries: ["Cloud Save/Restore entry points are discovered but remote transfer is not executed offline."] }; fs.writeFileSync(path.join(root, "docs/p6/cloud-action-04-kernel.json"), `${JSON.stringify(report, null, 2)}\n`); fs.writeFileSync(path.join(root, "docs/freecad-p6-cloud-act04-c-kernel.log"), `${JSON.stringify({ result: report.status, applicable: success.applicable, save: success.save, restore: success.restore })}\n`); console.log(JSON.stringify({ result: report.status, applicable: success.applicable }));