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,19 +123,16 @@ 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; await writeSkill({
delete process.env.GEMINI_API_KEY; dir: skillDir,
name: "nano-banana-pro",
try { description: "Generates images",
await writeSkill({ metadata:
dir: skillDir, '{"openclaw":{"requires":{"env":["GEMINI_API_KEY"]},"primaryEnv":"GEMINI_API_KEY"}}',
name: "nano-banana-pro", body: "# Nano Banana\n",
description: "Generates images", });
metadata:
'{"openclaw":{"requires":{"env":["GEMINI_API_KEY"]},"primaryEnv":"GEMINI_API_KEY"}}',
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-"));