mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 21:54:32 +00:00
perf(test): gate monitor runtime logs during vitest
This commit is contained in:
@@ -4,7 +4,6 @@ import { Routes } from "discord-api-types/v10";
|
|||||||
import { inspect } from "node:util";
|
import { inspect } from "node:util";
|
||||||
import type { HistoryEntry } from "../../auto-reply/reply/history.js";
|
import type { HistoryEntry } from "../../auto-reply/reply/history.js";
|
||||||
import type { OpenClawConfig, ReplyToMode } from "../../config/config.js";
|
import type { OpenClawConfig, ReplyToMode } from "../../config/config.js";
|
||||||
import type { RuntimeEnv } from "../../runtime.js";
|
|
||||||
import { resolveTextChunkLimit } from "../../auto-reply/chunk.js";
|
import { resolveTextChunkLimit } from "../../auto-reply/chunk.js";
|
||||||
import { listNativeCommandSpecsForConfig } from "../../auto-reply/commands-registry.js";
|
import { listNativeCommandSpecsForConfig } from "../../auto-reply/commands-registry.js";
|
||||||
import { listSkillCommandsForAgents } from "../../auto-reply/skill-commands.js";
|
import { listSkillCommandsForAgents } from "../../auto-reply/skill-commands.js";
|
||||||
@@ -19,6 +18,7 @@ import { danger, logVerbose, shouldLogVerbose, warn } from "../../globals.js";
|
|||||||
import { formatErrorMessage } from "../../infra/errors.js";
|
import { formatErrorMessage } from "../../infra/errors.js";
|
||||||
import { createDiscordRetryRunner } from "../../infra/retry-policy.js";
|
import { createDiscordRetryRunner } from "../../infra/retry-policy.js";
|
||||||
import { createSubsystemLogger } from "../../logging/subsystem.js";
|
import { createSubsystemLogger } from "../../logging/subsystem.js";
|
||||||
|
import { createNonExitingRuntime, type RuntimeEnv } from "../../runtime.js";
|
||||||
import { resolveDiscordAccount } from "../accounts.js";
|
import { resolveDiscordAccount } from "../accounts.js";
|
||||||
import { attachDiscordGatewayLogging } from "../gateway-logging.js";
|
import { attachDiscordGatewayLogging } from "../gateway-logging.js";
|
||||||
import { getDiscordGatewayEmitter, waitForDiscordGatewayStop } from "../monitor.gateway.js";
|
import { getDiscordGatewayEmitter, waitForDiscordGatewayStop } from "../monitor.gateway.js";
|
||||||
@@ -137,13 +137,7 @@ export async function monitorDiscordProvider(opts: MonitorDiscordOpts = {}) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const runtime: RuntimeEnv = opts.runtime ?? {
|
const runtime: RuntimeEnv = opts.runtime ?? createNonExitingRuntime();
|
||||||
log: console.log,
|
|
||||||
error: console.error,
|
|
||||||
exit: (code: number): never => {
|
|
||||||
throw new Error(`exit ${code}`);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const discordCfg = account.config;
|
const discordCfg = account.config;
|
||||||
const dmConfig = discordCfg.dm;
|
const dmConfig = discordCfg.dm;
|
||||||
|
|||||||
@@ -1,16 +1,8 @@
|
|||||||
import type { RuntimeEnv } from "../../runtime.js";
|
|
||||||
import type { MonitorIMessageOpts } from "./types.js";
|
import type { MonitorIMessageOpts } from "./types.js";
|
||||||
|
import { createNonExitingRuntime, type RuntimeEnv } from "../../runtime.js";
|
||||||
|
|
||||||
export function resolveRuntime(opts: MonitorIMessageOpts): RuntimeEnv {
|
export function resolveRuntime(opts: MonitorIMessageOpts): RuntimeEnv {
|
||||||
return (
|
return opts.runtime ?? createNonExitingRuntime();
|
||||||
opts.runtime ?? {
|
|
||||||
log: console.log,
|
|
||||||
error: console.error,
|
|
||||||
exit: (code: number): never => {
|
|
||||||
throw new Error(`exit ${code}`);
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function normalizeAllowList(list?: Array<string | number>) {
|
export function normalizeAllowList(list?: Array<string | number>) {
|
||||||
|
|||||||
@@ -7,8 +7,22 @@ export type RuntimeEnv = {
|
|||||||
exit: (code: number) => never;
|
exit: (code: number) => never;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function shouldEmitRuntimeLog(env: NodeJS.ProcessEnv = process.env): boolean {
|
||||||
|
if (env.VITEST !== "true") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (env.OPENCLAW_TEST_RUNTIME_LOG === "1") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
const maybeMockedLog = console.log as unknown as { mock?: unknown };
|
||||||
|
return typeof maybeMockedLog.mock === "object";
|
||||||
|
}
|
||||||
|
|
||||||
export const defaultRuntime: RuntimeEnv = {
|
export const defaultRuntime: RuntimeEnv = {
|
||||||
log: (...args: Parameters<typeof console.log>) => {
|
log: (...args: Parameters<typeof console.log>) => {
|
||||||
|
if (!shouldEmitRuntimeLog()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
clearActiveProgressLine();
|
clearActiveProgressLine();
|
||||||
console.log(...args);
|
console.log(...args);
|
||||||
},
|
},
|
||||||
@@ -22,3 +36,22 @@ export const defaultRuntime: RuntimeEnv = {
|
|||||||
throw new Error("unreachable"); // satisfies tests when mocked
|
throw new Error("unreachable"); // satisfies tests when mocked
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export function createNonExitingRuntime(): RuntimeEnv {
|
||||||
|
return {
|
||||||
|
log: (...args: Parameters<typeof console.log>) => {
|
||||||
|
if (!shouldEmitRuntimeLog()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
clearActiveProgressLine();
|
||||||
|
console.log(...args);
|
||||||
|
},
|
||||||
|
error: (...args: Parameters<typeof console.error>) => {
|
||||||
|
clearActiveProgressLine();
|
||||||
|
console.error(...args);
|
||||||
|
},
|
||||||
|
exit: (code: number): never => {
|
||||||
|
throw new Error(`exit ${code}`);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import type { ReplyPayload } from "../auto-reply/types.js";
|
import type { ReplyPayload } from "../auto-reply/types.js";
|
||||||
import type { OpenClawConfig } from "../config/config.js";
|
import type { OpenClawConfig } from "../config/config.js";
|
||||||
import type { SignalReactionNotificationMode } from "../config/types.js";
|
import type { SignalReactionNotificationMode } from "../config/types.js";
|
||||||
import type { RuntimeEnv } from "../runtime.js";
|
|
||||||
import { chunkTextWithMode, resolveChunkMode, resolveTextChunkLimit } from "../auto-reply/chunk.js";
|
import { chunkTextWithMode, resolveChunkMode, resolveTextChunkLimit } from "../auto-reply/chunk.js";
|
||||||
import { DEFAULT_GROUP_HISTORY_LIMIT, type HistoryEntry } from "../auto-reply/reply/history.js";
|
import { DEFAULT_GROUP_HISTORY_LIMIT, type HistoryEntry } from "../auto-reply/reply/history.js";
|
||||||
import { loadConfig } from "../config/config.js";
|
import { loadConfig } from "../config/config.js";
|
||||||
import { waitForTransportReady } from "../infra/transport-ready.js";
|
import { waitForTransportReady } from "../infra/transport-ready.js";
|
||||||
import { saveMediaBuffer } from "../media/store.js";
|
import { saveMediaBuffer } from "../media/store.js";
|
||||||
|
import { createNonExitingRuntime, type RuntimeEnv } from "../runtime.js";
|
||||||
import { normalizeE164 } from "../utils.js";
|
import { normalizeE164 } from "../utils.js";
|
||||||
import { resolveSignalAccount } from "./accounts.js";
|
import { resolveSignalAccount } from "./accounts.js";
|
||||||
import { signalCheck, signalRpcRequest } from "./client.js";
|
import { signalCheck, signalRpcRequest } from "./client.js";
|
||||||
@@ -57,15 +57,7 @@ export type MonitorSignalOpts = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function resolveRuntime(opts: MonitorSignalOpts): RuntimeEnv {
|
function resolveRuntime(opts: MonitorSignalOpts): RuntimeEnv {
|
||||||
return (
|
return opts.runtime ?? createNonExitingRuntime();
|
||||||
opts.runtime ?? {
|
|
||||||
log: console.log,
|
|
||||||
error: console.error,
|
|
||||||
exit: (code: number): never => {
|
|
||||||
throw new Error(`exit ${code}`);
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function normalizeAllowList(raw?: Array<string | number>): string[] {
|
function normalizeAllowList(raw?: Array<string | number>): string[] {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import type { IncomingMessage, ServerResponse } from "node:http";
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
||||||
import SlackBolt from "@slack/bolt";
|
import SlackBolt from "@slack/bolt";
|
||||||
import type { SessionScope } from "../../config/sessions.js";
|
import type { SessionScope } from "../../config/sessions.js";
|
||||||
import type { RuntimeEnv } from "../../runtime.js";
|
|
||||||
import type { MonitorSlackOpts } from "./types.js";
|
import type { MonitorSlackOpts } from "./types.js";
|
||||||
import { resolveTextChunkLimit } from "../../auto-reply/chunk.js";
|
import { resolveTextChunkLimit } from "../../auto-reply/chunk.js";
|
||||||
import { DEFAULT_GROUP_HISTORY_LIMIT } from "../../auto-reply/reply/history.js";
|
import { DEFAULT_GROUP_HISTORY_LIMIT } from "../../auto-reply/reply/history.js";
|
||||||
@@ -10,6 +9,7 @@ import { loadConfig } from "../../config/config.js";
|
|||||||
import { warn } from "../../globals.js";
|
import { warn } from "../../globals.js";
|
||||||
import { installRequestBodyLimitGuard } from "../../infra/http-body.js";
|
import { installRequestBodyLimitGuard } from "../../infra/http-body.js";
|
||||||
import { normalizeMainKey } from "../../routing/session-key.js";
|
import { normalizeMainKey } from "../../routing/session-key.js";
|
||||||
|
import { createNonExitingRuntime, type RuntimeEnv } from "../../runtime.js";
|
||||||
import { resolveSlackAccount } from "../accounts.js";
|
import { resolveSlackAccount } from "../accounts.js";
|
||||||
import { resolveSlackWebClientOptions } from "../client.js";
|
import { resolveSlackWebClientOptions } from "../client.js";
|
||||||
import { normalizeSlackWebhookPath, registerSlackHttpHandler } from "../http/index.js";
|
import { normalizeSlackWebhookPath, registerSlackHttpHandler } from "../http/index.js";
|
||||||
@@ -81,13 +81,7 @@ export async function monitorSlackProvider(opts: MonitorSlackOpts = {}) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const runtime: RuntimeEnv = opts.runtime ?? {
|
const runtime: RuntimeEnv = opts.runtime ?? createNonExitingRuntime();
|
||||||
log: console.log,
|
|
||||||
error: console.error,
|
|
||||||
exit: (code: number): never => {
|
|
||||||
throw new Error(`exit ${code}`);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const slackCfg = account.config;
|
const slackCfg = account.config;
|
||||||
const dmConfig = slackCfg.dm;
|
const dmConfig = slackCfg.dm;
|
||||||
|
|||||||
Reference in New Issue
Block a user