From 292c0da5250770d19e413d5311c5b42342e82db8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=93=E8=89=AF?= <1204183885@qq.com> Date: Mon, 2 Nov 2026 15:44:05 +0800 Subject: [PATCH] test(install): pin Windows PATH persistence contract (#16072) * test(install): pin Windows PATH persistence contract Co-authored-by: Qwen-Coder * test(install): format the pinned PATH assertion Prettier collapses the single-string expect(...).toContain(...) call at 76 columns, which the incremental lint gate rejected on the previous head. Co-authored-by: Qwen-Coder Patrol-Run: qwen-pr-closeout/jmvygjkzk7s --------- Co-authored-by: Qwen-Coder --- scripts/tests/install-script.test.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/tests/install-script.test.js b/scripts/tests/install-script.test.js index 90d7e2133d3..3548d33aafa 100644 --- a/scripts/tests/install-script.test.js +++ b/scripts/tests/install-script.test.js @@ -1424,6 +1424,28 @@ describe('standalone release packaging', () => { ); }); + it('persists the Windows install bin unless PATH updates are disabled', () => { + const script = readScript( + 'scripts/installation/install-qwen-standalone.bat', + ); + const maybeUpdatePath = readBatchRoutine(script, 'MaybeUpdatePath'); + + expect(script).toContain( + 'if not "!EXTRA_BIN!"=="" if /i not "!NO_MODIFY_PATH!"=="1" (', + ); + expect(script).toContain( + 'call :PrintFinalInstructions "!INSTALL_BIN_DIR!" "!INSTALL_DIR!" "standalone"', + ); + expect(script).toContain('call :MaybeUpdatePath "!EXTRA_BIN!"'); + expect(maybeUpdatePath).toContain('set "QWEN_PATH_SCOPE=!PATH_SCOPE!"'); + expect(maybeUpdatePath).toContain( + "$target = if ($scope -ieq 'machine') { 'Machine' } else { 'User' }", + ); + expect(maybeUpdatePath).toContain( + "[Environment]::SetEnvironmentVariable('Path', $newPath, $target)", + ); + }); + it('stages hosted installation assets with checksums', async () => { const { HOSTED_INSTALLATION_ASSET_NAMES,