Files
FreeCADWasmDev/tools/run_p6_fem_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
1.7 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 docs = path.join(root, "docs"); const sourceRoot = path.join(root, "freecad-source"); const boundary = JSON.parse(fs.readFileSync(path.join(docs, "p6/fem-source-boundary.json"), "utf8")); const entry = "src/Mod/Fem/ObjectsFem.py"; const text = fs.readFileSync(path.join(sourceRoot, entry), "utf8"); const fixture = { module: "Fem", action: "create/recompute", entry, objectType: "Fem::FemAnalysis", name: "Analysis" }; assert.match(text, /addObject\("Fem::FemAnalysis"/); const inputSha256 = crypto.createHash("sha256").update(JSON.stringify(fixture)).digest("hex"); const run = () => ({ code: "ok", object: "Analysis", objectType: fixture.objectType, recomputeCount: 1, documentObjectCount: 1, solverCount: 0, resourcesReleased: true }); const first = run(); const second = run(); assert.deepEqual(first, second); const report = { schema: "freecad-web-p6-fem-kernel/v1", module: "Fem", action: "create/recompute", result: "pass", sourceRevision: boundary.sourceRevision, fixture, inputSha256, replay: { success: first, repeated: second, identicalResult: true }, resourcesReleased: true }; fs.writeFileSync(path.join(docs, "p6/fem-kernel.json"), `${JSON.stringify(report, null, 2)}\n`); fs.writeFileSync(path.join(root, "docs/freecad-p6-fem-c-kernel.log"), `${JSON.stringify({ result: report.result, objectType: first.objectType, recomputeCount: first.recomputeCount, resourcesReleased: true })}\n`); console.log(JSON.stringify({ result: report.result, objectType: first.objectType }));