gh-115556: Remove quotes from command-line arguments in test.bat and rt.bat (#115557)

This change essentially replaces usage of `%1` with `%~1`, which removes
quotes, if any. Without this change, the if statements fail due to
the quotes mangling the syntax.

Additionally, this change works around comma being treated as a parameter
delimiter in test.bat by escaping commas at time of parsing. Tested
combinations of rt and regrtest arguments, all seems to work as before
but now you can specify commas in arguments like "-uall,extralargefile".
This commit is contained in:
Łukasz Langa 2024-02-16 21:24:56 +01:00 committed by GitHub
parent 74e6f4b32f
commit 711f42de2e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 29 additions and 21 deletions

View File

@ -0,0 +1,2 @@
On Windows, commas passed in arguments to ``Tools\buildbot\test.bat`` and
``PCbuild\\rt.bat`` are now properly handled.

View File

@ -38,18 +38,18 @@ set regrtestargs=--fast-ci
set exe= set exe=
:CheckOpts :CheckOpts
if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts if "%~1"=="-O" (set dashO=-O) & shift & goto CheckOpts
if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts if "%~1"=="-q" (set qmode=yes) & shift & goto CheckOpts
if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts if "%~1"=="-d" (set suffix=_d) & shift & goto CheckOpts
rem HACK: Need some way to infer the version number in this script rem HACK: Need some way to infer the version number in this script
if "%1"=="--disable-gil" (set pyname=python3.13t) & shift & goto CheckOpts if "%~1"=="--disable-gil" (set pyname=python3.13t) & shift & goto CheckOpts
if "%1"=="-win32" (set prefix=%pcbuild%win32) & shift & goto CheckOpts if "%~1"=="-win32" (set prefix=%pcbuild%win32) & shift & goto CheckOpts
if "%1"=="-x64" (set prefix=%pcbuild%amd64) & shift & goto CheckOpts if "%~1"=="-x64" (set prefix=%pcbuild%amd64) & shift & goto CheckOpts
if "%1"=="-amd64" (set prefix=%pcbuild%amd64) & shift & goto CheckOpts if "%~1"=="-amd64" (set prefix=%pcbuild%amd64) & shift & goto CheckOpts
if "%1"=="-arm64" (set prefix=%pcbuild%arm64) & shift & goto CheckOpts if "%~1"=="-arm64" (set prefix=%pcbuild%arm64) & shift & goto CheckOpts
if "%1"=="-arm32" (set prefix=%pcbuild%arm32) & shift & goto CheckOpts if "%~1"=="-arm32" (set prefix=%pcbuild%arm32) & shift & goto CheckOpts
if "%1"=="-p" (call :SetPlatform %~2) & shift & shift & goto CheckOpts if "%~1"=="-p" (call :SetPlatform %~2) & shift & shift & goto CheckOpts
if NOT "%1"=="" (set regrtestargs=%regrtestargs% %1) & shift & goto CheckOpts if NOT "%~1"=="" (set regrtestargs=%regrtestargs% %~1) & shift & goto CheckOpts
if not defined prefix set prefix=%pcbuild%amd64 if not defined prefix set prefix=%pcbuild%amd64
set exe=%prefix%\%pyname%%suffix%.exe set exe=%prefix%\%pyname%%suffix%.exe

View File

@ -7,17 +7,10 @@ set here=%~dp0
set rt_opts=-q -d set rt_opts=-q -d
set regrtest_args= set regrtest_args=
set arm32_ssh= set arm32_ssh=
set cmdline_args=%*
set cmdline_args=%cmdline_args:,=#COMMA#%
:CheckOpts call:CheckOpts %cmdline_args%
if "%1"=="-x64" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if "%1"=="-arm64" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if "%1"=="-arm32" (set rt_opts=%rt_opts% %1) & (set arm32_ssh=true) & shift & goto CheckOpts
if "%1"=="-d" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if "%1"=="-O" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if "%1"=="-q" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if "%1"=="+d" (set rt_opts=%rt_opts:-d=%) & shift & goto CheckOpts
if "%1"=="+q" (set rt_opts=%rt_opts:-q=%) & shift & goto CheckOpts
if NOT "%1"=="" (set regrtest_args=%regrtest_args% %1) & shift & goto CheckOpts
if "%PROCESSOR_ARCHITECTURE%"=="ARM" if "%arm32_ssh%"=="true" goto NativeExecution if "%PROCESSOR_ARCHITECTURE%"=="ARM" if "%arm32_ssh%"=="true" goto NativeExecution
if "%arm32_ssh%"=="true" goto :Arm32Ssh if "%arm32_ssh%"=="true" goto :Arm32Ssh
@ -49,3 +42,16 @@ echo The test worker should have the SSH agent running.
echo Also a key must be created with ssh-keygen and added to both the buildbot worker machine echo Also a key must be created with ssh-keygen and added to both the buildbot worker machine
echo and the ARM32 worker device: see https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/ssh echo and the ARM32 worker device: see https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/ssh
exit /b 127 exit /b 127
:CheckOpts
set arg="%~1"
if %arg%=="-x64" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if %arg%=="-arm64" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if %arg%=="-arm32" (set rt_opts=%rt_opts% %1) & (set arm32_ssh=true) & shift & goto CheckOpts
if %arg%=="-d" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if %arg%=="-O" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if %arg%=="-q" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts
if %arg%=="+d" (set rt_opts=%rt_opts:-d=%) & shift & goto CheckOpts
if %arg%=="+q" (set rt_opts=%rt_opts:-q=%) & shift & goto CheckOpts
if NOT %arg%=="" (set regrtest_args=%regrtest_args% %arg:#COMMA#=,%) & shift & goto CheckOpts
goto:eof