summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorƁukasz Langa <lukasz@langa.pl>2024-02-16 20:24:56 (GMT)
committerGitHub <noreply@github.com>2024-02-16 20:24:56 (GMT)
commit711f42de2e3749208cfa7effa0d45b04e4e1fdd4 (patch)
tree73f961663da94c3fc700b5d7664e0eb7da15cfad
parent74e6f4b32fceea8e8ffb0424d9bdc6589faf7ee4 (diff)
downloadcpython-711f42de2e3749208cfa7effa0d45b04e4e1fdd4.zip
cpython-711f42de2e3749208cfa7effa0d45b04e4e1fdd4.tar.gz
cpython-711f42de2e3749208cfa7effa0d45b04e4e1fdd4.tar.bz2
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".
-rw-r--r--Misc/NEWS.d/next/Tests/2024-02-16-13-04-28.gh-issue-115556.rjaQ9w.rst2
-rw-r--r--PCbuild/rt.bat22
-rw-r--r--Tools/buildbot/test.bat26
3 files changed, 29 insertions, 21 deletions
diff --git a/Misc/NEWS.d/next/Tests/2024-02-16-13-04-28.gh-issue-115556.rjaQ9w.rst b/Misc/NEWS.d/next/Tests/2024-02-16-13-04-28.gh-issue-115556.rjaQ9w.rst
new file mode 100644
index 0000000..c2811b1
--- /dev/null
+++ b/Misc/NEWS.d/next/Tests/2024-02-16-13-04-28.gh-issue-115556.rjaQ9w.rst
@@ -0,0 +1,2 @@
+On Windows, commas passed in arguments to ``Tools\buildbot\test.bat`` and
+``PCbuild\\rt.bat`` are now properly handled.
diff --git a/PCbuild/rt.bat b/PCbuild/rt.bat
index 293f99a..ac530a5 100644
--- a/PCbuild/rt.bat
+++ b/PCbuild/rt.bat
@@ -38,18 +38,18 @@ set regrtestargs=--fast-ci
set exe=
:CheckOpts
-if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts
-if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts
-if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts
+if "%~1"=="-O" (set dashO=-O) & shift & goto CheckOpts
+if "%~1"=="-q" (set qmode=yes) & 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
-if "%1"=="--disable-gil" (set pyname=python3.13t) & 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"=="-amd64" (set prefix=%pcbuild%amd64) & 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"=="-p" (call :SetPlatform %~2) & shift & shift & goto CheckOpts
-if NOT "%1"=="" (set regrtestargs=%regrtestargs% %1) & 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"=="-x64" (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"=="-arm32" (set prefix=%pcbuild%arm32) & 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 defined prefix set prefix=%pcbuild%amd64
set exe=%prefix%\%pyname%%suffix%.exe
diff --git a/Tools/buildbot/test.bat b/Tools/buildbot/test.bat
index 781f9a4..0c47470 100644
--- a/Tools/buildbot/test.bat
+++ b/Tools/buildbot/test.bat
@@ -7,17 +7,10 @@ set here=%~dp0
set rt_opts=-q -d
set regrtest_args=
set arm32_ssh=
+set cmdline_args=%*
+set cmdline_args=%cmdline_args:,=#COMMA#%
-:CheckOpts
-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
+call:CheckOpts %cmdline_args%
if "%PROCESSOR_ARCHITECTURE%"=="ARM" if "%arm32_ssh%"=="true" goto NativeExecution
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 and the ARM32 worker device: see https://docs.microsoft.com/en-us/windows/iot-core/connect-your-device/ssh
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