From 2a57e8b276e82d24ddd1f72cd01fb03df0e1223f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=93=E8=89=AF?= <1204183885@qq.com> Date: Wed, 15 Jul 2026 09:03:08 +0800 Subject: [PATCH] fix(test): isolate WeCom temporary files across concurrent CI jobs (#6908) * fix(test): isolate WeCom temporary files * test(wecom): preserve real temp root guard --- .../channels/wecom/src/WeComAdapter.test.ts | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/channels/wecom/src/WeComAdapter.test.ts b/packages/channels/wecom/src/WeComAdapter.test.ts index 29e0e605e9..dad5ee6373 100644 --- a/packages/channels/wecom/src/WeComAdapter.test.ts +++ b/packages/channels/wecom/src/WeComAdapter.test.ts @@ -11,7 +11,16 @@ import { } from 'node:fs'; import { tmpdir } from 'node:os'; import { dirname, join } from 'node:path'; -import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + it, + vi, +} from 'vitest'; import type { ChannelAgentBridge, ChannelConfig, @@ -368,7 +377,22 @@ function channelFileDirs(): string[] { return readdirSync(parent).map((entry) => join(parent, entry)); } +// Capture before tests stub TMPDIR; one assertion checks the host temp root. +const realTmpDir = tmpdir(); +const suiteTmpDir = mkdtempSync(join(realTmpDir, 'qwen-wecom-test-')); + describe('WeComChannel', () => { + beforeAll(() => { + vi.stubEnv('TMPDIR', suiteTmpDir); + vi.stubEnv('TMP', suiteTmpDir); + vi.stubEnv('TEMP', suiteTmpDir); + }); + + afterAll(() => { + vi.unstubAllEnvs(); + rmSync(suiteTmpDir, { recursive: true, force: true }); + }); + beforeEach(() => { mocks.instances.length = 0; mocks.httpCalls.length = 0; @@ -4389,7 +4413,7 @@ describe('WeComChannel', () => { }); it('does not allow a hardcoded /tmp channel-files fallback', async () => { - if (tmpdir() === '/tmp') return; + if (realTmpDir === '/tmp') return; const stderr = vi .spyOn(process.stderr, 'write')