Files
openclaw/src/cli/plugins-cli.registry.test.ts
T
Peter Steinberger ebb2770000 refactor: eliminate export name collisions (#122084)
* refactor: eliminate export name collisions

* chore(scripts): burn resolved collision baselines

* refactor: narrow legacy session load options

* chore: refresh SDK and session debt baselines

* refactor: adopt upstream secrets collision fix

* test(plugin-sdk): mock renamed session store core

* fix(scripts): track renamed session accessor core
2026-08-11 10:41:50 -07:00

48 lines
1.4 KiB
TypeScript

import { beforeEach, describe, expect, it } from "vitest";
import {
refreshPluginRegistryMock,
resetPluginsCliTestState,
runPluginsCommand,
} from "./plugins-cli-test-helpers.js";
function deferred(): { promise: Promise<void>; resolve: () => void } {
let resolve!: () => void;
const promise = new Promise<void>((resolvePromise) => {
resolve = resolvePromise;
});
return { promise, resolve };
}
describe("plugins registry refresh", () => {
beforeEach(() => {
resetPluginsCliTestState();
});
it("serializes registry rebuilds with other plugin lifecycle mutations", async () => {
const firstEntered = deferred();
const releaseFirst = deferred();
const entries: number[] = [];
refreshPluginRegistryMock.mockImplementation(async () => {
const entry = entries.length + 1;
entries.push(entry);
if (entry === 1) {
firstEntered.resolve();
await releaseFirst.promise;
}
return { plugins: [] };
});
const first = runPluginsCommand(["plugins", "registry", "--refresh", "--json"]);
await firstEntered.promise;
const second = runPluginsCommand(["plugins", "registry", "--refresh", "--json"]);
await new Promise((resolve) => {
setTimeout(resolve, 50);
});
expect(entries).toEqual([1]);
releaseFirst.resolve();
await Promise.all([first, second]);
expect(entries).toEqual([1, 2]);
});
});