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 path from "node:path";
import { describe, expect, it } from "vitest";
import { withEnv } from "../test-utils/env.js";
import { writeSkill } from "./skills.e2e-test-helpers.js";
import { buildWorkspaceSkillsPrompt, syncSkillsToWorkspace } from "./skills.js";
@@ -122,19 +123,16 @@ describe("buildWorkspaceSkillsPrompt", () => {
it("filters skills based on env/config gates", async () => {
const workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-"));
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({
dir: skillDir,
name: "nano-banana-pro",
description: "Generates images",
metadata:
'{"openclaw":{"requires":{"env":["GEMINI_API_KEY"]},"primaryEnv":"GEMINI_API_KEY"}}',
body: "# Nano Banana\n",
});
await writeSkill({
dir: skillDir,
name: "nano-banana-pro",
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, {
managedSkillsDir: path.join(workspaceDir, ".managed"),
config: { skills: { entries: { "nano-banana-pro": { apiKey: "" } } } },
@@ -148,13 +146,7 @@ describe("buildWorkspaceSkillsPrompt", () => {
},
});
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 () => {
const workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-"));