RunPester.ps1
function GetLineNumber($stackTrace){ if($stackTrace -match "at line: (\d*)"){ $matches[1]; } else { $null } } function GetFileName($stackTrace){ if($stackTrace -match "at line: (?:\d*) in (.*)$"){ $matches[1]; } else { $null } } function FormatResult ($result){ process { $lineNumber = GetLineNumber $_.StackTrace $file = GetFileName $_.StackTrace | Resolve-Path -Relative $collapsedMessage = $_.FailureMessage -replace "`n"," " $testDescription = "$($_.Describe):$($_.Name)" "$file;$lineNumber;${testDescription}:$collapsedMessage" } } Write-Output "Running tests..." $results = Invoke-Pester -PassThru # can use -Quiet to suppress the default Pester output $results.TestResult | ?{ -not $_.Passed} | FormatResult Write-Output "Done" |