From 10d9df5263f5e14712fa4f9f62b7a686dc55e6ae Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Tue, 17 Feb 2026 20:56:20 -0500 Subject: [PATCH] test: reuse shared env helper in runtime version tests --- src/gateway/server.auth.e2e.test.ts | 39 +++---------------- src/infra/system-presence.version.test.ts | 47 +++++------------------ 2 files changed, 16 insertions(+), 70 deletions(-) diff --git a/src/gateway/server.auth.e2e.test.ts b/src/gateway/server.auth.e2e.test.ts index 93f86a9860..fbf588a407 100644 --- a/src/gateway/server.auth.e2e.test.ts +++ b/src/gateway/server.auth.e2e.test.ts @@ -1,5 +1,6 @@ import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; import { WebSocket } from "ws"; +import { withEnvAsync } from "../test-utils/env.js"; import { GATEWAY_CLIENT_MODES, GATEWAY_CLIENT_NAMES } from "../utils/message-channel.js"; import { buildDeviceAuthPayload } from "./device-auth.js"; import { PROTOCOL_VERSION } from "./protocol/index.js"; @@ -63,39 +64,11 @@ function restoreGatewayToken(prevToken: string | undefined) { } } -const RUNTIME_VERSION_ENV_KEYS = [ - "OPENCLAW_VERSION", - "OPENCLAW_SERVICE_VERSION", - "npm_package_version", -] as const; - -type RuntimeVersionEnvKey = (typeof RUNTIME_VERSION_ENV_KEYS)[number]; -type RuntimeVersionEnv = Partial>; - -async function withRuntimeVersionEnv(env: RuntimeVersionEnv, run: () => Promise): Promise { - const previous = Object.fromEntries( - RUNTIME_VERSION_ENV_KEYS.map((key) => [key, process.env[key]]), - ) as Record; - for (const key of RUNTIME_VERSION_ENV_KEYS) { - const value = env[key]; - if (value === undefined) { - delete process.env[key]; - } else { - process.env[key] = value; - } - } - try { - return await run(); - } finally { - for (const key of RUNTIME_VERSION_ENV_KEYS) { - const value = previous[key]; - if (value === undefined) { - delete process.env[key]; - } else { - process.env[key] = value; - } - } - } +async function withRuntimeVersionEnv( + env: Record, + run: () => Promise, +): Promise { + return withEnvAsync(env, run); } const TEST_OPERATOR_CLIENT = { diff --git a/src/infra/system-presence.version.test.ts b/src/infra/system-presence.version.test.ts index 4fd1321c8c..1eb68efbe6 100644 --- a/src/infra/system-presence.version.test.ts +++ b/src/infra/system-presence.version.test.ts @@ -1,46 +1,19 @@ import { describe, expect, it, vi } from "vitest"; - -const VERSION_ENV_KEYS = [ - "OPENCLAW_VERSION", - "OPENCLAW_SERVICE_VERSION", - "npm_package_version", -] as const; - -type VersionEnvKey = (typeof VERSION_ENV_KEYS)[number]; -type VersionEnv = Partial>; +import { withEnvAsync } from "../test-utils/env.js"; async function withPresenceModule( - env: VersionEnv, + env: Record, run: (module: typeof import("./system-presence.js")) => Promise | T, ): Promise { - const previous = Object.fromEntries( - VERSION_ENV_KEYS.map((key) => [key, process.env[key]]), - ) as Record; - - for (const key of VERSION_ENV_KEYS) { - const value = env[key]; - if (value === undefined) { - delete process.env[key]; - } else { - process.env[key] = value; - } - } - - vi.resetModules(); - try { - const module = await import("./system-presence.js"); - return await run(module); - } finally { - for (const key of VERSION_ENV_KEYS) { - const value = previous[key]; - if (value === undefined) { - delete process.env[key]; - } else { - process.env[key] = value; - } - } + return withEnvAsync(env, async () => { vi.resetModules(); - } + try { + const module = await import("./system-presence.js"); + return await run(module); + } finally { + vi.resetModules(); + } + }); } describe("system-presence version fallback", () => {