Files
reverse-engineering-anything/src/process/WorkerCleanupRegistry.test.ts
T
morlutoandCursor Agent 395b598383 refactor(admission): own inspector, web, and CLI state per host (#8058)
* refactor(admission): own inspector, web, and CLI state per host

Replace the process-global inspector, web-bundle, guidance, and JavaScript
counters with objects a host passes in, so independent instances do not
share admission or cleanup.

* fix(admission): keep worker and file cleanup on the host

Web-bundle and JavaScript workers retry only their host registry, and
each Inspector admission authorizes and closes its own file scope.
Browser providers can share one web-bundle admission.

* test(inspector): gate one admission's file cleanup

The isolation test delayed the first ArtifactResourceScope.retryCleanup
call, so a second call on a shared ElectronFileScope still finished.
Hold first.files.retryCleanup until the other admission's close
finishes, then release and join before restoring the method.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-10-30 05:23:33 +08:00

28 lines
776 B
TypeScript

import { expect, it } from "vitest";
import {
OwnedWorkerRuntime,
WorkerCleanupRegistry,
} from "./OwnedWorkerRuntime.js";
it("retries one host's retained runtime without failing another host", async () => {
const first = new WorkerCleanupRegistry();
const second = new WorkerCleanupRegistry();
let fail = true;
const stuck = new OwnedWorkerRuntime({
rootPrefix: "rea-worker-host-",
cleanupRegistry: first,
retryCleanup: async () => {
if (fail) throw new Error("host still owns its worker");
},
});
stuck.retainForCleanup();
try {
await expect(second.retry()).resolves.toBeUndefined();
await expect(first.retry()).rejects.toThrow("host still owns its worker");
} finally {
fail = false;
await stuck.close();
}
});