From 79ab4927c13caf0e5d1e064ef1de577907886d4d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 19 Feb 2026 13:51:38 +0000 Subject: [PATCH] test: dedupe extracted-size budget assertions in archive tests --- src/infra/archive.test.ts | 42 ++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/src/infra/archive.test.ts b/src/infra/archive.test.ts index fec09bf092d..fc9d5f39122 100644 --- a/src/infra/archive.test.ts +++ b/src/infra/archive.test.ts @@ -15,6 +15,22 @@ async function makeTempDir(prefix = "case") { return dir; } +async function expectExtractedSizeBudgetExceeded(params: { + archivePath: string; + destDir: string; + timeoutMs?: number; + maxExtractedBytes: number; +}) { + await expect( + extractArchive({ + archivePath: params.archivePath, + destDir: params.destDir, + timeoutMs: params.timeoutMs ?? 5_000, + limits: { maxExtractedBytes: params.maxExtractedBytes }, + }), + ).rejects.toThrow("archive extracted size exceeds limit"); +} + beforeAll(async () => { fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-archive-")); }); @@ -106,14 +122,11 @@ describe("archive utils", () => { await fs.writeFile(archivePath, await zip.generateAsync({ type: "nodebuffer" })); await fs.mkdir(extractDir, { recursive: true }); - await expect( - extractArchive({ - archivePath, - destDir: extractDir, - timeoutMs: 5_000, - limits: { maxExtractedBytes: 32 }, - }), - ).rejects.toThrow("archive extracted size exceeds limit"); + await expectExtractedSizeBudgetExceeded({ + archivePath, + destDir: extractDir, + maxExtractedBytes: 32, + }); }); it("rejects archives that exceed archive size budget", async () => { @@ -148,14 +161,11 @@ describe("archive utils", () => { await tar.c({ cwd: workDir, file: archivePath }, ["package"]); await fs.mkdir(extractDir, { recursive: true }); - await expect( - extractArchive({ - archivePath, - destDir: extractDir, - timeoutMs: 5_000, - limits: { maxExtractedBytes: 32 }, - }), - ).rejects.toThrow("archive extracted size exceeds limit"); + await expectExtractedSizeBudgetExceeded({ + archivePath, + destDir: extractDir, + maxExtractedBytes: 32, + }); }); it("rejects tar entries with absolute extraction paths", async () => {