2 lines
2.0 KiB
JavaScript
2 lines
2.0 KiB
JavaScript
import assert from "node:assert/strict";import path from "node:path";import{Worker}from"node:worker_threads";import{pathToFileURL}from"node:url";const facadePath=path.resolve(process.argv[2]),build=path.resolve(process.argv[3]),f=await import(pathToFileURL(facadePath)),e=await import(pathToFileURL(path.join(path.dirname(facadePath),"facade-envelope.js"))),w=new Worker(new URL("./techdraw-python-facade-smoke-worker.mjs",import.meta.url),{workerData:{facadePath,envelopePath:path.join(path.dirname(facadePath),"facade-envelope.js"),build}}),pending=new Map,events=[];w.on("message",m=>{events.push(m.kind==="ready"?"ready":`${m.kind}:${m.requestId}`);if(m.requestId&&pending.has(m.requestId)){pending.get(m.requestId)(m);pending.delete(m.requestId)}});const ready=await new Promise(r=>w.once("message",r));assert.equal(ready.kind,"ready");const send=r=>{const p=new Promise(x=>pending.set(r.requestId,x));w.postMessage(r);return p};const success=await send(f.createTechDrawPyRequest("td-py-act-e-success")),bad=await send(f.createTechDrawPyRequest("td-py-act-e-error",{...f.TECHDRAW_PY_FIXTURE,sourceEntry:"src/Mod/TechDraw/App/Missing.cpp"})),duplicate=await send(f.createTechDrawPyRequest("td-py-act-e-success")),cancelReq=f.createTechDrawPyRequest("td-py-act-e-cancel"),cancelP=send(cancelReq);w.postMessage(e.createCancel("td-py-cancel-message",cancelReq.requestId));const cancelled=await cancelP,after=await send(f.createTechDrawPyRequest("td-py-act-e-after"));await w.terminate();assert.equal(success.kind,"result");assert.equal(success.result.apiCount,17);assert.equal(success.result.registeredTypes,12);assert.equal(bad.error.code,"revision_mismatch");assert.equal(duplicate.error.code,"duplicate_request");assert.equal(cancelled.error.code,"cancelled");assert.deepEqual(after.result,success.result);console.log(JSON.stringify({result:"pass",events,responses:5,apiCount:success.result.apiCount,registeredTypes:success.result.registeredTypes,resourcesReleased:success.result.resourcesReleased}));
|