mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 10:30:44 +00:00
test: share gateway live env helpers
This commit is contained in:
@@ -25,6 +25,7 @@ import {
|
||||
runOpenClawCliJson,
|
||||
type CronListJob,
|
||||
} from "./live-agent-probes.js";
|
||||
import { restoreLiveEnv, snapshotLiveEnv, type LiveEnvSnapshot } from "./live-env-test-helpers.js";
|
||||
import { renderCatFacePngBase64 } from "./live-image-probe.js";
|
||||
|
||||
const LIVE = isLiveTestEnabled();
|
||||
@@ -65,20 +66,6 @@ type CapturedAgentEvent = {
|
||||
sessionKey?: string;
|
||||
};
|
||||
|
||||
type EnvSnapshot = {
|
||||
agentRuntime?: string;
|
||||
configPath?: string;
|
||||
gatewayToken?: string;
|
||||
openaiApiKey?: string;
|
||||
openaiBaseUrl?: string;
|
||||
skipBrowserControl?: string;
|
||||
skipCanvas?: string;
|
||||
skipChannels?: string;
|
||||
skipCron?: string;
|
||||
skipGmail?: string;
|
||||
stateDir?: string;
|
||||
};
|
||||
|
||||
function resolveLiveTimeoutMs(raw: string | undefined, fallback: number): number {
|
||||
const parsed = raw ? Number(raw) : Number.NaN;
|
||||
return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : fallback;
|
||||
@@ -109,42 +96,12 @@ async function subscribeCodexLiveDebugEvents(sessionKey: string): Promise<() =>
|
||||
});
|
||||
}
|
||||
|
||||
function snapshotEnv(): EnvSnapshot {
|
||||
return {
|
||||
agentRuntime: process.env.OPENCLAW_AGENT_RUNTIME,
|
||||
configPath: process.env.OPENCLAW_CONFIG_PATH,
|
||||
gatewayToken: process.env.OPENCLAW_GATEWAY_TOKEN,
|
||||
openaiApiKey: process.env.OPENAI_API_KEY,
|
||||
openaiBaseUrl: process.env.OPENAI_BASE_URL,
|
||||
skipBrowserControl: process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER,
|
||||
skipCanvas: process.env.OPENCLAW_SKIP_CANVAS_HOST,
|
||||
skipChannels: process.env.OPENCLAW_SKIP_CHANNELS,
|
||||
skipCron: process.env.OPENCLAW_SKIP_CRON,
|
||||
skipGmail: process.env.OPENCLAW_SKIP_GMAIL_WATCHER,
|
||||
stateDir: process.env.OPENCLAW_STATE_DIR,
|
||||
};
|
||||
function snapshotEnv(): LiveEnvSnapshot {
|
||||
return snapshotLiveEnv();
|
||||
}
|
||||
|
||||
function restoreEnv(snapshot: EnvSnapshot): void {
|
||||
restoreEnvVar("OPENCLAW_AGENT_RUNTIME", snapshot.agentRuntime);
|
||||
restoreEnvVar("OPENCLAW_CONFIG_PATH", snapshot.configPath);
|
||||
restoreEnvVar("OPENCLAW_GATEWAY_TOKEN", snapshot.gatewayToken);
|
||||
restoreEnvVar("OPENAI_API_KEY", snapshot.openaiApiKey);
|
||||
restoreEnvVar("OPENAI_BASE_URL", snapshot.openaiBaseUrl);
|
||||
restoreEnvVar("OPENCLAW_SKIP_BROWSER_CONTROL_SERVER", snapshot.skipBrowserControl);
|
||||
restoreEnvVar("OPENCLAW_SKIP_CANVAS_HOST", snapshot.skipCanvas);
|
||||
restoreEnvVar("OPENCLAW_SKIP_CHANNELS", snapshot.skipChannels);
|
||||
restoreEnvVar("OPENCLAW_SKIP_CRON", snapshot.skipCron);
|
||||
restoreEnvVar("OPENCLAW_SKIP_GMAIL_WATCHER", snapshot.skipGmail);
|
||||
restoreEnvVar("OPENCLAW_STATE_DIR", snapshot.stateDir);
|
||||
}
|
||||
|
||||
function restoreEnvVar(name: string, value: string | undefined): void {
|
||||
if (value === undefined) {
|
||||
delete process.env[name];
|
||||
return;
|
||||
}
|
||||
process.env[name] = value;
|
||||
function restoreEnv(snapshot: LiveEnvSnapshot): void {
|
||||
restoreLiveEnv(snapshot);
|
||||
}
|
||||
|
||||
async function getFreeGatewayPort(): Promise<number> {
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
ensurePairedTestGatewayClientIdentity,
|
||||
getFreeGatewayPort,
|
||||
} from "./gateway-cli-backend.live-helpers.js";
|
||||
import { restoreLiveEnv, snapshotLiveEnv, type LiveEnvSnapshot } from "./live-env-test-helpers.js";
|
||||
import { extractPayloadText } from "./test-helpers.agent-results.js";
|
||||
|
||||
const LIVE = isLiveTestEnabled();
|
||||
@@ -23,22 +24,6 @@ const GATEWAY_CONNECT_TIMEOUT_MS = 60_000;
|
||||
const AGENT_REQUEST_TIMEOUT_MS = 180_000;
|
||||
const DEFAULT_CODEX_MODEL = "codex/gpt-5.4";
|
||||
|
||||
type EnvSnapshot = {
|
||||
agentRuntime?: string;
|
||||
configPath?: string;
|
||||
gatewayToken?: string;
|
||||
openaiApiKey?: string;
|
||||
openaiBaseUrl?: string;
|
||||
skipBrowserControl?: string;
|
||||
skipCanvas?: string;
|
||||
skipChannels?: string;
|
||||
skipCron?: string;
|
||||
skipGmail?: string;
|
||||
stateDir?: string;
|
||||
trajectory?: string;
|
||||
trajectoryDir?: string;
|
||||
};
|
||||
|
||||
function logLiveStep(step: string, details?: Record<string, unknown>): void {
|
||||
if (!CODEX_HARNESS_DEBUG) {
|
||||
return;
|
||||
@@ -47,46 +32,12 @@ function logLiveStep(step: string, details?: Record<string, unknown>): void {
|
||||
console.error(`[gateway-trajectory-live] ${step}${suffix}`);
|
||||
}
|
||||
|
||||
function snapshotEnv(): EnvSnapshot {
|
||||
return {
|
||||
agentRuntime: process.env.OPENCLAW_AGENT_RUNTIME,
|
||||
configPath: process.env.OPENCLAW_CONFIG_PATH,
|
||||
gatewayToken: process.env.OPENCLAW_GATEWAY_TOKEN,
|
||||
openaiApiKey: process.env.OPENAI_API_KEY,
|
||||
openaiBaseUrl: process.env.OPENAI_BASE_URL,
|
||||
skipBrowserControl: process.env.OPENCLAW_SKIP_BROWSER_CONTROL_SERVER,
|
||||
skipCanvas: process.env.OPENCLAW_SKIP_CANVAS_HOST,
|
||||
skipChannels: process.env.OPENCLAW_SKIP_CHANNELS,
|
||||
skipCron: process.env.OPENCLAW_SKIP_CRON,
|
||||
skipGmail: process.env.OPENCLAW_SKIP_GMAIL_WATCHER,
|
||||
stateDir: process.env.OPENCLAW_STATE_DIR,
|
||||
trajectory: process.env.OPENCLAW_TRAJECTORY,
|
||||
trajectoryDir: process.env.OPENCLAW_TRAJECTORY_DIR,
|
||||
};
|
||||
function snapshotEnv(): LiveEnvSnapshot {
|
||||
return snapshotLiveEnv(["OPENCLAW_TRAJECTORY", "OPENCLAW_TRAJECTORY_DIR"]);
|
||||
}
|
||||
|
||||
function restoreEnv(snapshot: EnvSnapshot): void {
|
||||
restoreEnvVar("OPENCLAW_AGENT_RUNTIME", snapshot.agentRuntime);
|
||||
restoreEnvVar("OPENCLAW_CONFIG_PATH", snapshot.configPath);
|
||||
restoreEnvVar("OPENCLAW_GATEWAY_TOKEN", snapshot.gatewayToken);
|
||||
restoreEnvVar("OPENAI_API_KEY", snapshot.openaiApiKey);
|
||||
restoreEnvVar("OPENAI_BASE_URL", snapshot.openaiBaseUrl);
|
||||
restoreEnvVar("OPENCLAW_SKIP_BROWSER_CONTROL_SERVER", snapshot.skipBrowserControl);
|
||||
restoreEnvVar("OPENCLAW_SKIP_CANVAS_HOST", snapshot.skipCanvas);
|
||||
restoreEnvVar("OPENCLAW_SKIP_CHANNELS", snapshot.skipChannels);
|
||||
restoreEnvVar("OPENCLAW_SKIP_CRON", snapshot.skipCron);
|
||||
restoreEnvVar("OPENCLAW_SKIP_GMAIL_WATCHER", snapshot.skipGmail);
|
||||
restoreEnvVar("OPENCLAW_STATE_DIR", snapshot.stateDir);
|
||||
restoreEnvVar("OPENCLAW_TRAJECTORY", snapshot.trajectory);
|
||||
restoreEnvVar("OPENCLAW_TRAJECTORY_DIR", snapshot.trajectoryDir);
|
||||
}
|
||||
|
||||
function restoreEnvVar(name: string, value: string | undefined): void {
|
||||
if (value === undefined) {
|
||||
delete process.env[name];
|
||||
return;
|
||||
}
|
||||
process.env[name] = value;
|
||||
function restoreEnv(snapshot: LiveEnvSnapshot): void {
|
||||
restoreLiveEnv(snapshot);
|
||||
}
|
||||
|
||||
async function writeLiveGatewayConfig(params: {
|
||||
|
||||
33
src/gateway/live-env-test-helpers.ts
Normal file
33
src/gateway/live-env-test-helpers.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
const COMMON_LIVE_ENV_NAMES = [
|
||||
"OPENCLAW_AGENT_RUNTIME",
|
||||
"OPENCLAW_CONFIG_PATH",
|
||||
"OPENCLAW_GATEWAY_TOKEN",
|
||||
"OPENAI_API_KEY",
|
||||
"OPENAI_BASE_URL",
|
||||
"OPENCLAW_SKIP_BROWSER_CONTROL_SERVER",
|
||||
"OPENCLAW_SKIP_CANVAS_HOST",
|
||||
"OPENCLAW_SKIP_CHANNELS",
|
||||
"OPENCLAW_SKIP_CRON",
|
||||
"OPENCLAW_SKIP_GMAIL_WATCHER",
|
||||
"OPENCLAW_STATE_DIR",
|
||||
] as const;
|
||||
|
||||
export type LiveEnvSnapshot = Record<string, string | undefined>;
|
||||
|
||||
export function snapshotLiveEnv(extraNames: readonly string[] = []): LiveEnvSnapshot {
|
||||
const snapshot: LiveEnvSnapshot = {};
|
||||
for (const name of [...COMMON_LIVE_ENV_NAMES, ...extraNames]) {
|
||||
snapshot[name] = process.env[name];
|
||||
}
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
export function restoreLiveEnv(snapshot: LiveEnvSnapshot): void {
|
||||
for (const [name, value] of Object.entries(snapshot)) {
|
||||
if (value === undefined) {
|
||||
delete process.env[name];
|
||||
} else {
|
||||
process.env[name] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user