2 lines
2.3 KiB
JavaScript
2 lines
2.3 KiB
JavaScript
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),".."),docs=path.join(root,"docs/p6"),build=path.resolve(process.argv[2]??path.join(root,"freecad-source/build-web/configure/bin"));globalThis.__dirname=`${build}${path.sep}`;globalThis.require=createRequire(import.meta.url);const l=await import(pathToFileURL(path.join(build,"FreeCADWebRobotRuntimeProbe.js"))),p=await l.default({wasmBinary:fs.readFileSync(path.join(build,"FreeCADWebRobotRuntimeProbe.wasm")),print:()=>{},printErr:()=>{}}),c=(n,t="number")=>p.ccall(n,t),run=()=>({run:c("fc_web_robot_create_recompute"),error:c("fc_web_robot_error","string"),objectType:c("fc_web_robot_action_object_type","string"),objectCount:c("fc_web_robot_action_object_count"),resourcesReleased:c("fc_web_robot_action_resources_released"),axis1:c("fc_web_robot_action_axis1")}),first=run(),second=run(),hash=v=>crypto.createHash("sha256").update(JSON.stringify(v)).digest("hex"),details={first,second,deterministic:JSON.stringify(first)===JSON.stringify(second),pass:first.run===1&&first.error===""&&first.objectType==="Robot::RobotObject"&&first.objectCount===1&&first.resourcesReleased===1&&first.axis1===15},fixture={module:"Robot",action:"create/recompute",objectType:"Robot::RobotObject",axis1:15,axis2:-10},report={schema:"freecad-web-p6-robot-kernel/v1",taskId:"FW-P6-ROB-C",module:"Robot",action:"create/recompute",result:details.pass&&details.deterministic?"pass":"fail",fixture:{...fixture,inputSha256:hash(fixture)},details,resultSha256:hash(details),artifacts:{wasm:"freecad-source/build-web/configure/bin/FreeCADWebRobotRuntimeProbe.wasm",workerLog:"docs/freecad-p6-robot-c-kernel.log"},boundaries:["Native Robot::RobotObject is created and recomputed; RobotGui simulation remains excluded."]};fs.writeFileSync(path.join(docs,"robot-kernel.json"),JSON.stringify(report,null,2)+"\n");fs.writeFileSync(path.join(root,"docs/freecad-p6-robot-c-kernel.log"),JSON.stringify({result:report.result,deterministic:details.deterministic,objectType:first.objectType,axis1:first.axis1})+"\n");console.log(JSON.stringify({result:report.result,deterministic:details.deterministic,objectType:first.objectType,axis1:first.axis1}));if(report.result!=="pass")process.exitCode=1;
|