aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/test_windows_input.ps14
-rw-r--r--scripts/windows_input/README.md10
2 files changed, 13 insertions, 1 deletions
diff --git a/scripts/test_windows_input.ps1 b/scripts/test_windows_input.ps1
index dfbd41b4..28839a07 100644
--- a/scripts/test_windows_input.ps1
+++ b/scripts/test_windows_input.ps1
@@ -29,8 +29,10 @@ $root = [IO.Directory]::CreateDirectory($OutputDirectory).FullName
$null = Invoke-GauntletProcess $python @($reportScript, 'matrix', '--output', (Join-Path $root 'matrix.json'))
$matrix = Read-GauntletJson (Join-Path $root 'matrix.json')
if ($MatrixOnly) { Write-Host "Matrix: $root/matrix.json"; exit 0 }
+$caseSelectionProvided = $PSBoundParameters.ContainsKey('Cases')
+$Cases = @($Cases | Where-Object { -not [string]::IsNullOrWhiteSpace($_) })
$knownCases = @($matrix.cases | ForEach-Object id)
-if (@($Cases).Count -and @($Cases | Where-Object { $_ -notin $knownCases }).Count) { throw 'Unknown case selection' }
+if (($caseSelectionProvided -and -not @($Cases).Count) -or @($Cases | Where-Object { $_ -notin $knownCases }).Count) { throw 'Unknown case selection' }
$selectedCases = if (@($Cases).Count) { @($matrix.cases | Where-Object id -in $Cases) } else { @($matrix.cases) }
if (-not $IsWindows) { throw 'Real-host qualification requires Windows and an interactive desktop; no tests passed' }
if (-not $AllowInputInjection) { throw 'Read scripts/windows_input/README.md, then explicitly pass -AllowInputInjection on an isolated desktop' }
diff --git a/scripts/windows_input/README.md b/scripts/windows_input/README.md
index 340ecb0e..36caf3f6 100644
--- a/scripts/windows_input/README.md
+++ b/scripts/windows_input/README.md
@@ -51,6 +51,16 @@ The full catalogue normally exits `2` because operator-assisted and explicitly
unimplemented qualification cases remain. That is incomplete coverage, not an
automated test failure; inspect the printed matrix and retained `report.json`.
+### Expected outcome
+
+A healthy run builds and identifies the current checkout, reaches the result
+matrix, and reports no `FAIL` rows or cleanup errors. The default Herdr column
+should identify itself as `Win32 (Herdr)*` from captured runtime evidence. A full
+run may still exit `2` and show `MANUAL`, `NOT TESTED`, or a documented host
+capability limitation when a terminal channel, physical gesture, or oracle is
+unavailable. A focused campaign exits `0` when every selected observation passes;
+exit `1` means an assertion, harness, or cleanup failure and needs investigation.
+
The recipe itself is the explicit opt-in to foreground input injection. It builds
the current checkout in release mode, stages that exact binary with the pinned
ConPTY runtime, and prints its path and hash. Use `-ExePath` only to compare a