From f8a74c554745783ea4e63d83463f73637607eb7d Mon Sep 17 00:00:00 2001 From: DennisYu07 <617072224@qq.com> Date: Tue, 7 Jul 2026 15:55:59 +0800 Subject: [PATCH] fix(test): clear CI env vars in showFallbackMessage tests supportsOsc8Hyperlinks() short-circuits on CI runners because the CI env var is set, causing all OSC 8 detection tests to fail. Clear all terminal-detection env vars in beforeEach so each test starts from a known clean state. Co-authored-by: Qwen-Coder --- packages/core/src/qwen/qwenOAuth2.test.ts | 29 ++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/core/src/qwen/qwenOAuth2.test.ts b/packages/core/src/qwen/qwenOAuth2.test.ts index 4fa914ce07..ad563182d1 100644 --- a/packages/core/src/qwen/qwenOAuth2.test.ts +++ b/packages/core/src/qwen/qwenOAuth2.test.ts @@ -2400,8 +2400,35 @@ describe('showFallbackMessage', () => { stderrWriteSpy = vi .spyOn(process.stderr, 'write') .mockImplementation(() => true); - // Reset env + // Reset env — clear CI and other terminal-detection vars so + // supportsOsc8Hyperlinks() doesn't short-circuit on CI runners. process.env = { ...ORIGINAL_ENV }; + delete process.env['CI']; + delete process.env['TMUX']; + delete process.env['STY']; + delete process.env['TERM_PROGRAM']; + delete process.env['TERM_PROGRAM_VERSION']; + delete process.env['WT_SESSION']; + delete process.env['KITTY_WINDOW_ID']; + delete process.env['VTE_VERSION']; + delete process.env['DOMTERM']; + delete process.env['GHOSTTY_RESOURCES_DIR']; + delete process.env['KONSOLE_VERSION']; + delete process.env['TERMINAL_EMULATOR']; + delete process.env['ALACRITTY_LOG']; + delete process.env['ALACRITTY_WINDOW_ID']; + delete process.env['ALACRITTY_SOCKET']; + delete process.env['FORCE_HYPERLINK']; + delete process.env['QWEN_DISABLE_HYPERLINKS']; + delete process.env['TEAMCITY_VERSION']; + // Keep TERM but clear known OSC 8 terminal names + if ( + ['xterm-kitty', 'xterm-ghostty', 'alacritty'].includes( + process.env['TERM'] ?? '', + ) + ) { + delete process.env['TERM']; + } }); afterEach(() => {