Files
openclaw/test/scripts/bundled-plugin-source-utils.test.ts
2026-05-17 01:35:39 +08:00

40 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { collectBundledPluginSources } from "../../scripts/lib/bundled-plugin-source-utils.mjs";
import { expectNoNodeFsScans } from "../../src/test-utils/fs-scan-assertions.js";
describe("scripts/lib/bundled-plugin-source-utils.mjs", () => {
it("collects bundled plugin sources with package metadata", () => {
const sources = collectBundledPluginSources({
repoRoot: process.cwd(),
requirePackageJson: true,
});
expect(sources.some((source) => source.dirName === "telegram")).toBe(true);
expect(sources.every((source) => source.packageJsonPath)).toBe(true);
expect(sources).toEqual(
[...sources].toSorted((left, right) => left.dirName.localeCompare(right.dirName)),
);
});
it("discovers repo bundled plugin sources without scanning extension directories", () => {
const payload = expectNoNodeFsScans<{
channels: number;
sources: number;
}>(`
const utils = await import("./scripts/lib/bundled-plugin-source-utils.mjs");
const sources = utils.collectBundledPluginSources({
repoRoot: process.cwd(),
requirePackageJson: true,
});
return {
channels: sources.filter(
(source) => Array.isArray(source.manifest?.channels) && source.manifest.channels.length > 0,
).length,
sources: sources.length,
};
`);
expect(payload.sources).toBeGreaterThan(0);
expect(payload.channels).toBeGreaterThan(0);
});
});