Files
baiyue-firstleg/scripts/backend-full-regression.ps1
T
2026-10-19 17:56:36 +08:00

92 lines
4.6 KiB
PowerShell

[CmdletBinding()]
param(
[switch]$DryRun,
[string]$MavenCommand = "mvn"
)
$ErrorActionPreference = "Stop"
if (-not $DryRun -and -not $env:CHONGCHONG_LOCAL_CHECK_OWNER) {
& (Join-Path $PSScriptRoot 'local-check.ps1') -Label 'Backend full regression' -Command @('pwsh', '-NoProfile', '-File', $PSCommandPath, '-MavenCommand', $MavenCommand)
exit $LASTEXITCODE
}
$repoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
$pom = Join-Path $repoRoot "pom.xml"
$mapperScanContract = Join-Path $repoRoot "scripts/mapper-scan-contract.mjs"
$requiredTests = @(
"scripts/acceptance-evidence-audit.test.mjs",
"scripts/gateway-route-contract.test.mjs",
"scripts/mapper-scan-contract.test.mjs",
"firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/controller/PlatformOceanBookingControllerContractTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/oceanbooking/service/OceanBookingServiceTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/repository/TruckAppointmentMapperContractTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/service/TruckAppointmentServiceTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/controller/TruckAppointmentControllerContractTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/service/UnifiedInboundQueryServiceTest.java",
"order/src/test/java/com/baiyue/order/service/UnifiedOrderQueryServiceTest.java",
"iam/src/test/java/com/baiyue/iam/BaiyueIamApplicationContractTest.java",
"iam/src/test/java/com/baiyue/iam/notification/NotificationOpenApiContractTest.java",
"iam/src/test/java/com/baiyue/iam/notification/NotificationServiceTest.java",
"iam/src/test/java/com/baiyue/iam/notification/NotificationTemplateRendererTest.java",
"iam/src/test/java/com/baiyue/iam/notification/NotificationSqlContractTest.java",
"iam/src/test/java/com/baiyue/iam/notification/NotificationBusinessEventConsumerTest.java",
"iam/src/test/java/com/baiyue/iam/notification/NotificationSchedulerRecoveryTest.java",
"iam/src/test/java/com/baiyue/iam/notification/NotificationConfigurationContractTest.java",
"gateway/src/test/java/com/baiyue/gateway/config/GatewayFileRouteConfigurationTest.java",
"file/src/test/java/com/baiyue/file/controller/QualificationFileContractTest.java",
"file/src/test/java/com/baiyue/file/controller/InternalBusinessFileControllerTest.java",
"file/src/test/java/com/baiyue/file/service/InternalBusinessFileServiceTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/controller/ContainerControllerContractTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/controller/LoadingListControllerContractTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/repository/ContainerOverviewSqlContractTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/service/ContainerOverviewServiceTest.java",
"firstleg/src/test/java/com/baiyue/firstleg/service/LoadingListServiceTest.java",
"warehouse/src/test/java/com/baiyue/warehouse/repository/OverseasStorageFeeSqlContractTest.java",
"warehouse/src/test/java/com/baiyue/warehouse/controller/PlatformOverseasStorageFeeControllerContractTest.java"
)
$mavenArgs = @('-T', '1', '-DforkCount=1', '-DreuseForks=true', "-f", $pom, "test")
Write-Host "Backend regression root: $repoRoot"
Write-Host "Scope: complete root POM reactor (all active modules and their tests)"
Write-Host "Database/API access: none"
if (-not (Test-Path -LiteralPath $pom)) {
Write-Error "Missing Maven pom: $pom"
exit 2
}
if (-not (Test-Path -LiteralPath $mapperScanContract)) {
Write-Error "Missing Mapper scan contract: $mapperScanContract"
exit 2
}
$missing = @($requiredTests | Where-Object { -not (Test-Path -LiteralPath (Join-Path $repoRoot $_)) })
if ($missing.Count -gt 0) {
Write-Error ("Missing required regression coverage:`n" + ($missing -join "`n"))
exit 2
}
Write-Host ("Command: {0} {1}" -f $MavenCommand, ($mavenArgs -join " "))
if ($DryRun) {
Write-Host "DRY-RUN PASS: prerequisites and coverage files are present; Maven was not started."
exit 0
}
Push-Location $repoRoot
try {
& node --test (Join-Path $repoRoot "scripts/gateway-route-contract.test.mjs")
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
& node --test (Join-Path $repoRoot "scripts/acceptance-evidence-audit.test.mjs")
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
& node $mapperScanContract
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
& $MavenCommand @mavenArgs
$code = $LASTEXITCODE
} finally {
Pop-Location
}
if ($code -ne 0) {
Write-Error "Maven regression failed with exit code $code"
exit $code
}
Write-Host "Backend regression PASS"
exit 0