From f7a18613438ce6fbac6a7e2525e5a955cb83cf29 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期四, 17 九月 2026 13:19:23 +0800
Subject: [PATCH] fix(scripts): 测试脚本的 -Clean 与 PowerShell 5.1 兼容
---
talent-card-server/scripts/run-server-tests.ps1 | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/talent-card-server/scripts/run-server-tests.ps1 b/talent-card-server/scripts/run-server-tests.ps1
index da0aacc..0a4f5e2 100644
--- a/talent-card-server/scripts/run-server-tests.ps1
+++ b/talent-card-server/scripts/run-server-tests.ps1
@@ -52,18 +52,35 @@
}
$goals = @('test')
- if ($Clean) { $goals = @('clean') + $goals }
$arguments = @('-o') + $goals
if ($Test.Count -gt 0) { $arguments += ('-Dtest=' + ($Test -join ',')) }
$arguments += '-DfailIfNoTests=false'
$log = Join-Path $serverRoot 'target\server-tests.log'
- Write-Host ("Running: .\mvnw.cmd {0}" -f ($arguments -join ' ')) -ForegroundColor Cyan
Push-Location $serverRoot
+ # 原生命令往 stderr 写东西(例如 JVM 那句 sun.misc.Unsafe 警告)时,PowerShell 5.1 会把它当成
+ # 终止错误、在编译中途掐断构建(子进程也会被带走)。Maven 的退出码才是唯一判据,所以这一段
+ # 放宽 ErrorActionPreference,只在结束时看 $LASTEXITCODE。
+ $strict = $ErrorActionPreference
+ $ErrorActionPreference = 'Continue'
try {
+ # clean 只能单独先跑:日志文件就在 target\ 下、且被下面那条 `*>` 重定向一直打开着,
+ # 把 clean 并进同一次 Maven 调用会以 "Failed to delete target\server-tests.log" 失败。
+ if ($Clean) {
+ Write-Host 'Running: .\mvnw.cmd -o clean' -ForegroundColor Cyan
+ & (Join-Path $serverRoot 'mvnw.cmd') -o clean *> $null
+ if ($LASTEXITCODE -ne 0) { throw "mvnw clean failed (exit $LASTEXITCODE)." }
+ # clean 把整个 target\ 删掉,重定向就没地方写日志了(而且会静默变成"假成功")。
+ New-Item -ItemType Directory -Force -Path (Split-Path $log) | Out-Null
+ }
+ # 先落一个空文件:万一这条重定向失败,$LASTEXITCODE 会留着上一次的值,下面据此判定"没跑成"。
+ Set-Content -Path $log -Value ''
+ Write-Host ("Running: .\mvnw.cmd {0}" -f ($arguments -join ' ')) -ForegroundColor Cyan
& (Join-Path $serverRoot 'mvnw.cmd') @arguments *> $log
$exitCode = $LASTEXITCODE
+ if ((Get-Item $log).Length -eq 0) { throw "Maven wrote nothing to $log; the run did not start." }
} finally {
+ $ErrorActionPreference = $strict
Pop-Location
}
--
Gitblit v1.7.1