I have a classic build pipeline (not yaml, yet!) with three tasks
- Install Pester -> works as expected
- Run Pester tests -> always fails!
- Publish test results -> works as expected
My script for "Run Pester tests"
Import-Module Pester -Force
$config = [PesterConfiguration]::Default
$config.TestResult.Enabled = $true
$config.TestResult.OutputFormat = "NUnitXml"
$config.TestResult.OutputPath = "$env:SYSTEM_DEFAULTWORKINGDIRECTORY\TEST-results.xml"
$config.Run.Path = ".\my\path*"
$config.Run.PassThru = $true
$results = Invoke-Pester -Configuration $config
if($results.Result -eq "Passed")
{
Write-host "All tests passed"
Write-Host "##vso[task.complete result=Succeeded;]DONE"
exit 0
}
Sample output in Azure DevOps is
Tests completed in 11.43s
Tests Passed: 67, Failed: 0, Skipped: 0 NotRun: 0
All tests passed
Finishing: Run Pester Unit Tests
However, the task always fails
I know from robocopy
that Powershell Tasks in Azure will check $LASTEXITCODE
and that you are able to overwrite that via Write-Host "##vso[task.complete result=Succeeded;]DONE"
and exit 0
. Why is this not working here?
What else have I tried?
- Activate
SilentlyContinue
-> results in Warning - Activate
Continue on Error
-> results in Warning - Activate
Ignore $LASTEXITCODE
-> results in Failure - Activate
Fail on Standard Error
-> results in Failure