Add Final Android gate with fresh native thirty-stage progression

This commit is contained in:
NINI
2026-10-06 22:59:57 +09:00
parent 7db006544c
commit f4ee23c10d
5 changed files with 450 additions and 0 deletions
+32
View File
@@ -81,6 +81,38 @@ try {
Get-Content -LiteralPath $logPath | Select-Object -Last 5 | Write-Host
if ($LASTEXITCODE -ne 0) { throw "Android smoke verification exited $LASTEXITCODE." }
}
# Edit/Play tests may strip this Editor-generated runtime list. Restore only that exact
# transformation after proving every other serialized byte (apart from CRLF) is unchanged.
if ($Phase -in @('EditMode','PlayMode') -and !$record.sourceDirty) {
$record.testSourceDirtyBeforeNormalization = [bool](& git status --porcelain)
$record.testGeneratedSettings = @()
foreach ($settingsPath in @('Assets/Settings/UniversalRenderPipelineGlobalSettings.asset','ProjectSettings/EditorBuildSettings.asset','ProjectSettings/ProjectAuditorSettings.asset','ProjectSettings/ShaderGraphSettings.asset')) {
$workingBlob = & git hash-object --path=$settingsPath -- $settingsPath
$sourceBlob = & git rev-parse "HEAD:$settingsPath"
$same = $workingBlob -eq $sourceBlob
$runtimeListStripped = $false
if (!$same -and $settingsPath -eq 'Assets/Settings/UniversalRenderPipelineGlobalSettings.asset') {
$sourceText = ((& git show "HEAD:$settingsPath") -join "`n") + "`n"
$workingText = (Get-Content -LiteralPath $settingsPath -Raw).Replace("`r`n","`n")
$pattern = '(?m)^ m_RuntimeSettings:\n m_List:\n(?: - rid: \d+\n)+'
$expected = [regex]::Replace($sourceText,$pattern," m_RuntimeSettings:`n m_List: []`n")
$runtimeListStripped = $expected -ne $sourceText -and $expected -ceq $workingText
if ($runtimeListStripped) { (& git diff -- $settingsPath) | Set-Content -LiteralPath (Join-Path $evidenceDir "$phaseName-generated-runtime-list.diff") -Encoding utf8 }
}
if ($same -or $runtimeListStripped) {
if ([bool](& git status --porcelain -- $settingsPath)) {
& git restore --source=HEAD --worktree -- $settingsPath
if ($LASTEXITCODE -ne 0) { throw "Cannot normalize proven generated setting: $settingsPath" }
}
}
$record.testGeneratedSettings += @{path=$settingsPath;workingBlob=$workingBlob;sourceBlob=$sourceBlob;identicalContent=$same;exactRuntimeListStripping=$runtimeListStripped}
}
}
$record.sourceCommitEnd = (& git rev-parse HEAD)
& git update-index --refresh | Out-Null
$record.sourceDirtyEnd = [bool](& git status --porcelain)
$record.trackedDiffEnd = @(& git diff --name-only HEAD)
if ($record.sourceDirty -or $record.sourceDirtyEnd -or $record.sourceCommitEnd -ne $record.sourceCommit) { throw 'Source changed during verification or is dirty.' }
$record.status = 'passed'
} catch {
$record.status = 'failed'