mirror of
git://code.qt.io/qt/qt5.git
synced 2026-02-01 19:36:04 +08:00
Provisioning: Run-Executable should print stdout and stderr to log
Task-number: QTQAINFRA-3085 Change-Id: I5343753f75157a2a894bb3ac50d416ab044d86fb Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
@@ -22,14 +22,46 @@ function Run-Executable
|
||||
[string]$Executable=$(throw("You must specify a program to run.")),
|
||||
[string[]]$Arguments
|
||||
)
|
||||
|
||||
$stdoutFile = [System.IO.Path]::GetTempFileName()
|
||||
$stderrFile = [System.IO.Path]::GetTempFileName()
|
||||
|
||||
if ([string]::IsNullOrEmpty($Arguments)) {
|
||||
Write-Host "Running `"$Executable`""
|
||||
$p = Start-Process -FilePath "$Executable" -Wait -PassThru
|
||||
$p = Start-Process -FilePath "$Executable" -Wait -PassThru `
|
||||
-RedirectStandardOutput $stdoutFile -RedirectStandardError $stderrFile
|
||||
} else {
|
||||
Write-Host "Running `"$Executable`" with arguments `"$Arguments`""
|
||||
$p = Start-Process -FilePath "$Executable" -ArgumentList $Arguments -PassThru
|
||||
$p = Start-Process -FilePath "$Executable" -ArgumentList $Arguments -PassThru `
|
||||
-RedirectStandardOutput $stdoutFile -RedirectStandardError $stderrFile
|
||||
Wait-Process -InputObject $p
|
||||
}
|
||||
|
||||
$stdoutContent = [System.IO.File]::ReadAllText($stdoutFile)
|
||||
$stderrContent = [System.IO.File]::ReadAllText($stderrFile)
|
||||
Remove-Item -Path $stdoutFile, $stderrFile -Force -ErrorAction Ignore
|
||||
|
||||
$hasOutput = $false
|
||||
if ([string]::IsNullOrEmpty($stdoutContent) -eq $false -or [string]::IsNullOrEmpty($stderrContent) -eq $false) {
|
||||
$hasOutput = $true
|
||||
Write-Host
|
||||
Write-Host "======================================================================"
|
||||
}
|
||||
if ([string]::IsNullOrEmpty($stdoutContent) -eq $false) {
|
||||
Write-Host "stdout of `"$Executable`":"
|
||||
Write-Host "======================================================================"
|
||||
Write-Host $stdoutContent
|
||||
Write-Host "======================================================================"
|
||||
}
|
||||
if ([string]::IsNullOrEmpty($stderrContent) -eq $false) {
|
||||
Write-Host "stderr of `"$Executable`":"
|
||||
Write-Host "======================================================================"
|
||||
Write-Host $stderrContent
|
||||
Write-Host "======================================================================"
|
||||
}
|
||||
if ($hasOutput) {
|
||||
Write-Host
|
||||
}
|
||||
if ($p.ExitCode -ne 0) {
|
||||
throw "Process $($Executable) exited with exit code $($p.ExitCode)"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user