Skip to content

Commit 26785eb

Browse files
committed
Enhancement (ci): Enhance test entrypoint script
1 parent 92a8aac commit 26785eb

File tree

1 file changed

+30
-11
lines changed

1 file changed

+30
-11
lines changed

test/test.ps1

+30-11
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,50 @@
1+
[CmdletBinding()]
12
param (
3+
[Parameter(Mandatory=$false)]
4+
[ValidateNotNullOrEmpty()]
25
[string]$Tag = ''
36
)
47
$MODULE_NAME = (Get-Item $PSScriptRoot/../).Name
58
$MODULE_DIR = "$PSScriptRoot/../src/$MODULE_NAME"
6-
$MODULE_PATH = "$MODULE_DIR/$MODULE_NAME.psm1"
9+
$MODULE_MANIFEST = "$MODULE_DIR/$MODULE_NAME.psd1"
710

811
Set-StrictMode -Version Latest
9-
$global:PesterDebugPreference_ShowFullErrors = $true
1012

1113
# Install Pester if needed
1214
$pester = Get-Module Pester -ListAvailable -ErrorAction SilentlyContinue
1315
$pesterMinVersion = [version]'4.0.0'
1416
$pesterMaxVersion = [version]'4.10.1'
15-
if ( ! $pester -or ! ($pester.Version | ? { $_ -ge $pesterMinVersion -and $_ -le $pesterMaxVersion }) ) {
16-
if ($PSVersionTable.PSVersion.Major -ge 6) {
17-
Install-Module Pester -Force -Scope CurrentUser -MinimumVersion $pesterMinVersion -MaximumVersion $pesterMaxVersion -ErrorAction Stop
18-
}else {
19-
Install-Module Pester -Force -Scope CurrentUser -MinimumVersion $pesterMinVersion -MaximumVersion $pesterMaxVersion -SkipPublisherCheck -ErrorAction Stop
20-
}
17+
if (!$pester -or !($pester.Version | ? { $_ -ge $pesterMinVersion -and $_ -le $pesterMaxVersion })) {
18+
Install-Module Pester -Force -Scope CurrentUser -MinimumVersion $pesterMinVersion -MaximumVersion $pesterMaxVersion -ErrorAction Stop -SkipPublisherCheck
2119
}
22-
Get-Module Pester -ListAvailable
20+
Get-Module Pester | Remove-Module -Force
2321
Import-Module Pester -MinimumVersion $pesterMinVersion -MaximumVersion $pesterMaxVersion -Force -ErrorAction Stop
22+
Get-Module Pester
23+
24+
# Install RequiredModules if needed
25+
$manifestObj = Invoke-Command -ScriptBlock ([scriptblock]::Create((Get-Content $MODULE_MANIFEST -Encoding utf8 -Raw)))
26+
if ($manifestObj.Contains('RequiredModules')) {
27+
foreach ($m in $manifestObj['RequiredModules']) {
28+
$m = $m.Clone()
29+
$m['Name'] = $m['ModuleName']
30+
$m.Remove('ModuleName')
31+
if (!(Get-InstalledModule @m -ErrorAction SilentlyContinue)) {
32+
"Installing required module: $( $m['Name'] )" | Write-Host -ForegroundColor Green
33+
Install-Module @m -Force -Scope CurrentUser -ErrorAction Stop
34+
}
35+
Get-Module $m['Name'] -ListAvailable
36+
}
37+
}
38+
39+
# Test the module manifest
40+
Test-ModuleManifest "$MODULE_MANIFEST" -ErrorAction Stop > $null
2441

2542
# Import our module
2643
Get-Module "$MODULE_NAME" | Remove-Module -Force
27-
Import-Module $MODULE_PATH -Force -ErrorAction Stop
44+
Import-Module $MODULE_MANIFEST -Force -ErrorAction Stop -Verbose
45+
Get-Module "$MODULE_NAME"
2846

47+
$global:PesterDebugPreference_ShowFullErrors = $true # For Pester 4
2948
if ($Tag) {
3049
# Run Unit Tests
3150
$res = Invoke-Pester -Script $MODULE_DIR -Tag $Tag -PassThru -ErrorAction Stop
@@ -48,7 +67,7 @@ if ($Tag) {
4867
"$( $res2.FailedCount ) integration tests failed." | Write-Host
4968
}
5069

51-
if (($res -and $res.FailedCount -gt 0) -or ($res2 -and $res2.FailedCount)) {
70+
if (($res -and $res.FailedCount -gt 0) -or ($res2 -and $res2.FailedCount -gt 0)) {
5271
throw
5372
}
5473
}

0 commit comments

Comments
 (0)