diff --git a/test/test.ps1 b/test/test.ps1 index 1873d99..24ecb41 100644 --- a/test/test.ps1 +++ b/test/test.ps1 @@ -1,4 +1,7 @@ +[CmdletBinding()] param ( + [Parameter(Mandatory=$false)] + [ValidateNotNullOrEmpty()] [string]$Tag = '' ) $MODULE_NAME = (Get-Item $PSScriptRoot/../).Name @@ -6,47 +9,27 @@ $MODULE_DIR = "$PSScriptRoot/../src/$MODULE_NAME" $MODULE_MANIFEST = "$MODULE_DIR/$MODULE_NAME.psd1" Set-StrictMode -Version Latest -$global:PesterDebugPreference_ShowFullErrors = $true # Install Pester if needed $pester = Get-Module Pester -ListAvailable -ErrorAction SilentlyContinue $pesterMinVersion = [version]'4.0.0' $pesterMaxVersion = [version]'4.10.1' -if ( ! $pester -or ! ($pester.Version | ? { $_ -ge $pesterMinVersion -and $_ -le $pesterMaxVersion }) ) { - if ($PSVersionTable.PSVersion.Major -ge 6) { - Install-Module Pester -Force -Scope CurrentUser -MinimumVersion $pesterMinVersion -MaximumVersion $pesterMaxVersion -ErrorAction Stop - }else { - Install-Module Pester -Force -Scope CurrentUser -MinimumVersion $pesterMinVersion -MaximumVersion $pesterMaxVersion -SkipPublisherCheck -ErrorAction Stop - } +if (!$pester -or !($pester.Version | ? { $_ -ge $pesterMinVersion -and $_ -le $pesterMaxVersion })) { + Install-Module Pester -Force -Scope CurrentUser -MinimumVersion $pesterMinVersion -MaximumVersion $pesterMaxVersion -ErrorAction Stop -SkipPublisherCheck } -Get-Module Pester -ListAvailable +Get-Module Pester | Remove-Module -Force Import-Module Pester -MinimumVersion $pesterMinVersion -MaximumVersion $pesterMaxVersion -Force -ErrorAction Stop - -# Install required modules -$manifest = (Get-Content $MODULE_MANIFEST -Raw | Invoke-Expression) -foreach ($m in $manifest.RequiredModules) { - $m = $m.Clone() - $m['Name'] = $m['ModuleName'] - $m.Remove('ModuleName') - if (!(Get-InstalledModule @m -ErrorAction SilentlyContinue)) { - "Installing required module: $( $m['Name'] )" | Write-Host -ForegroundColor Green - Install-Module @m -Force -Scope CurrentUser -ErrorAction Stop - } - Get-Module $m['Name'] -ListAvailable -} +Get-Module Pester # Test the module manifest -Test-ModuleManifest "$MODULE_MANIFEST" -ErrorAction Stop - -# Unload required modules (not needed for unit tests) -# foreach ($m in $manifest.RequiredModules) { -# Get-Module -Name $m['ModuleName'] | Remove-Module -Force -ErrorAction Stop -# } +Test-ModuleManifest "$MODULE_MANIFEST" -ErrorAction Stop > $null # Import our module Get-Module "$MODULE_NAME" | Remove-Module -Force -Import-Module $MODULE_MANIFEST -Force -ErrorAction Stop +Import-Module $MODULE_MANIFEST -Force -ErrorAction Stop -Verbose +Get-Module "$MODULE_NAME" +$global:PesterDebugPreference_ShowFullErrors = $true # For Pester 4 if ($Tag) { # Run Unit Tests $res = Invoke-Pester -Script $MODULE_DIR -Tag $Tag -PassThru -ErrorAction Stop @@ -69,7 +52,7 @@ if ($Tag) { "$( $res2.FailedCount ) integration tests failed." | Write-Host } - if (($res -and $res.FailedCount -gt 0) -or ($res2 -and $res2.FailedCount)) { + if (($res -and $res.FailedCount -gt 0) -or ($res2 -and $res2.FailedCount -gt 0)) { throw } }