From aa3421e2d7e09cfccbfaf0c796b7bfbb9675394d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 10 May 2026 22:59:00 +0100 Subject: [PATCH] test: tighten command queue assertions --- src/process/command-queue.test.ts | 44 ++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/process/command-queue.test.ts b/src/process/command-queue.test.ts index f842fd53747..eae8fdde040 100644 --- a/src/process/command-queue.test.ts +++ b/src/process/command-queue.test.ts @@ -62,6 +62,22 @@ function enqueueBlockedMainTask( return { task, release: deferred.resolve }; } +function expectLaneSnapshotFields( + lane: string, + fields: Partial>, +): void { + const snapshot = getCommandLaneSnapshot(lane); + for (const [key, value] of Object.entries(fields)) { + expect(snapshot[key as keyof typeof snapshot]).toBe(value); + } +} + +function diagnosticDebugMessages(): string[] { + return diagnosticMocks.diag.debug.mock.calls + .map(([message]) => message) + .filter((message): message is string => typeof message === "string"); +} + describe("command queue", () => { beforeAll(async () => { ({ @@ -184,9 +200,11 @@ describe("command queue", () => { ).rejects.toBe(error); expect(diagnosticMocks.diag.error).not.toHaveBeenCalled(); - expect(diagnosticMocks.diag.debug).toHaveBeenCalledWith( - expect.stringContaining("lane task interrupted: lane=nested"), - ); + expect( + diagnosticDebugMessages().some((message) => + message.includes("lane task interrupted: lane=nested"), + ), + ).toBe(true); }); it("getActiveTaskCount returns count of currently executing tasks", async () => { @@ -342,7 +360,7 @@ describe("command queue", () => { }); expect(secondRan).toBe(false); - expect(getCommandLaneSnapshot(lane)).toMatchObject({ + expectLaneSnapshotFields(lane, { activeCount: 1, queuedCount: 1, }); @@ -352,7 +370,7 @@ describe("command queue", () => { await firstRejected; await expect(second).resolves.toBe("second"); expect(secondRan).toBe(true); - expect(getCommandLaneSnapshot(lane)).toMatchObject({ + expectLaneSnapshotFields(lane, { activeCount: 0, queuedCount: 0, }); @@ -373,7 +391,7 @@ describe("command queue", () => { await Promise.resolve(); expect(ran).toBe(false); - expect(getCommandLaneSnapshot(lane)).toMatchObject({ + expectLaneSnapshotFields(lane, { activeCount: 0, queuedCount: 1, maxConcurrent: 0, @@ -383,7 +401,7 @@ describe("command queue", () => { await expect(task).resolves.toBe("resumed"); expect(ran).toBe(true); - expect(getCommandLaneSnapshot(lane)).toMatchObject({ + expectLaneSnapshotFields(lane, { activeCount: 0, queuedCount: 0, maxConcurrent: 1, @@ -401,7 +419,7 @@ describe("command queue", () => { }); const second = enqueueCommandInLane(lane, async () => "second"); - expect(getCommandLaneSnapshot(lane)).toMatchObject({ + expectLaneSnapshotFields(lane, { lane, activeCount: 1, queuedCount: 1, @@ -436,10 +454,12 @@ describe("command queue", () => { (snapshot) => snapshot.lane === alphaLane || snapshot.lane === betaLane, ); expect(snapshots.map((snapshot) => snapshot.lane)).toEqual([alphaLane, betaLane]); - expect(snapshots).toEqual([ - expect.objectContaining({ lane: alphaLane, activeCount: 1, queuedCount: 0 }), - expect.objectContaining({ lane: betaLane, activeCount: 1, queuedCount: 0 }), - ]); + expect(snapshots[0]?.lane).toBe(alphaLane); + expect(snapshots[0]?.activeCount).toBe(1); + expect(snapshots[0]?.queuedCount).toBe(0); + expect(snapshots[1]?.lane).toBe(betaLane); + expect(snapshots[1]?.activeCount).toBe(1); + expect(snapshots[1]?.queuedCount).toBe(0); alphaBlocker.resolve(); betaBlocker.resolve();