#Requires -Version 7.0 Set-StrictMode -Version Latest $ErrorActionPreference='Stop' $script=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'run.ps1') $begin=$script.IndexOf(' $taskValid=$true;$taskFailure=$null') $end=$script.IndexOf(' $inputsUnchanged=$false',$begin) if($begin -lt 0 -or $end -lt 0){throw 'Runner parser block not found'} $block=[scriptblock]::Create($script.Substring($begin,$end-$begin)) $selection=Get-Content -Raw -LiteralPath (Join-Path $PSScriptRoot 'expected-tests.json')|ConvertFrom-Json $expected=@($selection.tests|Sort-Object -Unique) function Same-Names($Left,$Right){$a=@($Left|Sort-Object);$b=@($Right|Sort-Object);return $a.Count -eq $b.Count -and @(Compare-Object $a $b).Count -eq 0} $required=$selection.server_required_test $cases=@( [pscustomobject]@{name='focused87';stage='focused';valid=$true;text=((@($expected|ForEach-Object {'test '+$_+' ... ok'})+@('test result: ok. 87 passed; 0 failed; 0 ignored; 0 measured; 500 filtered out;')) -join [Environment]::NewLine)}, [pscustomobject]@{name='server-two-binaries';stage='server';valid=$true;text=('test '+$required+' ... ok'+[Environment]::NewLine+'test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;'+[Environment]::NewLine+'test another::http ... ok'+[Environment]::NewLine+'test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;')}, [pscustomobject]@{name='server-duplicate-required';stage='server';valid=$false;text=('test '+$required+' ... ok'+[Environment]::NewLine+'test '+$required+' ... ok'+[Environment]::NewLine+'test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;')}, [pscustomobject]@{name='server-wrong-summary';stage='server';valid=$false;text=('test '+$required+' ... ok'+[Environment]::NewLine+'test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;')}, [pscustomobject]@{name='server-missing-required';stage='server';valid=$false;text=('test unrelated ... ok'+[Environment]::NewLine+'test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out;')} ) $results=@(foreach($case in $cases){$Stage=$case.stage;$taskText=$case.text;. $block;if($taskValid -ne $case.valid){throw ('Unexpected parser decision: '+$case.name)};[ordered]@{case=$case.name;expected=$case.valid;actual=$taskValid}}) [ordered]@{status='Synthetic log parser only; no Cargo or product tests';cases=$results}|ConvertTo-Json -Depth 6|Set-Content -LiteralPath (Join-Path $PSScriptRoot 'parser-verification.json') -Encoding utf8 Write-Output ('Verified '+$results.Count+' parser cases')