mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-12 02:02:54 +00:00
61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import { runPluginHostCleanup } from "./host-hook-cleanup.js";
|
|
import { createEmptyPluginRegistry } from "./registry-empty.js";
|
|
|
|
const mocks = vi.hoisted(() => ({
|
|
getRuntimeConfig: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("../config/config.js", () => ({
|
|
getRuntimeConfig: mocks.getRuntimeConfig,
|
|
}));
|
|
|
|
describe("plugin host cleanup config fallback", () => {
|
|
afterEach(() => {
|
|
mocks.getRuntimeConfig.mockReset();
|
|
});
|
|
|
|
it("records session store config failures while continuing runtime cleanup", async () => {
|
|
const registry = createEmptyPluginRegistry();
|
|
const cleanup = vi.fn();
|
|
registry.runtimeLifecycles ??= [];
|
|
registry.runtimeLifecycles.push({
|
|
pluginId: "cleanup-plugin",
|
|
pluginName: "Cleanup Plugin",
|
|
source: "test",
|
|
lifecycle: {
|
|
id: "runtime-cleanup",
|
|
cleanup,
|
|
},
|
|
});
|
|
const configError = new Error("invalid config");
|
|
mocks.getRuntimeConfig.mockImplementation(() => {
|
|
throw configError;
|
|
});
|
|
|
|
const result = await runPluginHostCleanup({
|
|
registry,
|
|
pluginId: "cleanup-plugin",
|
|
reason: "disable",
|
|
});
|
|
|
|
expect(cleanup.mock.calls).toEqual([
|
|
[
|
|
{
|
|
runId: undefined,
|
|
reason: "disable",
|
|
sessionKey: undefined,
|
|
},
|
|
],
|
|
]);
|
|
expect(result.cleanupCount).toBe(1);
|
|
expect(result.failures).toEqual([
|
|
{
|
|
error: configError,
|
|
pluginId: "cleanup-plugin",
|
|
hookId: "session-store",
|
|
},
|
|
]);
|
|
});
|
|
});
|