Terminate Start-PSPester if Pester module not found#5069
Terminate Start-PSPester if Pester module not found#5069daxian-dbw merged 1 commit intoPowerShell:masterfrom djweber:enhancement/pester_warning
Conversation
build.psm1
Outdated
There was a problem hiding this comment.
Should this be an error instead? We would not be able to run tests without Pester.
There was a problem hiding this comment.
@adityapatwardhan I could change this to use Write-Error, but now I'm wondering if we should use throw instead -- after all, there is no point in continuing at all if Pester can't be found. This would terminate the script with a single error instead of several (more vague) errors.
There was a problem hiding this comment.
Actually if we follow the pattern from: https://github.com/DdWr/PowerShell/blob/3fdd9f1b639df805f895c56cf574f2039ec15a76/build.psm1#L415
We should do Write-Warning and then return.
build.psm1
Outdated
build.psm1
Outdated
There was a problem hiding this comment.
@daxian-dbw I made the module check a little stricter here than simply checking for the path.
Currently, if a user does not clone with the --recursive flag or run git submodule update --init, Start-PSPester will fail to run due to the Pester module missing. While the error hints at the Pester module not being found, there is no suggested way of fixing the issue presented to the user. This change makes a helpful warning to appear at the beginning of the execution of Start-PSPester if the Pester module cannot be found.
| [switch]$IncludeFailingTest | ||
| ) | ||
|
|
||
| if (-not (Get-Module -ListAvailable -Name $Pester -ErrorAction SilentlyContinue)) |
There was a problem hiding this comment.
I actually prefer the Test-Path instead. With -ListAvailable the Pester version that comes installed with Windows 10 will be found. There are difference in those versions which might cause false errors in running tests.
There was a problem hiding this comment.
@adityapatwardhan Since the full path to the project's Pester module is being passed in here, I believe this would not be an issue:
PS /Users/david/Code/PowerShell> Get-Module -ListAvailable /Users/david/Code/PowerShell/src/powershell-unix/bin/Linux/netcoreapp2.0/osx.10.12-x64/publish/Modules/Pester | Format-Table
Path -Groupby Name
Name: Pester
Path
----
/Users/david/Code/PowerShell/src/powershell-unix/bin/Linux/netcoreapp2.0/osx.10.12-x64/publish/Modules/Pester/Pester.psd1
However, if we only passed in Pester, I could see that being a cause for concern:
PS /Users/david/Code/PowerShell> Get-Module -ListAvailable Pester | Format-Table Path -Groupby Name
Name: Pester
Path
----
/usr/local/microsoft/powershell/6.0.0-beta.8/Modules/Pester/4.0.8/Pester.psd1
/usr/local/microsoft/powershell/6.0.0-beta.8/Modules/Pester/Pester.psd1
There was a problem hiding this comment.
Makes sense. Misread it being Pester instead of $Pester.
daxian-dbw
left a comment
There was a problem hiding this comment.
Thanks for your contribution!

Currently, if a user does not clone with the
--recursiveflag or rungit submodule update --init,Start-PSPesterwill fail to run due to the Pester module missing. While the error hints at the Pester module not being found, there is no suggested way of fixing the issue presented to the user. This change causes a warning to appear at the beginning of the execution ofStart-PSPesterif the Pester module cannot be found.