





























@@ -6,11 +6,17 @@ import type { PluginManifestRegistry } from "../../plugins/manifest-registry.js"
66import { createTrackedTempDirs } from "../../test-utils/tracked-temp-dirs.js";
7788const hoisted = vi.hoisted(() => ({
9-loadPluginManifestRegistry: vi.fn(),
9+loadPluginManifestRegistryForInstalledIndex: vi.fn(),
10+loadPluginRegistrySnapshot: vi.fn(() => ({ plugins: [] })),
1011}));
111212-vi.mock("../../plugins/manifest-registry.js", () => ({
13-loadPluginManifestRegistry: (...args: unknown[]) => hoisted.loadPluginManifestRegistry(...args),
13+vi.mock("../../plugins/manifest-registry-installed.js", () => ({
14+loadPluginManifestRegistryForInstalledIndex: (...args: unknown[]) =>
15+hoisted.loadPluginManifestRegistryForInstalledIndex(...args),
16+}));
17+18+vi.mock("../../plugins/plugin-registry.js", () => ({
19+loadPluginRegistrySnapshot: (...args: unknown[]) => hoisted.loadPluginRegistrySnapshot(...args),
1420}));
15211622let resolvePluginSkillDirs: typeof import("./plugin-skills.js").resolvePluginSkillDirs;
@@ -85,7 +91,9 @@ async function setupAcpxAndHelperRegistry() {
8591const helperRoot = await tempDirs.make("openclaw-helper-plugin-");
8692await fs.mkdir(path.join(acpxRoot, "skills"), { recursive: true });
8793await fs.mkdir(path.join(helperRoot, "skills"), { recursive: true });
88-hoisted.loadPluginManifestRegistry.mockReturnValue(buildRegistry({ acpxRoot, helperRoot }));
94+hoisted.loadPluginManifestRegistryForInstalledIndex.mockReturnValue(
95+buildRegistry({ acpxRoot, helperRoot }),
96+);
8997return { workspaceDir, acpxRoot, helperRoot };
9098}
9199@@ -98,7 +106,8 @@ async function setupPluginOutsideSkills() {
98106}
99107100108afterEach(async () => {
101-hoisted.loadPluginManifestRegistry.mockReset();
109+hoisted.loadPluginManifestRegistryForInstalledIndex.mockReset();
110+hoisted.loadPluginRegistrySnapshot.mockReset();
102111await tempDirs.cleanup();
103112});
104113@@ -108,7 +117,13 @@ describe("resolvePluginSkillDirs", () => {
108117});
109118110119beforeEach(() => {
111-hoisted.loadPluginManifestRegistry.mockReset();
120+hoisted.loadPluginManifestRegistryForInstalledIndex.mockReset();
121+hoisted.loadPluginManifestRegistryForInstalledIndex.mockReturnValue({
122+diagnostics: [],
123+plugins: [],
124+});
125+hoisted.loadPluginRegistrySnapshot.mockReset();
126+hoisted.loadPluginRegistrySnapshot.mockReturnValue({ plugins: [] });
112127});
113128114129it.each([
@@ -152,7 +167,7 @@ describe("resolvePluginSkillDirs", () => {
152167await fs.mkdir(outsideSkills, { recursive: true });
153168const escapePath = path.relative(pluginRoot, outsideSkills);
154169155-hoisted.loadPluginManifestRegistry.mockReturnValue(
170+hoisted.loadPluginManifestRegistryForInstalledIndex.mockReturnValue(
156171createSinglePluginRegistry({
157172 pluginRoot,
158173skills: ["./skills", escapePath],
@@ -183,7 +198,7 @@ describe("resolvePluginSkillDirs", () => {
183198process.platform === "win32" ? ("junction" as const) : ("dir" as const),
184199);
185200186-hoisted.loadPluginManifestRegistry.mockReturnValue(
201+hoisted.loadPluginManifestRegistryForInstalledIndex.mockReturnValue(
187202createSinglePluginRegistry({
188203 pluginRoot,
189204skills: ["./skills-link"],
@@ -210,7 +225,7 @@ describe("resolvePluginSkillDirs", () => {
210225await fs.mkdir(path.join(pluginRoot, "commands"), { recursive: true });
211226await fs.mkdir(path.join(pluginRoot, "skills"), { recursive: true });
212227213-hoisted.loadPluginManifestRegistry.mockReturnValue(
228+hoisted.loadPluginManifestRegistryForInstalledIndex.mockReturnValue(
214229createSinglePluginRegistry({
215230 pluginRoot,
216231format: "bundle",
@@ -240,7 +255,7 @@ describe("resolvePluginSkillDirs", () => {
240255const pluginRoot = await tempDirs.make("openclaw-legacy-plugin-");
241256await fs.mkdir(path.join(pluginRoot, "skills"), { recursive: true });
242257243-hoisted.loadPluginManifestRegistry.mockReturnValue(
258+hoisted.loadPluginManifestRegistryForInstalledIndex.mockReturnValue(
244259createSinglePluginRegistry({
245260 pluginRoot,
246261skills: ["./skills"],
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。