From 571694e39d15bd77aadcb64e6e00b8b0e72efc73 Mon Sep 17 00:00:00 2001 From: Colby Gilbert Date: Thu, 29 Jan 2026 20:10:24 -0800 Subject: [PATCH] test: fix firmware provider test isolation from env vars --- .../models-config.providers.firmware.test.ts | 25 ++++++++++++++++--- ...s-writing-models-json-no-env-token.test.ts | 4 +++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/agents/models-config.providers.firmware.test.ts b/src/agents/models-config.providers.firmware.test.ts index 6cd51ec8b..b3d37a79b 100644 --- a/src/agents/models-config.providers.firmware.test.ts +++ b/src/agents/models-config.providers.firmware.test.ts @@ -1,11 +1,26 @@ -import { describe, expect, it } from "vitest"; +import { describe, expect, it, beforeEach, afterEach } from "vitest"; import { resolveImplicitProviders } from "./models-config.providers.js"; import { mkdtempSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; describe("Firmware provider", () => { + let previousFirmwareKey: string | undefined; + + beforeEach(() => { + previousFirmwareKey = process.env.FIRMWARE_API_KEY; + }); + + afterEach(() => { + if (previousFirmwareKey !== undefined) { + process.env.FIRMWARE_API_KEY = previousFirmwareKey; + } else { + delete process.env.FIRMWARE_API_KEY; + } + }); + it("should not include firmware when no API key is configured", async () => { + delete process.env.FIRMWARE_API_KEY; const agentDir = mkdtempSync(join(tmpdir(), "clawd-test-")); const providers = await resolveImplicitProviders({ agentDir }); @@ -13,11 +28,13 @@ describe("Firmware provider", () => { }); it("should include firmware when FIRMWARE_API_KEY env var is set", async () => { + process.env.FIRMWARE_API_KEY = "test-firmware-key"; const agentDir = mkdtempSync(join(tmpdir(), "clawd-test-")); const providers = await resolveImplicitProviders({ agentDir }); - // This test would need to be run with FIRMWARE_API_KEY env var set - // For now we're just checking the provider structure is correct - expect(providers).toBeDefined(); + expect(providers?.firmware).toBeDefined(); + expect(providers?.firmware?.baseUrl).toBe("https://app.firmware.ai/api/v1"); + expect(providers?.firmware?.api).toBe("openai-completions"); + expect(providers?.firmware?.models?.length).toBeGreaterThan(0); }); }); diff --git a/src/agents/models-config.skips-writing-models-json-no-env-token.test.ts b/src/agents/models-config.skips-writing-models-json-no-env-token.test.ts index 08a66469f..4f5cc955c 100644 --- a/src/agents/models-config.skips-writing-models-json-no-env-token.test.ts +++ b/src/agents/models-config.skips-writing-models-json-no-env-token.test.ts @@ -54,6 +54,7 @@ describe("models-config", () => { const previousSynthetic = process.env.SYNTHETIC_API_KEY; const previousVenice = process.env.VENICE_API_KEY; const previousXiaomi = process.env.XIAOMI_API_KEY; + const previousFirmware = process.env.FIRMWARE_API_KEY; delete process.env.COPILOT_GITHUB_TOKEN; delete process.env.GH_TOKEN; delete process.env.GITHUB_TOKEN; @@ -63,6 +64,7 @@ describe("models-config", () => { delete process.env.SYNTHETIC_API_KEY; delete process.env.VENICE_API_KEY; delete process.env.XIAOMI_API_KEY; + delete process.env.FIRMWARE_API_KEY; try { vi.resetModules(); @@ -97,6 +99,8 @@ describe("models-config", () => { else process.env.VENICE_API_KEY = previousVenice; if (previousXiaomi === undefined) delete process.env.XIAOMI_API_KEY; else process.env.XIAOMI_API_KEY = previousXiaomi; + if (previousFirmware === undefined) delete process.env.FIRMWARE_API_KEY; + else process.env.FIRMWARE_API_KEY = previousFirmware; } }); });