mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 04:17:42 +00:00
refactor(test): reuse env helper in workspace skill sync gating
This commit is contained in:
@@ -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-"));
|
||||||
|
|||||||
Reference in New Issue
Block a user