mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-10 19:40:41 +00:00
57 lines
2.2 KiB
TypeScript
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);
|
|
});
|
|
});
|