2026-08-08 15:25:46 +08:00
|
|
|
[CmdletBinding()]
|
|
|
|
|
param(
|
|
|
|
|
[switch]$DryRun,
|
|
|
|
|
[string]$MavenCommand = "mvn"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
|
$repoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
|
|
|
|
|
$pom = Join-Path $repoRoot "pom.xml"
|
2026-08-28 23:01:52 +08:00
|
|
|
$mapperScanContract = Join-Path $repoRoot "scripts/mapper-scan-contract.mjs"
|
2026-08-08 15:25:46 +08:00
|
|
|
$requiredTests = @(
|
2026-08-28 23:01:52 +08:00
|
|
|
"scripts/mapper-scan-contract.test.mjs",
|
2026-08-08 15:25:46 +08:00
|
|
|
"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",
|
2026-08-12 20:36:11 +08:00
|
|
|
"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",
|
2026-08-13 14:03:54 +08:00
|
|
|
"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"
|
2026-08-08 15:25:46 +08:00
|
|
|
)
|
2026-08-13 14:03:54 +08:00
|
|
|
$mavenArgs = @("-f", $pom, "-pl", "order,firstleg,iam,gateway,file,warehouse", "-am", "test")
|
2026-08-08 15:25:46 +08:00
|
|
|
|
|
|
|
|
Write-Host "Backend regression root: $repoRoot"
|
2026-08-13 14:03:54 +08:00
|
|
|
Write-Host "Scope: order + firstleg + iam + gateway + file + warehouse Maven reactor (includes all module tests)"
|
2026-08-08 15:25:46 +08:00
|
|
|
Write-Host "Database/API access: none"
|
|
|
|
|
|
|
|
|
|
if (-not (Test-Path -LiteralPath $pom)) {
|
|
|
|
|
Write-Error "Missing Maven pom: $pom"
|
|
|
|
|
exit 2
|
|
|
|
|
}
|
2026-08-28 23:01:52 +08:00
|
|
|
if (-not (Test-Path -LiteralPath $mapperScanContract)) {
|
|
|
|
|
Write-Error "Missing Mapper scan contract: $mapperScanContract"
|
|
|
|
|
exit 2
|
|
|
|
|
}
|
2026-08-08 15:25:46 +08:00
|
|
|
|
|
|
|
|
$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 {
|
2026-08-28 23:01:52 +08:00
|
|
|
& node $mapperScanContract
|
|
|
|
|
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
2026-08-08 15:25:46 +08:00
|
|
|
& $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
|