From a1f83a0dfa9af269bede412d15ff1850b0511856 Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Thu, 20 Nov 2025 15:11:33 -0500 Subject: [PATCH 1/3] update test scripts to cleanup leaked error codes --- requirements/packs/scripts/_pytest.bat | 43 +++++++++++++------------- requirements/packs/scripts/_pytest.sh | 14 +++------ 2 files changed, 27 insertions(+), 30 deletions(-) diff --git a/requirements/packs/scripts/_pytest.bat b/requirements/packs/scripts/_pytest.bat index e09eec9..b3de7f1 100644 --- a/requirements/packs/scripts/_pytest.bat +++ b/requirements/packs/scripts/_pytest.bat @@ -1,12 +1,7 @@ @echo off -REM Usage: -REM _pytest.bat urls.txt -REM _pytest.bat https://host/a.tar.gz https://host/b.tgz -REM From ChatGPT - setlocal EnableExtensions EnableDelayedExpansion -REM ---- temp workspace under %TEMP% ---- +REM ---- temp workspace ---- set "TMPROOT=%TEMP%\remote_tests_%RANDOM%%RANDOM%" md "%TMPROOT%" || (echo Failed to create TMPROOT & exit /b 1) @@ -28,39 +23,42 @@ pushd "%TMPROOT%" >nul || (echo Failed to enter TMPROOT & exit /b 1) set /a i=0 set /a overall_ec=0 -REM read URL file line-by-line; hand off each line to a subroutine for /f "usebackq delims=" %%L in ("%URLS_FILE%") do call :process_one "%%L" popd >nul + +REM -------- CLEANUP: do not poison exit code -------- rmdir /s /q "%TMPROOT%" >nul 2>&1 +ver >nul REM reset errorlevel to 0 + +REM ---- FINAL EXIT ---- exit /b %overall_ec% -REM ===================== subroutine ===================== + +REM =================================================== :process_one setlocal EnableExtensions EnableDelayedExpansion -REM grab the raw line and trim leading spaces set "url=%~1" if "%url%"=="" (endlocal & goto :eof) + :trim if not "%url:~0,1%"==" " goto :trim_done set "url=%url:~1%" goto trim :trim_done -REM skip comments if "%url:~0,1%"=="#" (endlocal & goto :eof) -REM ----- do the work for this URL ----- endlocal & set /a i+=1 & set "URL=%url%" + echo( -echo ==> [%i%] +echo ==> [%i%] %URL% set "PKGDIR=%TMPROOT%\pkg_%i%" -md "%PKGDIR%" +md "%PKGDIR%" >nul 2>&1 pushd "%PKGDIR%" >nul || goto :after -REM download archive into PKGDIR curl -L --fail -o "archive.tar.gz" "%URL%" if errorlevel 1 ( echo curl failed @@ -68,7 +66,6 @@ if errorlevel 1 ( popd >nul & goto :after ) -REM extract (try gzip flags, then plain) tar -xzf "archive.tar.gz" >nul 2>&1 if errorlevel 1 tar -xf "archive.tar.gz" >nul 2>&1 if errorlevel 1 ( @@ -77,23 +74,21 @@ if errorlevel 1 ( popd >nul & goto :after ) -REM get first entry (try -tzf, then -tf) set "FIRST=" for /f "delims=" %%F in ('tar -tzf "archive.tar.gz" 2^>nul') do set "FIRST=%%F" & goto got_first for /f "delims=" %%F in ('tar -tf "archive.tar.gz" 2^>nul') do set "FIRST=%%F" & goto got_first :got_first -REM choose project root (top dir if present) set "PROJROOT=%CD%" if defined FIRST for /f "tokens=1 delims=/" %%T in ("%FIRST%") do if exist ".\%%T\" set "PROJROOT=%CD%\%%T" -REM mirror original: drop src\ if present -if exist "%PROJROOT%\src\" rmdir /s /q "%PROJROOT%\src" >nul 2>&1 +if exist "%PROJROOT%\src\" rmdir /s /q "%PROJROOT%\src" >nul 2>&1 & ver >nul -REM run pytest from repo root (with tests on PYTHONPATH if exists) pushd "%PROJROOT%" >nul -echo Running pytest in: "%CD%" +echo Running pytest in "%CD%" + set "OLD_PYTHONPATH=%PYTHONPATH%" + if exist "tests\" ( if defined OLD_PYTHONPATH ( set "PYTHONPATH=%CD%;tests;%OLD_PYTHONPATH%" @@ -107,12 +102,18 @@ if exist "tests\" ( set "PYTHONPATH=%CD%" ) ) + pytest if errorlevel 1 set /a overall_ec=1 + set "PYTHONPATH=%OLD_PYTHONPATH%" popd >nul popd >nul + :after +REM cleanup without poisoning errorlevel rmdir /s /q "%PKGDIR%" >nul 2>&1 +ver >nul + goto :eof diff --git a/requirements/packs/scripts/_pytest.sh b/requirements/packs/scripts/_pytest.sh index 4fbe295..4556368 100644 --- a/requirements/packs/scripts/_pytest.sh +++ b/requirements/packs/scripts/_pytest.sh @@ -1,9 +1,4 @@ #!/usr/bin/env bash -# Usage: -# ./_pytest.sh urls.txt -# ./_pytest.sh https://host/a.tar.gz https://host/b.tgz -# From ChatGPT - set -euo pipefail URLS=() @@ -20,11 +15,12 @@ fi START_DIR="$PWD" TMPROOT="$(TMPDIR="$START_DIR" mktemp -d -t .tmp_remote_tests.XXXXXXXX)" -trap 'cd "$START_DIR" 2>/dev/null || true; rm -rf -- "$TMPROOT"' EXIT +trap 'cd "$START_DIR" 2>/dev/null || true; rm -rf -- "$TMPROOT" || true' EXIT cd "$TMPROOT" overall_ec=0 i=0 + for url in "${URLS[@]}"; do ((++i)) printf '\n==> [%d] %s\n' "$i" "$url" @@ -49,7 +45,7 @@ for url in "${URLS[@]}"; do projroot="$pkgdir" fi - [ -d "$projroot/src" ] && rm -rf -- "$projroot/src" + [ -d "$projroot/src" ] && rm -rf -- "$projroot/src" || true if [ -d "$projroot/tests" ]; then ( cd "$projroot" && PYTHONPATH="$PWD:tests:${PYTHONPATH:-}" pytest ) || overall_ec=1 @@ -57,8 +53,8 @@ for url in "${URLS[@]}"; do ( cd "$projroot" && PYTHONPATH="$PWD:${PYTHONPATH:-}" pytest ) || overall_ec=1 fi - rm -f -- "$tarball" "$tfile" - rm -rf -- "$pkgdir" + rm -f -- "$tarball" "$tfile" || true + rm -rf -- "$pkgdir" || true done exit "$overall_ec" From c903b04706d78eae6de6903bb574941d004eaec7 Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Thu, 20 Nov 2025 15:11:52 -0500 Subject: [PATCH 2/3] news --- news/fix-dep-test.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 news/fix-dep-test.rst diff --git a/news/fix-dep-test.rst b/news/fix-dep-test.rst new file mode 100644 index 0000000..27fc85d --- /dev/null +++ b/news/fix-dep-test.rst @@ -0,0 +1,23 @@ +**Added:** + +* No news needed. + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* + +**Security:** + +* From 5ce06543559b5b531aa3574588b995f08c3917a6 Mon Sep 17 00:00:00 2001 From: Caden Myers Date: Thu, 20 Nov 2025 15:13:15 -0500 Subject: [PATCH 3/3] add comment back --- requirements/packs/scripts/_pytest.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/requirements/packs/scripts/_pytest.sh b/requirements/packs/scripts/_pytest.sh index 4556368..887797f 100644 --- a/requirements/packs/scripts/_pytest.sh +++ b/requirements/packs/scripts/_pytest.sh @@ -1,4 +1,8 @@ #!/usr/bin/env bash +# Usage: +# ./_pytest.sh urls.txt +# ./_pytest.sh https://host/a.tar.gz https://host/b.tgz +# From ChatGPT set -euo pipefail URLS=()