refactor(test): reuse env helper in workspace skill sync gating

This commit is contained in:
Peter Steinberger
2026-02-21 18:41:57 +00:00
parent c0706b7799
commit 5dc1b5a8db

View File

@@ -2,6 +2,7 @@ import fs from "node:fs/promises";
import os from "node:os"; import os from "node:os";
import path from "node:path"; import path from "node:path";
import { describe, expect, it } from "vitest"; import { describe, expect, it } from "vitest";
import { withEnv } from "../test-utils/env.js";
import { writeSkill } from "./skills.e2e-test-helpers.js"; import { writeSkill } from "./skills.e2e-test-helpers.js";
import { buildWorkspaceSkillsPrompt, syncSkillsToWorkspace } from "./skills.js"; import { buildWorkspaceSkillsPrompt, syncSkillsToWorkspace } from "./skills.js";
@@ -122,10 +123,6 @@ describe("buildWorkspaceSkillsPrompt", () => {
it("filters skills based on env/config gates", async () => { it("filters skills based on env/config gates", async () => {
const workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-")); const workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-"));
const skillDir = path.join(workspaceDir, "skills", "nano-banana-pro"); const skillDir = path.join(workspaceDir, "skills", "nano-banana-pro");
const originalEnv = process.env.GEMINI_API_KEY;
delete process.env.GEMINI_API_KEY;
try {
await writeSkill({ await writeSkill({
dir: skillDir, dir: skillDir,
name: "nano-banana-pro", name: "nano-banana-pro",
@@ -135,6 +132,7 @@ describe("buildWorkspaceSkillsPrompt", () => {
body: "# Nano Banana\n", body: "# Nano Banana\n",
}); });
withEnv({ GEMINI_API_KEY: undefined }, () => {
const missingPrompt = buildWorkspaceSkillsPrompt(workspaceDir, { const missingPrompt = buildWorkspaceSkillsPrompt(workspaceDir, {
managedSkillsDir: path.join(workspaceDir, ".managed"), managedSkillsDir: path.join(workspaceDir, ".managed"),
config: { skills: { entries: { "nano-banana-pro": { apiKey: "" } } } }, config: { skills: { entries: { "nano-banana-pro": { apiKey: "" } } } },
@@ -148,13 +146,7 @@ describe("buildWorkspaceSkillsPrompt", () => {
}, },
}); });
expect(enabledPrompt).toContain("nano-banana-pro"); expect(enabledPrompt).toContain("nano-banana-pro");
} finally { });
if (originalEnv === undefined) {
delete process.env.GEMINI_API_KEY;
} else {
process.env.GEMINI_API_KEY = originalEnv;
}
}
}); });
it("applies skill filters, including empty lists", async () => { it("applies skill filters, including empty lists", async () => {
const workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-")); const workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-"));