Files
openclaw/src/plugins/prune-docker-plugin-dist.test.ts
2026-05-04 15:11:14 -07:00

57 lines
2.2 KiB
TypeScript

import fs from "node:fs";
import path from "node:path";
import { afterEach, describe, expect, it } from "vitest";
import {
parseDockerPluginKeepList,
pruneDockerPluginDist,
} from "../../scripts/prune-docker-plugin-dist.mjs";
import { cleanupTempDirs, makeTempRepoRoot, writeJsonFile } from "../../test/helpers/temp-repo.js";
const tempDirs: string[] = [];
function makeRepoRoot(prefix: string): string {
return makeTempRepoRoot(tempDirs, prefix);
}
function writeDistPluginFile(repoRoot: string, root: "dist" | "dist-runtime", pluginId: string) {
const pluginDir = path.join(repoRoot, root, "extensions", pluginId);
fs.mkdirSync(pluginDir, { recursive: true });
fs.writeFileSync(path.join(pluginDir, "openclaw.plugin.json"), "{}\n", "utf8");
}
afterEach(() => {
cleanupTempDirs(tempDirs);
});
describe("pruneDockerPluginDist", () => {
it("parses space and comma separated Docker plugin keep lists", () => {
expect([...parseDockerPluginKeepList("diagnostics-otel feishu,discord")]).toEqual([
"diagnostics-otel",
"feishu",
"discord",
]);
});
it("removes package-excluded plugin dist unless Docker explicitly opts it in", () => {
const repoRoot = makeRepoRoot("openclaw-docker-plugin-dist-");
writeJsonFile(path.join(repoRoot, "package.json"), {
files: ["dist/**", "!dist/extensions/diagnostics-otel/**", "!dist/extensions/feishu/**"],
});
writeDistPluginFile(repoRoot, "dist", "diagnostics-otel");
writeDistPluginFile(repoRoot, "dist", "feishu");
writeDistPluginFile(repoRoot, "dist-runtime", "feishu");
writeDistPluginFile(repoRoot, "dist", "telegram");
const removed = pruneDockerPluginDist({
repoRoot,
env: { OPENCLAW_EXTENSIONS: "diagnostics-otel" } as NodeJS.ProcessEnv,
});
expect(removed).toEqual(["dist/extensions/feishu", "dist-runtime/extensions/feishu"]);
expect(fs.existsSync(path.join(repoRoot, "dist", "extensions", "diagnostics-otel"))).toBe(true);
expect(fs.existsSync(path.join(repoRoot, "dist", "extensions", "feishu"))).toBe(false);
expect(fs.existsSync(path.join(repoRoot, "dist-runtime", "extensions", "feishu"))).toBe(false);
expect(fs.existsSync(path.join(repoRoot, "dist", "extensions", "telegram"))).toBe(true);
});
});