PSScriptAnalyzer icon indicating copy to clipboard operation
PSScriptAnalyzer copied to clipboard

Locally running ./build.ps1 -Tests does not function as docs specify

Open clcaldwell opened this issue 3 years ago • 1 comments

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.

clcaldwell avatar Mar 23 '21 18:03 clcaldwell

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

clcaldwell avatar Mar 23 '21 19:03 clcaldwell