Files
moltbot/src/test-utils/plugin-runtime-env.ts
2026-04-28 01:13:01 +01:00

39 lines
1.1 KiB
TypeScript

import type { OutputRuntimeEnv, RuntimeEnv } from "openclaw/plugin-sdk/runtime";
import { vi } from "vitest";
type RuntimeEnvOptions = {
throwOnExit?: boolean;
};
export function createRuntimeEnv(options?: RuntimeEnvOptions): OutputRuntimeEnv {
const throwOnExit = options?.throwOnExit ?? true;
return {
log: vi.fn(),
error: vi.fn(),
writeStdout: vi.fn(),
writeJson: vi.fn(),
exit: throwOnExit
? vi.fn((code: number): never => {
throw new Error(`exit ${code}`);
})
: vi.fn(),
};
}
export function createTypedRuntimeEnv<TRuntime extends RuntimeEnv = OutputRuntimeEnv>(
options?: RuntimeEnvOptions,
_runtimeShape?: (runtime: TRuntime) => void,
): TRuntime {
return createRuntimeEnv(options) as unknown as TRuntime;
}
export function createNonExitingRuntimeEnv(): OutputRuntimeEnv {
return createRuntimeEnv({ throwOnExit: false });
}
export function createNonExitingTypedRuntimeEnv<TRuntime extends RuntimeEnv = OutputRuntimeEnv>(
runtimeShape?: (runtime: TRuntime) => void,
): TRuntime {
return createTypedRuntimeEnv<TRuntime>({ throwOnExit: false }, runtimeShape);
}