From a6b4294bfd24a67158d73dd1239693365f704faa Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 18:47:56 +0000 Subject: [PATCH] test: expand remote skill eligibility coverage --- src/infra/skills-remote.test.ts | 61 +++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/infra/skills-remote.test.ts b/src/infra/skills-remote.test.ts index 5aecf39a3b3..24c41dddbd5 100644 --- a/src/infra/skills-remote.test.ts +++ b/src/infra/skills-remote.test.ts @@ -33,4 +33,65 @@ describe("skills-remote", () => { removeRemoteNodeInfo(nodeId); }).not.toThrow(); }); + + it("ignores non-mac and non-system.run nodes for eligibility", () => { + const linuxNodeId = `node-${randomUUID()}`; + const noRunNodeId = `node-${randomUUID()}`; + const bin = `bin-${randomUUID()}`; + try { + recordRemoteNodeInfo({ + nodeId: linuxNodeId, + displayName: "Linux Box", + platform: "linux", + commands: ["system.run"], + }); + recordRemoteNodeBins(linuxNodeId, [bin]); + + recordRemoteNodeInfo({ + nodeId: noRunNodeId, + displayName: "Remote Mac", + platform: "darwin", + commands: ["system.which"], + }); + recordRemoteNodeBins(noRunNodeId, [bin]); + + expect(getRemoteSkillEligibility()).toBeUndefined(); + } finally { + removeRemoteNodeInfo(linuxNodeId); + removeRemoteNodeInfo(noRunNodeId); + } + }); + + it("aggregates bins and note labels across eligible mac nodes", () => { + const nodeA = `node-${randomUUID()}`; + const nodeB = `node-${randomUUID()}`; + const binA = `bin-${randomUUID()}`; + const binB = `bin-${randomUUID()}`; + try { + recordRemoteNodeInfo({ + nodeId: nodeA, + displayName: "Mac Studio", + platform: "darwin", + commands: ["system.run"], + }); + recordRemoteNodeBins(nodeA, [binA]); + + recordRemoteNodeInfo({ + nodeId: nodeB, + platform: "macOS", + commands: ["system.run"], + }); + recordRemoteNodeBins(nodeB, [binB]); + + const eligibility = getRemoteSkillEligibility(); + expect(eligibility?.platforms).toEqual(["darwin"]); + expect(eligibility?.hasBin(binA)).toBe(true); + expect(eligibility?.hasAnyBin([`missing-${randomUUID()}`, binB])).toBe(true); + expect(eligibility?.note).toContain("Mac Studio"); + expect(eligibility?.note).toContain(nodeB); + } finally { + removeRemoteNodeInfo(nodeA); + removeRemoteNodeInfo(nodeB); + } + }); });