mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-01 03:57:15 +01:00
884913d065
The GitHub Actions PR test workflows run integration/smoke tests out of sources, so each test section launches scripts/code.bat, which runs build/lib/preLaunch.ts. Unlike the Azure Pipelines product builds, the GitHub workflows did not set VSCODE_SKIP_PRELAUNCH, so preLaunch ran on every section and getElectron() unconditionally deleted and re-downloaded .build/electron each time. On Windows this races with file locks held by the just-exited Electron process and intermittently fails the whole job with the bare 'The system cannot find the path specified.' error. - Set VSCODE_SKIP_PRELAUNCH=1 on the unit/integration/remote test steps of the win32, linux and darwin PR workflows, matching Azure Pipelines (the workflows already prepare node_modules, out, built-in extensions and Electron in dedicated steps before the tests run). - Make getElectron() version-aware: skip the destructive re-download when the installed Electron already matches the expected version, falling back to a download on any detection failure. - Make scripts/code.bat fail fast with a clear message when preLaunch.ts fails instead of falling through to launch a missing executable. - Retry rimraf on EBUSY/EPERM (Windows file-lock codes), not just ENOTEMPTY. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
51 lines
1010 B
Batchfile
51 lines
1010 B
Batchfile
@echo off
|
|
setlocal
|
|
|
|
title VSCode Dev
|
|
|
|
pushd %~dp0\..
|
|
|
|
:: Get electron, compile, built-in extensions
|
|
if "%VSCODE_SKIP_PRELAUNCH%"=="" (
|
|
node build/lib/preLaunch.ts || (
|
|
echo Failed to prepare VS Code for launch ^(build/lib/preLaunch.ts^). 1>&2
|
|
exit /b 1
|
|
)
|
|
)
|
|
|
|
set "NAMESHORT="
|
|
for /f "tokens=2 delims=:," %%a in ('findstr /R /C:"\"nameShort\":.*" product.json') do if not defined NAMESHORT set "NAMESHORT=%%~a"
|
|
set NAMESHORT=%NAMESHORT: "=%
|
|
set NAMESHORT=%NAMESHORT:"=%.exe
|
|
set CODE=".build\electron\%NAMESHORT%"
|
|
|
|
:: Manage built-in extensions
|
|
if "%~1"=="--builtin" goto builtin
|
|
|
|
:: Configuration
|
|
set NODE_ENV=development
|
|
set VSCODE_DEV=1
|
|
set VSCODE_CLI=1
|
|
set ELECTRON_ENABLE_LOGGING=1
|
|
set ELECTRON_ENABLE_STACK_DUMPING=1
|
|
|
|
set DISABLE_TEST_EXTENSION="--disable-extension=vscode.vscode-api-tests"
|
|
for %%A in (%*) do (
|
|
if "%%~A"=="--extensionTestsPath" (
|
|
set DISABLE_TEST_EXTENSION=""
|
|
)
|
|
)
|
|
|
|
:: Launch Code
|
|
%CODE% . %DISABLE_TEST_EXTENSION% %*
|
|
goto end
|
|
|
|
:builtin
|
|
%CODE% build/builtin
|
|
|
|
:end
|
|
|
|
popd
|
|
|
|
endlocal
|