From 7b2a723891f2b797fa7773c90a9fc453b30faf89 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 18 Apr 2026 22:18:40 +0100 Subject: [PATCH] test: dedupe exec host boundary mocks --- .../bash-tools.exec-host-gateway.test.ts | 23 +++++++++---------- src/agents/bash-tools.exec-host-node.test.ts | 23 +++++++++---------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/src/agents/bash-tools.exec-host-gateway.test.ts b/src/agents/bash-tools.exec-host-gateway.test.ts index 4234496d95a..731075666c3 100644 --- a/src/agents/bash-tools.exec-host-gateway.test.ts +++ b/src/agents/bash-tools.exec-host-gateway.test.ts @@ -1,5 +1,8 @@ import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +type StrictInlineEvalBoundary = + typeof import("./bash-tools.exec-host-shared.js").enforceStrictInlineEvalApprovalBoundary; + const INLINE_EVAL_HIT = { executable: "python3", normalizedExecutable: "python3", @@ -54,15 +57,10 @@ const resolveExecHostApprovalContextMock = vi.hoisted(() => const runExecProcessMock = vi.hoisted(() => vi.fn()); const sendExecApprovalFollowupResultMock = vi.hoisted(() => vi.fn(async () => undefined)); const enforceStrictInlineEvalApprovalBoundaryMock = vi.hoisted(() => - vi.fn( - (value: { - approvedByAsk: boolean; - deniedReason: string | null; - }): { - approvedByAsk: boolean; - deniedReason: string | null; - } => value, - ), + vi.fn((value) => ({ + approvedByAsk: value.approvedByAsk, + deniedReason: value.deniedReason, + })), ); const detectInterpreterInlineEvalArgvMock = vi.hoisted(() => vi.fn( @@ -171,9 +169,10 @@ describe("processGatewayAllowlist", () => { runExecProcessMock.mockReset(); sendExecApprovalFollowupResultMock.mockReset(); enforceStrictInlineEvalApprovalBoundaryMock.mockReset(); - enforceStrictInlineEvalApprovalBoundaryMock.mockImplementation( - (value: { approvedByAsk: boolean; deniedReason: string | null }) => value, - ); + enforceStrictInlineEvalApprovalBoundaryMock.mockImplementation((value) => ({ + approvedByAsk: value.approvedByAsk, + deniedReason: value.deniedReason, + })); detectInterpreterInlineEvalArgvMock.mockReset(); detectInterpreterInlineEvalArgvMock.mockReturnValue(null); buildExecApprovalPendingToolResultMock.mockReturnValue({ diff --git a/src/agents/bash-tools.exec-host-node.test.ts b/src/agents/bash-tools.exec-host-node.test.ts index 9fdee702a10..4451a49c6da 100644 --- a/src/agents/bash-tools.exec-host-node.test.ts +++ b/src/agents/bash-tools.exec-host-node.test.ts @@ -1,5 +1,8 @@ import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +type StrictInlineEvalBoundary = + typeof import("./bash-tools.exec-host-shared.js").enforceStrictInlineEvalApprovalBoundary; + const INLINE_EVAL_HIT = { executable: "python3", normalizedExecutable: "python3", @@ -53,15 +56,10 @@ const createExecApprovalDecisionStateMock = vi.hoisted(() => const buildExecApprovalPendingToolResultMock = vi.hoisted(() => vi.fn()); const sendExecApprovalFollowupResultMock = vi.hoisted(() => vi.fn(async () => undefined)); const enforceStrictInlineEvalApprovalBoundaryMock = vi.hoisted(() => - vi.fn( - (value: { - approvedByAsk: boolean; - deniedReason: string | null; - }): { - approvedByAsk: boolean; - deniedReason: string | null; - } => value, - ), + vi.fn((value) => ({ + approvedByAsk: value.approvedByAsk, + deniedReason: value.deniedReason, + })), ); const registerExecApprovalRequestForHostOrThrowMock = vi.hoisted(() => vi.fn(async () => undefined), @@ -229,9 +227,10 @@ describe("executeNodeHostCommand", () => { }); sendExecApprovalFollowupResultMock.mockReset(); enforceStrictInlineEvalApprovalBoundaryMock.mockReset(); - enforceStrictInlineEvalApprovalBoundaryMock.mockImplementation( - (value: { approvedByAsk: boolean; deniedReason: string | null }) => value, - ); + enforceStrictInlineEvalApprovalBoundaryMock.mockImplementation((value) => ({ + approvedByAsk: value.approvedByAsk, + deniedReason: value.deniedReason, + })); detectInterpreterInlineEvalArgvMock.mockReset(); detectInterpreterInlineEvalArgvMock.mockReturnValue(null); registerExecApprovalRequestForHostOrThrowMock.mockReset();