From 785f439e9bef7166d5ddc70ae518eb31d59ddfc5 Mon Sep 17 00:00:00 2001 From: walker1211 <13750528578@163.com> Date: Sat, 25 Apr 2026 14:46:34 +0800 Subject: [PATCH] =?UTF-8?q?test(image-analysis):=20=E9=9A=94=E7=A6=BB=20ho?= =?UTF-8?q?ok=20e2e=20=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 避免本机会话的 CCS_IMAGE_ANALYSIS_* 配置污染 e2e 子进程,确保 mock CLIProxy 场景稳定验证。 Co-Authored-By: Claude Opus 4.7 --- tests/e2e/image-analyzer-hook.e2e.test.ts | 43 ++++++++++++++--------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/tests/e2e/image-analyzer-hook.e2e.test.ts b/tests/e2e/image-analyzer-hook.e2e.test.ts index 32607646..d13a3a83 100644 --- a/tests/e2e/image-analyzer-hook.e2e.test.ts +++ b/tests/e2e/image-analyzer-hook.e2e.test.ts @@ -137,6 +137,30 @@ function resetMockState(): void { /** * Invoke the hook with JSON input */ +function buildHookEnv(env: Record = {}): NodeJS.ProcessEnv { + const baseEnv: NodeJS.ProcessEnv = { ...process.env }; + for (const key of Object.keys(baseEnv)) { + if ( + key.startsWith('CCS_IMAGE_ANALYSIS_') || + key === 'CCS_CURRENT_PROVIDER' || + key === 'CCS_PROFILE_TYPE' || + key === 'CCS_CLIPROXY_API_KEY' || + key === 'CCS_CLIPROXY_PORT' + ) { + delete baseEnv[key]; + } + } + + return { + ...baseEnv, + CCS_CLIPROXY_API_KEY: CLIPROXY_API_KEY, + CCS_CLIPROXY_PORT: String(MOCK_PORT), + CCS_IMAGE_ANALYSIS_PROVIDER_MODELS: DEFAULT_PROVIDER_MODELS, + CCS_CURRENT_PROVIDER: DEFAULT_PROVIDER, + ...env, + }; +} + function invokeHook( input: object, env: Record = {} @@ -144,15 +168,7 @@ function invokeHook( const result = spawnSync('node', [HOOK_PATH], { input: JSON.stringify(input), encoding: 'utf8', - env: { - ...process.env, - CCS_CLIPROXY_API_KEY: CLIPROXY_API_KEY, - CCS_CLIPROXY_PORT: String(MOCK_PORT), - // Default provider config for tests (can be overridden) - CCS_IMAGE_ANALYSIS_PROVIDER_MODELS: DEFAULT_PROVIDER_MODELS, - CCS_CURRENT_PROVIDER: DEFAULT_PROVIDER, - ...env, - }, + env: buildHookEnv(env), timeout: 10000, // 10 second timeout per test }); @@ -169,14 +185,7 @@ function invokeHookAsync( ): Promise<{ code: number; stdout: string; stderr: string }> { return new Promise((resolve, reject) => { const child = spawn('node', [HOOK_PATH], { - env: { - ...process.env, - CCS_CLIPROXY_API_KEY: CLIPROXY_API_KEY, - CCS_CLIPROXY_PORT: String(MOCK_PORT), - CCS_IMAGE_ANALYSIS_PROVIDER_MODELS: DEFAULT_PROVIDER_MODELS, - CCS_CURRENT_PROVIDER: DEFAULT_PROVIDER, - ...env, - }, + env: buildHookEnv(env), stdio: ['pipe', 'pipe', 'pipe'], });