From 90ec9462a096bb51fd92419fc715e88aa9402ae5 Mon Sep 17 00:00:00 2001 From: danielhanchen Date: Tue, 28 Jul 2026 19:19:48 +0000 Subject: [PATCH] Give the Linux and WSL legs an assertion that can fail The Linux rows' only post-install gate was nobuild, a log grep, so an installer exiting 0 having produced nothing kept a required leg green. The WSL job and the Windows job both already check the install runs; the Linux job now does too. The WSL detection half only printed its Select-String, and the alternation also matches "platform linux", so a regression that skipped every WSL-specific branch would still pass as a plain-Linux install. Assert the exact marker, stripping ANSI first since step writes the label in reverse video. Probed against three fixtures: real wsl log passes, platform linux fails, missing log fails. --- .../workflows/clean-machine-install-ci.yml | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.github/workflows/clean-machine-install-ci.yml b/.github/workflows/clean-machine-install-ci.yml index 4012276f42..0d568431db 100644 --- a/.github/workflows/clean-machine-install-ci.yml +++ b/.github/workflows/clean-machine-install-ci.yml @@ -359,6 +359,17 @@ jobs: exit 1 fi + # nobuild only reads the log, so an installer that exits 0 having done nothing + # satisfies it. These are the required Linux rows and, unlike the WSL and + # Windows jobs, they had no check that the install produced anything runnable. + - name: Assert the install is actually usable + if: steps.install_root.outcome == 'success' + run: | + VENV="$UNSLOTH_STUDIO_HOME/unsloth_studio" + [ -x "$VENV/bin/python" ] || { echo "::error::installer exited 0 but left no managed Python at $VENV/bin/python"; ls -la "$UNSLOTH_STUDIO_HOME" || true; exit 1; } + "$VENV/bin/python" -V + [ -x "$VENV/bin/unsloth" ] || { echo "::error::installer exited 0 but left no unsloth CLI at $VENV/bin/unsloth"; exit 1; } + - name: Assert no source build if: always() run: | @@ -444,6 +455,22 @@ jobs: # The platform line proves the wsl branch was taken rather than plain linux. Select-String -Path logs/wsl-install.log -Pattern 'platform|\[TAURI:DIAG\]|wsl' -ErrorAction SilentlyContinue | Select-Object -First 10 + # Printing could not fail, and that alternation also matches `platform linux`. + # If detection regresses, every WSL-specific branch is skipped and this job + # still passes as a plain-Linux install, which is the one thing no other job + # covers. `step` writes the label in reverse video, so strip ANSI first or an + # anchored match can never hit. + $esc = [char]27 + $platformLines = @( + Get-Content logs/wsl-install.log -ErrorAction SilentlyContinue | + ForEach-Object { $_ -replace "$esc\[[0-9;]*[A-Za-z]", '' } | + Where-Object { $_ -match '^\s*platform\s+\S' } + ) + $platformLines | ForEach-Object { Write-Host "platform line: $_" } + if (-not ($platformLines | Where-Object { $_ -match '^\s*platform\s+wsl\s*$' })) { + Write-Host '::error::installer never reported ''platform wsl''; the WSL branch was not exercised' + exit 1 + } # No `|| echo`: substituting a message for the missing CLI made the inner # shell -- and so this step, and so the job -- succeed even when the install # produced nothing usable, which is the half of the question this step asks.