test: verify playground native boundaries and preserve final evidence gates

This commit is contained in:
NINI
2026-10-10 05:23:52 +09:00
parent 14f89d1248
commit 401fa6a1a6
6 changed files with 585 additions and 2 deletions
+2 -2
View File
@@ -34,14 +34,14 @@ try {
Check "apk-notice-exact-bytes-$name" ($sha-eq(Get-FileHash -LiteralPath (Join-Path $projectRoot ('Assets/StreamingAssets/Notices/'+$name))).Hash) $sha
}
}finally{$zip.Dispose()}
foreach($suite in @(@{name='Fresh30';script='exercise-final-progression.ps1';report='android-final-progression-evidence.json'},@{name='FinalBoundary';script='exercise-final-boundaries.ps1';report='android-final-boundary-evidence.json'},@{name='RapidBoundary';script='exercise-final-rapid.ps1';report='android-final-rapid-evidence.json'},@{name='ContentBoundary';script='exercise-content.ps1';report='android-content-evidence.json'})){
foreach($suite in @(@{name='Fresh30';script='exercise-final-progression.ps1';report='android-final-progression-evidence.json'},@{name='FinalBoundary';script='exercise-final-boundaries.ps1';report='android-final-boundary-evidence.json'},@{name='RapidBoundary';script='exercise-final-rapid.ps1';report='android-final-rapid-evidence.json'},@{name='ContentBoundary';script='exercise-content.ps1';report='android-content-evidence.json'},@{name='PlaygroundInteraction';script='exercise-playground.ps1';report='android-playground-evidence.json'})){
$childDir=Join-Path $EvidenceDir $suite.name;New-Item -ItemType Directory -Path $childDir -Force|Out-Null
Copy-Item -LiteralPath (Join-Path $EvidenceDir 'androidbuild-evidence.json') -Destination (Join-Path $childDir 'androidbuild-evidence.json')
$log=Join-Path $childDir 'outer.log';$command="pwsh -NoProfile -File tools/android/$($suite.script) -ApkPath $ApkPath -EvidenceDir $childDir -Serial $Serial"
& pwsh -NoProfile -File (Join-Path $PSScriptRoot $suite.script) -ApkPath $ApkPath -EvidenceDir $childDir -Serial $Serial *> $log
$actualExit=$LASTEXITCODE;$child=Get-Content -LiteralPath (Join-Path $childDir $suite.report) -Raw|ConvertFrom-Json
$children.Add(@{suite=$suite.name;command=$command;exitCode=$actualExit;log=$log;report=$child})
Check "suite-$($suite.name)-actual-exit-status-checks" ($actualExit-eq0-and$child.status-eq'passed'-and$child.sourceCommit-eq$record.sourceCommit-and!$child.sourceDirty-and$child.apkSha256-eq$record.apkSha256-and$child.checks.Count-gt0-and@($child.checks|Where-Object passed -ne $true).Count-eq0) "$actualExit / $($child.checks.Count) checks"
Check "suite-$($suite.name)-actual-exit-status-checks" ($actualExit-eq0-and$child.status-eq'passed'-and$child.sourceCommit-eq$record.sourceCommit-and!$child.sourceDirty-and$child.apkSha256-eq$record.apkSha256-and$child.checks.Count-gt0-and@($child.checks|Where-Object passed -ne $true).Count-eq0-and@($child.pending|Where-Object {$null-ne$_}).Count-eq0-and@($child.skipped|Where-Object {$null-ne$_}).Count-eq0-and($suite.name-ne'PlaygroundInteraction'-or($child.sourceCommitEnd-eq$record.sourceCommit-and!$child.sourceDirtyEnd))) "$actualExit / $($child.checks.Count) checks"
if($suite.name-eq'Fresh30'){
foreach($stage in 1..30){Check "fresh30-required-success-$stage" (@($child.checks|Where-Object {$_.id-eq"stage-$stage-actual-success"-and$_.passed}).Count-eq1) 'Native sequential checkpoint present'}
Check 'fresh30-native-commands-no-fixture-write' (@($child.commands|Where-Object {$_.command-match'\bpush\b'}).Count-eq0) 'Native progression never pushes save data'