From 225431665a7217550d367f7c9ea2c64d0042999d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 3 Apr 2026 11:59:01 +0100 Subject: [PATCH] test: trim telegram media retry import cost --- .../bot/delivery.resolve-media-retry.test.ts | 20 ++++------ .../src/bot/delivery.resolve-media.runtime.ts | 15 ++++++++ .../src/bot/delivery.resolve-media.ts | 21 +++++----- extensions/telegram/src/fetch.test.ts | 38 ++++++++++++------- test/fixtures/test-timings.extensions.json | 4 +- 5 files changed, 61 insertions(+), 37 deletions(-) create mode 100644 extensions/telegram/src/bot/delivery.resolve-media.runtime.ts diff --git a/extensions/telegram/src/bot/delivery.resolve-media-retry.test.ts b/extensions/telegram/src/bot/delivery.resolve-media-retry.test.ts index 0b3a615ed36..904eb008cec 100644 --- a/extensions/telegram/src/bot/delivery.resolve-media-retry.test.ts +++ b/extensions/telegram/src/bot/delivery.resolve-media-retry.test.ts @@ -1,27 +1,23 @@ import type { Message } from "@grammyjs/types"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { retryAsync } from "../../../../src/infra/retry.js"; import { resolveMedia } from "./delivery.resolve-media.js"; import type { TelegramContext } from "./types.js"; const saveMediaBuffer = vi.fn(); const fetchRemoteMedia = vi.fn(); -vi.mock("openclaw/plugin-sdk/media-runtime", async (importOriginal) => { - const actual = await importOriginal(); +vi.mock("./delivery.resolve-media.runtime.js", () => { return { - ...actual, - saveMediaBuffer: (...args: unknown[]) => saveMediaBuffer(...args), fetchRemoteMedia: (...args: unknown[]) => fetchRemoteMedia(...args), - }; -}); - -vi.mock("openclaw/plugin-sdk/runtime-env", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, + formatErrorMessage: (err: unknown) => (err instanceof Error ? err.message : String(err)), logVerbose: () => {}, + resolveTelegramApiBase: (apiRoot?: string) => + apiRoot?.trim() ? apiRoot.replace(/\/+$/u, "") : "https://api.telegram.org", + retryAsync, + saveMediaBuffer: (...args: unknown[]) => saveMediaBuffer(...args), + shouldRetryTelegramTransportFallback: vi.fn(() => false), warn: (s: string) => s, - danger: (s: string) => s, }; }); diff --git a/extensions/telegram/src/bot/delivery.resolve-media.runtime.ts b/extensions/telegram/src/bot/delivery.resolve-media.runtime.ts new file mode 100644 index 00000000000..d966179387f --- /dev/null +++ b/extensions/telegram/src/bot/delivery.resolve-media.runtime.ts @@ -0,0 +1,15 @@ +import { fetchRemoteMedia, saveMediaBuffer } from "openclaw/plugin-sdk/media-runtime"; +import { logVerbose, retryAsync, warn } from "openclaw/plugin-sdk/runtime-env"; +import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime"; +import { resolveTelegramApiBase, shouldRetryTelegramTransportFallback } from "../fetch.js"; + +export { + fetchRemoteMedia, + formatErrorMessage, + logVerbose, + resolveTelegramApiBase, + retryAsync, + saveMediaBuffer, + shouldRetryTelegramTransportFallback, + warn, +}; diff --git a/extensions/telegram/src/bot/delivery.resolve-media.ts b/extensions/telegram/src/bot/delivery.resolve-media.ts index 6a242420eb1..073b381167e 100644 --- a/extensions/telegram/src/bot/delivery.resolve-media.ts +++ b/extensions/telegram/src/bot/delivery.resolve-media.ts @@ -1,16 +1,17 @@ import path from "node:path"; import { GrammyError } from "grammy"; -import { fetchRemoteMedia } from "openclaw/plugin-sdk/media-runtime"; -import { saveMediaBuffer } from "openclaw/plugin-sdk/media-runtime"; -import { logVerbose, warn } from "openclaw/plugin-sdk/runtime-env"; -import { retryAsync } from "openclaw/plugin-sdk/runtime-env"; -import { formatErrorMessage } from "openclaw/plugin-sdk/ssrf-runtime"; -import { - resolveTelegramApiBase, - shouldRetryTelegramTransportFallback, - type TelegramTransport, -} from "../fetch.js"; +import type { TelegramTransport } from "../fetch.js"; import { cacheSticker, getCachedSticker } from "../sticker-cache.js"; +import { + fetchRemoteMedia, + formatErrorMessage, + logVerbose, + resolveTelegramApiBase, + retryAsync, + saveMediaBuffer, + shouldRetryTelegramTransportFallback, + warn, +} from "./delivery.resolve-media.runtime.js"; import { resolveTelegramMediaPlaceholder } from "./helpers.js"; import type { StickerMetadata, TelegramContext } from "./types.js"; diff --git a/extensions/telegram/src/fetch.test.ts b/extensions/telegram/src/fetch.test.ts index 3860d298851..ed592c9c908 100644 --- a/extensions/telegram/src/fetch.test.ts +++ b/extensions/telegram/src/fetch.test.ts @@ -56,24 +56,36 @@ vi.mock("undici", () => ({ setGlobalDispatcher, })); -vi.mock("openclaw/plugin-sdk/runtime-env", async (importOriginal) => { - const actual = await importOriginal(); - return { - ...actual, - createSubsystemLogger: () => ({ +vi.mock("openclaw/plugin-sdk/runtime-env", () => ({ + createSubsystemLogger: () => ({ + info: loggerInfo, + debug: loggerDebug, + warn: vi.fn(), + error: vi.fn(), + child: () => ({ info: loggerInfo, debug: loggerDebug, warn: vi.fn(), error: vi.fn(), - child: () => ({ - info: loggerInfo, - debug: loggerDebug, - warn: vi.fn(), - error: vi.fn(), - }), }), - }; -}); + }), + isTruthyEnvValue: (value?: string) => { + if (typeof value !== "string") { + return false; + } + switch (value.trim().toLowerCase()) { + case "": + case "0": + case "false": + case "no": + case "off": + return false; + default: + return true; + } + }, + isWSL2Sync: () => false, +})); let resolveFetch: typeof import("../../../src/infra/fetch.js").resolveFetch; let resolveTelegramFetch: typeof import("./fetch.js").resolveTelegramFetch; diff --git a/test/fixtures/test-timings.extensions.json b/test/fixtures/test-timings.extensions.json index fae1d20161b..e6c4bcf5a70 100644 --- a/test/fixtures/test-timings.extensions.json +++ b/test/fixtures/test-timings.extensions.json @@ -1048,11 +1048,11 @@ "testCount": 5 }, "extensions/telegram/src/bot/delivery.resolve-media-retry.test.ts": { - "durationMs": 10360, + "durationMs": 2720, "testCount": 27 }, "extensions/telegram/src/fetch.test.ts": { - "durationMs": 750, + "durationMs": 269, "testCount": 23 } }