Skip to content

Commit 1e05e76

Browse files
committed
Add flag to fail on or not on stderr
1 parent 9ee5894 commit 1e05e76

File tree

6 files changed

+43
-4
lines changed

6 files changed

+43
-4
lines changed

Extension/PesterTask/PesterV10/Pester.ps1

+12-2
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,18 @@ param
4040

4141
[string]$ScriptBlock,
4242

43-
[string]$TargetPesterVersion = "latest"
43+
[string]$TargetPesterVersion = "latest",
44+
45+
[string]$FailOnStdErr
4446
)
4547

4648
if ($TargetPesterVersion -match '^4') {
4749
Write-Host "##vso[task.logissue type=error]This version of the task does not support Pester V4, please use task version 9."
4850
exit 1
4951
}
5052

53+
$FailStdErr = [Boolean]::Parse($FailOnStdErr)
54+
5155
Write-Host "TestFolder $TestFolder"
5256
Write-Host "resultsFile $resultsFile"
5357
Write-Host "run32Bit $run32Bit"
@@ -57,6 +61,7 @@ Write-Host "ExcludeTag $ExcludeTag"
5761
Write-Host "CodeCoverageOutputFile $CodeCoverageOutputFile"
5862
Write-Host "CodeCoverageFolder $CodeCoverageFolder"
5963
Write-Host "ScriptBlock $ScriptBlock"
64+
Write-Host "FailOnStdErr $FailOnStdErr"
6065

6166
Import-Module -Name (Join-Path $PSScriptRoot "HelperModule.psm1") -Force
6267
Import-Pester -Version $TargetPesterVersion
@@ -142,7 +147,12 @@ if (-not([String]::IsNullOrWhiteSpace($ScriptBlock))) {
142147
$ScriptBlockObject.Invoke()
143148
}
144149

145-
$result = Invoke-Pester -Configuration ([PesterConfiguration]$PesterConfig)
150+
if ($FailStdErr) {
151+
$result = Invoke-Pester -Configuration ([PesterConfiguration]$PesterConfig)
152+
}
153+
else {
154+
$result = Invoke-Pester -Configuration ([PesterConfiguration]$PesterConfig) 2> $null
155+
}
146156

147157
if ($Result.Failed.Count -gt 0) {
148158
Write-Error "Pester Failed at least one test. Please see results for details."

Extension/PesterTask/PesterV10/task.json

+7
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,13 @@
145145
"required": false,
146146
"helpMarkDown": "A scriptblock to run before tests are executed. This will be run in the scope of the task where Invoke-Pester is run.",
147147
"groupName": "advanced"
148+
},
149+
{
150+
"name": "failOnStdErr",
151+
"type": "boolean",
152+
"defaultValue": true,
153+
"label": "Fail on StdErr",
154+
"helpMarkDown": "Sets whether the task should fail on any output to StdErr from within the tests or not. Default true"
148155
}
149156
],
150157
"instanceNameFormat": "Pester Test Runner",

Extension/PesterTask/PesterV9/Pester.ps1

+13-2
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,18 @@ param
4040

4141
[string]$ScriptBlock,
4242

43-
[string]$TargetPesterVersion = "latest"
43+
[string]$TargetPesterVersion = "latest",
44+
45+
[string]$FailOnStdErr
4446
)
4547

4648
if ($TargetPesterVersion -match '^5') {
4749
Write-Host "##vso[task.logissue type=error]This version of the task does not support Pester V5, please use task version 10 or higher."
4850
exit 1
4951
}
52+
53+
$FailStdErr = [Boolean]::Parse($FailOnStdErr)
54+
5055
Write-Host "scriptFolder $scriptFolder"
5156
Write-Host "resultsFile $resultsFile"
5257
Write-Host "run32Bit $run32Bit"
@@ -56,6 +61,7 @@ Write-Host "ExcludeTag $ExcludeTag"
5661
Write-Host "CodeCoverageOutputFile $CodeCoverageOutputFile"
5762
Write-Host "CodeCoverageFolder $CodeCoverageFolder"
5863
Write-Host "ScriptBlock $ScriptBlock"
64+
Write-Host "FailOnStdErr $FailOnStdErr"
5965

6066
Import-Module -Name (Join-Path $PSScriptRoot "HelperModule.psm1") -Force
6167
Import-Pester -Version $TargetPesterVersion
@@ -145,7 +151,12 @@ if (-not([String]::IsNullOrWhiteSpace($ScriptBlock))) {
145151
$ScriptBlockObject.Invoke()
146152
}
147153

148-
$result = Invoke-Pester @Parameters
154+
if ($FailStdErr) {
155+
$result = Invoke-Pester @Parameters
156+
}
157+
else {
158+
$result = Invoke-Pester @Parameters 2> $null
159+
}
149160

150161
if ($result.failedCount -ne 0) {
151162
Write-Error "Pester returned errors"

Extension/PesterTask/PesterV9/task.json

+7
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,13 @@
142142
"required": false,
143143
"helpMarkDown": "A scriptblock to run before tests are executed. This will be run in the scope of the task where Invoke-Pester is run.",
144144
"groupName": "advanced"
145+
},
146+
{
147+
"name": "failOnStdErr",
148+
"type": "boolean",
149+
"defaultValue": true,
150+
"label": "Fail on StdErr",
151+
"helpMarkDown": "Sets whether the task should fail on any output to StdErr from within the tests or not. Default true"
145152
}
146153
],
147154
"instanceNameFormat": "Pester Test Runner",

Extension/PesterTask/src/pester.ts

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export async function run() {
2020
let CodeCoverageFolder = tl.getInput("CodeCoverageFolder");
2121
let ScriptBlock = tl.getInput("ScriptBlock");
2222
let PesterVersion = tl.getInput("PesterVersion");
23+
let FailOnStdErr = tl.getInput("failOnStdErr");
2324

2425
let TargetPesterVersion = "0.0.0";
2526
if (PesterVersion === "OtherVersion") {
@@ -48,6 +49,7 @@ export async function run() {
4849
"-scriptFolder", scriptFolder,
4950
"-resultsFile", resultsFile,
5051
"-run32Bit", run32Bit,
52+
"-FailOnStdErr", FailOnStdErr,
5153
];
5254

5355
if (additionalModulePath) {

Extension/PesterTask/src/pesterv10.ts

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export async function run() {
2020
let CodeCoverageFolder = tl.getInput("CodeCoverageFolder");
2121
let ScriptBlock = tl.getInput("ScriptBlock");
2222
let PesterVersion = tl.getInput("PesterVersion");
23+
let FailOnStdErr = tl.getInput("failOnStdErr");
2324

2425
let TargetPesterVersion = "0.0.0";
2526
if (PesterVersion === "OtherVersion") {
@@ -48,6 +49,7 @@ export async function run() {
4849
"-TestFolder", TestFolder,
4950
"-resultsFile", resultsFile,
5051
"-run32Bit", run32Bit,
52+
"-FailOnStdErr", FailOnStdErr,
5153
];
5254

5355
if (additionalModulePath) {

0 commit comments

Comments
 (0)