From 3fb87b127cc60c20405ddf8d29f76a0954d67668 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 19 Apr 2026 01:07:39 +0100 Subject: [PATCH] test: share exec policy rollback snapshots --- src/cli/exec-policy-cli.test.ts | 40 +++++++++++++++------------------ 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/cli/exec-policy-cli.test.ts b/src/cli/exec-policy-cli.test.ts index 01d1da79366..9022e527d36 100644 --- a/src/cli/exec-policy-cli.test.ts +++ b/src/cli/exec-policy-cli.test.ts @@ -13,6 +13,22 @@ function hashApprovalsFile(file: ExecApprovalsFile): string { .digest("hex"); } +function createCurrentApprovalsSnapshot(path: string): ExecApprovalsSnapshot { + return { + path, + exists: true, + raw: JSON.stringify(mocks.getApprovals(), null, 2), + hash: hashApprovalsFile(mocks.getApprovals()), + file: structuredClone(mocks.getApprovals()), + }; +} + +function mockRollbackApprovalSnapshots(originalSnapshot: ExecApprovalsSnapshot) { + mocks.readExecApprovalsSnapshot + .mockImplementationOnce(() => originalSnapshot) + .mockImplementationOnce(() => createCurrentApprovalsSnapshot(originalSnapshot.path)); +} + const mocks = vi.hoisted(() => { const runtimeErrors: string[] = []; const stringifyArgs = (args: unknown[]) => args.map((value) => String(value)).join(" "); @@ -454,17 +470,7 @@ describe("exec-policy CLI", () => { hash: "approvals-hash", file: originalApprovals, }; - mocks.readExecApprovalsSnapshot - .mockImplementationOnce(() => originalSnapshot) - .mockImplementationOnce( - (): ExecApprovalsSnapshot => ({ - path: "/tmp/exec-approvals.json", - exists: true, - raw: JSON.stringify(mocks.getApprovals(), null, 2), - hash: hashApprovalsFile(mocks.getApprovals()), - file: structuredClone(mocks.getApprovals()), - }), - ); + mockRollbackApprovalSnapshots(originalSnapshot); mocks.replaceConfigFile.mockImplementationOnce(async () => { throw new Error("config write failed"); }); @@ -486,17 +492,7 @@ describe("exec-policy CLI", () => { hash: "approvals-hash", file: { version: 1, agents: {} }, }; - mocks.readExecApprovalsSnapshot - .mockImplementationOnce(() => missingSnapshot) - .mockImplementationOnce( - (): ExecApprovalsSnapshot => ({ - path: "/tmp/missing-exec-approvals.json", - exists: true, - raw: JSON.stringify(mocks.getApprovals(), null, 2), - hash: hashApprovalsFile(mocks.getApprovals()), - file: structuredClone(mocks.getApprovals()), - }), - ); + mockRollbackApprovalSnapshots(missingSnapshot); mocks.replaceConfigFile.mockImplementationOnce(async () => { throw new Error("config write failed"); });