10 lines
2.4 KiB
JavaScript
10 lines
2.4 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import crypto from "node:crypto";
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
const modulePath = process.argv[2]; const f = await import(path.resolve(modulePath)); const e = await import(path.join(path.dirname(path.resolve(modulePath)), "facade-envelope.js")); const root = path.resolve(path.dirname(new URL(import.meta.url).pathname), ".."); const q = new e.FacadeSerialQueue();
|
|
const success = await q.dispatch(f.createImportInspectRequest("import-inspect-success"), f.handleImportInspect); const invalid = await q.dispatch(f.createImportInspectRequest("import-inspect-error", { ...f.IMPORT_INSPECT_FIXTURE, sourceRevision: "wrong" }), f.handleImportInspect); const duplicate = await q.dispatch(f.createImportInspectRequest("import-inspect-success"), f.handleImportInspect); const c = f.createImportInspectRequest("import-inspect-cancel"); const cp = q.dispatch(c, f.handleImportInspect); const accepted = q.cancel(e.createCancel("cancel", c.requestId)); const cancelled = await cp; const after = await q.dispatch(f.createImportInspectRequest("import-inspect-after"), f.handleImportInspect);
|
|
assert.equal(success.kind, "result"); assert.equal(success.result.readOnly, true); assert.equal(success.result.pythonApiCount, 1135); assert.equal(invalid.error.code, "revision_mismatch"); assert.equal(duplicate.error.code, "duplicate_request"); assert.equal(accepted, true); assert.equal(cancelled.error.code, "cancelled"); assert.equal(after.result.stateSha256, success.result.stateSha256);
|
|
const report = { schema: "freecad-web-p6-import-action-03/v1", taskId: "FW-P6-IMP-ACT-03-E", module: "Import", action: "inspect/source-inventory", result: "pass", typedSchema: f.IMPORT_INSPECT_SCHEMA, responses: { success, invalid, duplicate, cancelled, after }, sequencing: { requestCount: 5, responseCount: 5, cancelAccepted: accepted, maxActive: 1 }, sourceBacked: true, inputSha256: crypto.createHash("sha256").update(JSON.stringify(f.IMPORT_INSPECT_FIXTURE)).digest("hex"), nativePointersExposed: false };
|
|
fs.writeFileSync(path.join(root, "docs/p6/import-action-03-facade.json"), `${JSON.stringify(report, null, 2)}\n`); fs.writeFileSync(path.join(root, "docs/freecad-p6-import-action-03-e-facade.log"), "result=pass\nrequests=5\nresponses=5\ncancelAccepted=true\nnativePointersExposed=false\n"); console.log(JSON.stringify({ result: report.result, apiCount: success.result.pythonApiCount }));
|