2026-07-10 08:09:39 +01:00
param (
[ string ] $UnityExe = " C:\Program Files\Unity\Hub\Editor\6000.4.2f1\Editor\Unity.exe " ,
2026-07-10 10:52:04 +01:00
[ string ] $CultLibRoot = " E:\Projects\CultLib " ,
[ string ] $ProjectRoot = " TestProject " ,
[ string ] $OutputRoot = " artifacts\uitoolkit-tests "
2026-07-10 08:09:39 +01:00
)
$ErrorActionPreference = " Stop "
$repoRoot = Split-Path -Parent $PSScriptRoot
2026-07-10 10:52:04 +01:00
$projectPath = if ( [ IO.Path ] :: IsPathRooted ( $ProjectRoot ) ) { $ProjectRoot } else { Join-Path $repoRoot $ProjectRoot }
2026-07-10 08:09:39 +01:00
$output = if ( [ IO.Path ] :: IsPathRooted ( $OutputRoot ) ) { $OutputRoot } else { Join-Path $repoRoot $OutputRoot }
2026-07-10 10:52:04 +01:00
$cultLibBuilder = Join-Path $CultLibRoot " scripts\build-unity-package.ps1 "
foreach ( $required in @ ( $UnityExe , $projectPath , $cultLibBuilder ) ) {
2026-07-10 08:09:39 +01:00
if ( -not ( Test-Path -LiteralPath $required ) ) { throw " Required EveUnity UI Toolkit test path not found: $required " }
}
2026-07-10 10:52:04 +01:00
powershell -ExecutionPolicy Bypass -File $cultLibBuilder
if ( $LASTEXITCODE -ne 0 ) { throw " CultLib Unity package build failed with exit code $LASTEXITCODE " }
2026-07-10 08:09:39 +01:00
$runRoot = Join-Path $output ( Get-Date -Format " yyyyMMddTHHmmss " )
New-Item -ItemType Directory -Force -Path $runRoot | Out-Null
$resultsPath = Join-Path $runRoot " unity-editmode-results.xml "
$logPath = Join-Path $runRoot " unity-editmode.log "
2026-07-10 10:52:04 +01:00
$arguments = @ (
" -batchmode " , " -projectPath " , $projectPath ,
" -runTests " , " -testPlatform " , " EditMode " ,
" -assemblyNames " , " GameCult.Eve.UnityUIToolkit.Tests " ,
" -testResults " , $resultsPath , " -logFile " , $logPath
)
$process = Start-Process -FilePath $UnityExe -ArgumentList $arguments -Wait -PassThru -WindowStyle Hidden
if ( $process . ExitCode -ne 0 ) {
if ( Test-Path -LiteralPath $logPath ) { Get-Content -LiteralPath $logPath -Tail 120 }
throw " EveUnity UI Toolkit tests failed with exit code $( $process . ExitCode ) "
2026-07-10 08:09:39 +01:00
}
[ xml ] $results = Get-Content -LiteralPath $resultsPath -Raw
$run = $results . SelectSingleNode ( " //test-run " )
2026-07-10 10:52:04 +01:00
if ( $null -eq $run -or [ int ] $run . total -eq 0 -or [ int ] $run . failed -gt 0 ) {
throw " EveUnity UI Toolkit tests did not pass: $resultsPath "
}
Write-Host " EveUnity generic UI Toolkit tests: $( $run . passed ) passed, $( $run . total ) total "
Write-Host " Consumer: $projectPath "