Files
ARCADIA-Studio/harness/experiments/scenario-renderer-gates-68a81c3-20260913/original/verify-parser.ps1
T

23 lines
2.5 KiB
PowerShell

#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')