PSScriptAnalyzer
PSScriptAnalyzer copied to clipboard
Locally running ./build.ps1 -Tests does not function as docs specify
Steps to reproduce
git clone https://github.com/PowerShell/PSScriptAnalyzer.git
cd PSScriptAnalyzer
./Build.ps1. -Test
Import-module ./build.psm1
Get-TestResults # Or Get-TestFailures
Expected behavior
This should, as per the documentation, load the results file and output it to the console.
Actual behavior
Throws these errors:
Resolve-Path : Cannot find path 'C:\Users\Coby\source\repos\PSScriptAnalyzer\TestResults.xml' because it does not
exist.
At C:\Users\Coby\source\repos\PSScriptAnalyzer\build.psm1:410 char:17
+ $logPath = (Resolve-Path $logfile).Path
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\Coby\s...TestResults.xml:String) [Resolve-Path], ItemNotFoundE
xception
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.ResolvePathCommand
Get-Content : Cannot bind argument to parameter 'Path' because it is null.
At C:\Users\Coby\source\repos\PSScriptAnalyzer\build.psm1:411 char:34
+ $results = [xml](Get-Content $logPath)
+ ~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-Content], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetContentC
ommand
You cannot call a method on a null-valued expression.
At C:\Users\Coby\source\repos\PSScriptAnalyzer\build.psm1:412 char:5
+ $results.SelectNodes(".//test-case")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Environment data
Fails in all environments.
The root cause is pretty simple - the output path is defined here: https://github.com/PowerShell/PSScriptAnalyzer/blob/33d927857f6e8493a77ec34c3ca4328eca8ee5d8/build.psm1#L380
But is not passed to Pester here: https://github.com/PowerShell/PSScriptAnalyzer/blob/33d927857f6e8493a77ec34c3ca4328eca8ee5d8/build.psm1#L388
Looking at this, https://github.com/PowerShell/PSScriptAnalyzer/pull/1444 , it seems we've decided to target Pester 5.X . I'll make a PR updating this Pester invocation to include the output file in the 5.x style, and update the readme to specify a minimum Pester 5.x version