mirror of
https://github.com/moltbot/moltbot.git
synced 2026-04-23 22:55:24 +00:00
test: align latest main runtime harnesses
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import type { OpenClawPluginCommandDefinition, PluginRuntime } from "openclaw/plugin-sdk/core";
|
||||
import type { OpenClawPluginCommandDefinition } from "openclaw/plugin-sdk/core";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import type { PluginRuntime } from "./api.js";
|
||||
import register from "./index.js";
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { getTaskFlowById, resetTaskFlowRegistryForTests } from "../../tasks/task-flow-registry.js";
|
||||
import { getTaskById, resetTaskRegistryForTests } from "../../tasks/task-registry.js";
|
||||
import {
|
||||
getTaskById,
|
||||
resetTaskRegistryDeliveryRuntimeForTests,
|
||||
resetTaskRegistryForTests,
|
||||
setTaskRegistryDeliveryRuntimeForTests,
|
||||
} from "../../tasks/task-registry.js";
|
||||
import { createRuntimeTaskFlow } from "./runtime-taskflow.js";
|
||||
|
||||
const hoisted = vi.hoisted(() => {
|
||||
@@ -14,10 +19,6 @@ const hoisted = vi.hoisted(() => {
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("../../tasks/task-registry-delivery-runtime.js", () => ({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
}));
|
||||
|
||||
vi.mock("../../acp/control-plane/manager.js", () => ({
|
||||
getAcpSessionManager: () => ({
|
||||
cancelSession: hoisted.cancelSessionMock,
|
||||
@@ -29,12 +30,19 @@ vi.mock("../../agents/subagent-control.js", () => ({
|
||||
}));
|
||||
|
||||
afterEach(() => {
|
||||
resetTaskRegistryDeliveryRuntimeForTests();
|
||||
resetTaskRegistryForTests();
|
||||
resetTaskFlowRegistryForTests({ persist: false });
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe("runtime TaskFlow", () => {
|
||||
beforeEach(() => {
|
||||
setTaskRegistryDeliveryRuntimeForTests({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
});
|
||||
});
|
||||
|
||||
it("binds managed TaskFlow operations to a session key", () => {
|
||||
const runtime = createRuntimeTaskFlow();
|
||||
const taskFlow = runtime.bindSession({
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { resetTaskFlowRegistryForTests } from "../../tasks/task-flow-registry.js";
|
||||
import { resetTaskRegistryForTests } from "../../tasks/task-registry.js";
|
||||
import {
|
||||
resetTaskRegistryDeliveryRuntimeForTests,
|
||||
resetTaskRegistryForTests,
|
||||
setTaskRegistryDeliveryRuntimeForTests,
|
||||
} from "../../tasks/task-registry.js";
|
||||
import { createRuntimeTaskFlow } from "./runtime-taskflow.js";
|
||||
import { createRuntimeTaskFlows, createRuntimeTaskRuns } from "./runtime-tasks.js";
|
||||
|
||||
@@ -15,10 +19,6 @@ const hoisted = vi.hoisted(() => {
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("../../tasks/task-registry-delivery-runtime.js", () => ({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
}));
|
||||
|
||||
vi.mock("../../acp/control-plane/manager.js", () => ({
|
||||
getAcpSessionManager: () => ({
|
||||
cancelSession: hoisted.cancelSessionMock,
|
||||
@@ -30,12 +30,19 @@ vi.mock("../../agents/subagent-control.js", () => ({
|
||||
}));
|
||||
|
||||
afterEach(() => {
|
||||
resetTaskRegistryDeliveryRuntimeForTests();
|
||||
resetTaskRegistryForTests();
|
||||
resetTaskFlowRegistryForTests({ persist: false });
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
describe("runtime tasks", () => {
|
||||
beforeEach(() => {
|
||||
setTaskRegistryDeliveryRuntimeForTests({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
});
|
||||
});
|
||||
|
||||
it("exposes canonical task and TaskFlow DTOs without leaking raw registry fields", () => {
|
||||
const legacyTaskFlow = createRuntimeTaskFlow().bindSession({
|
||||
sessionKey: "agent:main:main",
|
||||
|
||||
@@ -25,6 +25,7 @@ import {
|
||||
resetTaskFlowRegistryForTests,
|
||||
} from "./task-flow-registry.js";
|
||||
import {
|
||||
setTaskRegistryDeliveryRuntimeForTests,
|
||||
getTaskById,
|
||||
findLatestTaskForFlowId,
|
||||
findTaskByRunId,
|
||||
@@ -44,10 +45,6 @@ const hoisted = vi.hoisted(() => {
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("./task-registry-delivery-runtime.js", () => ({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
}));
|
||||
|
||||
vi.mock("../acp/control-plane/manager.js", () => ({
|
||||
getAcpSessionManager: () => ({
|
||||
cancelSession: hoisted.cancelSessionMock,
|
||||
@@ -60,6 +57,9 @@ vi.mock("../agents/subagent-control.js", () => ({
|
||||
|
||||
async function withTaskExecutorStateDir(run: (stateDir: string) => Promise<void>): Promise<void> {
|
||||
await withStateDirEnv("openclaw-task-executor-", async ({ stateDir }) => {
|
||||
setTaskRegistryDeliveryRuntimeForTests({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
});
|
||||
resetSystemEventsForTest();
|
||||
resetHeartbeatWakeStateForTests();
|
||||
resetAgentEventsForTest();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { startAcpSpawnParentStreamRelay } from "../agents/acp-spawn-parent-stream.js";
|
||||
import {
|
||||
emitAgentEvent,
|
||||
@@ -29,8 +29,10 @@ import {
|
||||
markTaskRunningByRunId,
|
||||
markTaskTerminalById,
|
||||
recordTaskProgressByRunId,
|
||||
resetTaskRegistryDeliveryRuntimeForTests,
|
||||
resetTaskRegistryForTests,
|
||||
resolveTaskForLookupToken,
|
||||
setTaskRegistryDeliveryRuntimeForTests,
|
||||
setTaskProgressById,
|
||||
setTaskTimingById,
|
||||
updateTaskNotifyPolicyById,
|
||||
@@ -58,10 +60,6 @@ const hoisted = vi.hoisted(() => {
|
||||
};
|
||||
});
|
||||
|
||||
vi.mock("./task-registry-delivery-runtime.js", () => ({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
}));
|
||||
|
||||
vi.mock("../acp/control-plane/manager.js", () => ({
|
||||
getAcpSessionManager: () => ({
|
||||
cancelSession: hoisted.cancelSessionMock,
|
||||
@@ -74,9 +72,6 @@ vi.mock("../agents/subagent-control.js", () => ({
|
||||
|
||||
async function loadFreshTaskRegistryModulesForControlTest() {
|
||||
vi.resetModules();
|
||||
vi.doMock("./task-registry-delivery-runtime.js", () => ({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
}));
|
||||
vi.doMock("../acp/control-plane/manager.js", () => ({
|
||||
getAcpSessionManager: () => ({
|
||||
cancelSession: hoisted.cancelSessionMock,
|
||||
@@ -85,7 +80,11 @@ async function loadFreshTaskRegistryModulesForControlTest() {
|
||||
vi.doMock("../agents/subagent-control.js", () => ({
|
||||
killSubagentRunAdmin: (params: unknown) => hoisted.killSubagentRunAdminMock(params),
|
||||
}));
|
||||
return await import("./task-registry.js");
|
||||
const registry = await import("./task-registry.js");
|
||||
registry.setTaskRegistryDeliveryRuntimeForTests({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
});
|
||||
return registry;
|
||||
}
|
||||
|
||||
async function loadFreshTaskRegistryMaintenanceModuleForTest(params: {
|
||||
@@ -211,6 +210,12 @@ function configureInMemoryTaskStoresForLinkValidationTests() {
|
||||
}
|
||||
|
||||
describe("task-registry", () => {
|
||||
beforeEach(() => {
|
||||
setTaskRegistryDeliveryRuntimeForTests({
|
||||
sendMessage: hoisted.sendMessageMock,
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.useRealTimers();
|
||||
if (ORIGINAL_STATE_DIR === undefined) {
|
||||
@@ -221,6 +226,7 @@ describe("task-registry", () => {
|
||||
resetSystemEventsForTest();
|
||||
resetHeartbeatWakeStateForTests();
|
||||
resetAgentRunContextForTest();
|
||||
resetTaskRegistryDeliveryRuntimeForTests();
|
||||
resetTaskRegistryForTests({ persist: false });
|
||||
resetTaskFlowRegistryForTests({ persist: false });
|
||||
hoisted.sendMessageMock.mockReset();
|
||||
|
||||
@@ -57,6 +57,16 @@ const tasksWithPendingDelivery = new Set<string>();
|
||||
let listenerStarted = false;
|
||||
let listenerStop: (() => void) | null = null;
|
||||
let restoreAttempted = false;
|
||||
type TaskRegistryDeliveryRuntime = Pick<
|
||||
typeof import("./task-registry-delivery-runtime.js"),
|
||||
"sendMessage"
|
||||
>;
|
||||
const TASK_REGISTRY_DELIVERY_RUNTIME_OVERRIDE_KEY = Symbol.for(
|
||||
"openclaw.taskRegistry.deliveryRuntimeOverride",
|
||||
);
|
||||
type TaskRegistryGlobalWithDeliveryOverride = typeof globalThis & {
|
||||
[TASK_REGISTRY_DELIVERY_RUNTIME_OVERRIDE_KEY]?: TaskRegistryDeliveryRuntime | null;
|
||||
};
|
||||
let deliveryRuntimePromise: Promise<typeof import("./task-registry-delivery-runtime.js")> | null =
|
||||
null;
|
||||
let controlRuntimePromise: Promise<typeof import("./task-registry-control.runtime.js")> | null =
|
||||
@@ -361,6 +371,12 @@ function appendTaskEvent(event: {
|
||||
}
|
||||
|
||||
function loadTaskRegistryDeliveryRuntime() {
|
||||
const deliveryRuntimeOverride = (globalThis as TaskRegistryGlobalWithDeliveryOverride)[
|
||||
TASK_REGISTRY_DELIVERY_RUNTIME_OVERRIDE_KEY
|
||||
];
|
||||
if (deliveryRuntimeOverride) {
|
||||
return Promise.resolve(deliveryRuntimeOverride);
|
||||
}
|
||||
deliveryRuntimePromise ??= import("./task-registry-delivery-runtime.js");
|
||||
return deliveryRuntimePromise;
|
||||
}
|
||||
@@ -1934,6 +1950,8 @@ export function resetTaskRegistryForTests(opts?: { persist?: boolean }) {
|
||||
listenerStop = null;
|
||||
}
|
||||
listenerStarted = false;
|
||||
deliveryRuntimePromise = null;
|
||||
controlRuntimePromise = null;
|
||||
if (opts?.persist !== false) {
|
||||
persistTaskRegistry();
|
||||
}
|
||||
@@ -1943,5 +1961,15 @@ export function resetTaskRegistryForTests(opts?: { persist?: boolean }) {
|
||||
}
|
||||
|
||||
export function resetTaskRegistryDeliveryRuntimeForTests() {
|
||||
(globalThis as TaskRegistryGlobalWithDeliveryOverride)[
|
||||
TASK_REGISTRY_DELIVERY_RUNTIME_OVERRIDE_KEY
|
||||
] = null;
|
||||
deliveryRuntimePromise = null;
|
||||
}
|
||||
|
||||
export function setTaskRegistryDeliveryRuntimeForTests(runtime: TaskRegistryDeliveryRuntime): void {
|
||||
(globalThis as TaskRegistryGlobalWithDeliveryOverride)[
|
||||
TASK_REGISTRY_DELIVERY_RUNTIME_OVERRIDE_KEY
|
||||
] = runtime;
|
||||
deliveryRuntimePromise = null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user