2 lines
2.1 KiB
JavaScript
2 lines
2.1 KiB
JavaScript
import assert from"node:assert/strict";import fs from"node:fs";import path from"node:path";import{Worker}from"node:worker_threads";import{pathToFileURL}from"node:url";const root=path.resolve(path.dirname(new URL(import.meta.url).pathname),"..");const facadePath=path.resolve(process.argv[2]);const build=path.resolve(process.argv[3]);const facade=await import(pathToFileURL(facadePath));const envelopePath=path.join(path.dirname(facadePath),"facade-envelope.js"),envelope=await import(pathToFileURL(envelopePath));const worker=new Worker(new URL("./surface-inspect-facade-smoke-worker.mjs",import.meta.url),{workerData:{facadePath,envelopePath,build}});const pending=new Map(),events=[];worker.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 wait=id=>new Promise(r=>pending.set(id,r)),ready=await new Promise(r=>worker.once("message",r));assert.equal(ready.kind,"ready");const send=r=>{const p=wait(r.requestId);worker.postMessage(r);return p};const success=await send(facade.createSurfaceInspectRequest("sur-act02-e-success"));const expected=await send(facade.createSurfaceInspectRequest("sur-act02-e-error",{...facade.SURFACE_INSPECT_FIXTURE,sourceEntry:"src/Mod/Surface/App/Missing.cpp"}));const duplicate=await send(facade.createSurfaceInspectRequest("sur-act02-e-success"));const cancel=facade.createSurfaceInspectRequest("sur-act02-e-cancel"),cancelledPromise=send(cancel);worker.postMessage(envelope.createCancel("sur-act02-cancel-msg",cancel.requestId));const cancelled=await cancelledPromise;const after=await send(facade.createSurfaceInspectRequest("sur-act02-e-after"));await worker.terminate();assert.equal(success.kind,"result");assert.equal(success.result.registeredTypeCount,7);assert.equal(expected.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}));
|