From 25e900f64adedf7b5c34dd6bae366e756bd96c37 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 21:55:33 +0000 Subject: [PATCH] test: tighten shared requirements coverage --- src/shared/requirements.test.ts | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/shared/requirements.test.ts b/src/shared/requirements.test.ts index 0a05a0eb85c..3b47e768f2c 100644 --- a/src/shared/requirements.test.ts +++ b/src/shared/requirements.test.ts @@ -22,6 +22,12 @@ describe("requirements helpers", () => { }); it("resolveMissingAnyBins requires at least one", () => { + expect( + resolveMissingAnyBins({ + required: [], + hasLocalBin: () => false, + }), + ).toEqual([]); expect( resolveMissingAnyBins({ required: ["a", "b"], @@ -38,6 +44,8 @@ describe("requirements helpers", () => { }); it("resolveMissingOs allows remote platform", () => { + expect(resolveMissingOs({ required: [], localPlatform: "linux" })).toEqual([]); + expect(resolveMissingOs({ required: ["linux"], localPlatform: "linux" })).toEqual([]); expect( resolveMissingOs({ required: ["darwin"], @@ -164,4 +172,31 @@ describe("requirements helpers", () => { expect(res.missing).toEqual({ bins: [], anyBins: [], env: [], config: [], os: [] }); expect(res.eligible).toBe(true); }); + + it("evaluateRequirementsFromMetadata defaults missing metadata to empty requirements", () => { + const res = evaluateRequirementsFromMetadata({ + always: false, + hasLocalBin: () => false, + localPlatform: "linux", + isEnvSatisfied: () => false, + isConfigSatisfied: () => false, + }); + + expect(res.required).toEqual({ + bins: [], + anyBins: [], + env: [], + config: [], + os: [], + }); + expect(res.missing).toEqual({ + bins: [], + anyBins: [], + env: [], + config: [], + os: [], + }); + expect(res.configChecks).toEqual([]); + expect(res.eligible).toBe(true); + }); });