Files
reverse-engineering-anything/tests/fixtures/lifecycleAcknowledgement.ts
T
morluto 60149282fc test: strengthen integration oracles and verification (#8295)
* test: strengthen integration oracles and verification

* test: bound lifecycle gates and strengthen workflow checks

* test: verify complete paged and extracted results

* test: preserve bytecode and cancellation evidence

* test: strengthen retained evidence and fixture cleanup

* test: require cross-projection bridge identities

* test: retain fixture owners through cleanup failures

* test: verify graph examples and project selectors

* test: tighten provider and lifecycle regressions

* test: consolidate hex coverage and bound cutter cleanup

* test: bound subprocess output waits and strengthen graph checks

* test: check mcp recovery and preserve cleanup owners

* test: verify structured mcp argument failures

* test: preserve artifact cleanup and gdb limit evidence

* test: preserve evidence identities and bound provider gates

* test: retain browser and comparison cleanup owners

* test: bound startup and strengthen fixture oracles

* test: bound lifecycle gates and verify recovered evidence

* test: verify public outcomes and lifecycle ownership

* test: assert precise evidence and release lifecycle gates

* test: verify selected facts and bound cleanup waits

* test: check retained evidence and decoded records

* test: verify final reports and retain cleanup ownership

* test: bound reviewed startup gates and retain cleanup

* test: verify PE errors and preserve MCP cleanup

* test: preserve MCP fixture cleanup ownership

* test: release provider gates before late startup
2026-11-01 00:15:28 +08:00

30 lines
1.1 KiB
TypeScript

/** Fail promptly if an operation never reaches its controlled lifecycle boundary. */
export const awaitAcknowledgement = async (
acknowledgement: Promise<void>,
operation: Promise<unknown>,
boundary: string,
timeoutMs = 2_000,
): Promise<void> => {
let deadline: ReturnType<typeof setTimeout> | undefined;
try {
const observed = await Promise.race([
acknowledgement.then(() => ({ kind: "acknowledged" }) as const),
operation.then(
(value) => ({ kind: "settled", status: "fulfilled", value }) as const,
(cause: unknown) =>
({ kind: "settled", status: "rejected", cause }) as const,
),
new Promise<{ readonly kind: "deadline" }>((resolve) => {
deadline = setTimeout(() => resolve({ kind: "deadline" }), timeoutMs);
}),
]);
if (observed.kind !== "acknowledged")
throw new Error(
`${boundary} was not acknowledged before ${observed.kind === "deadline" ? "the gate deadline" : "the triggering operation settled"}`,
{ cause: observed },
);
} finally {
if (deadline !== undefined) clearTimeout(deadline);
}
};