Skip to content

Commit d95f10b

Browse files
committed
Improve PS 5.1 compatibility
- Update Pester tests for PS 5.1 testing - Update `Get-RequiredModule` function for PS 5.1 compatibility
1 parent 4775d61 commit d95f10b

File tree

3 files changed

+26
-23
lines changed

3 files changed

+26
-23
lines changed

AsBuiltReport.Core/Src/Private/Get-RequiredModule.ps1

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ function Get-RequiredModule {
88
minimum version. If the module is not installed or the version is too old, it throws an
99
error with instructions on how to install or update the module.
1010
11-
This check only works for PowerShell Core (7.x) due to version comparison requirements.
12-
1311
.PARAMETER Name
1412
The name of the required PowerShell module (e.g., 'Az', 'VMware.PowerCLI').
1513
@@ -28,7 +26,6 @@ function Get-RequiredModule {
2826
2927
.NOTES
3028
This function uses the global $translate variable for localized error messages.
31-
Only works with PowerShell Core (7.x) due to version comparison logic.
3229
Throws an error if the module is not installed or version is too old.
3330
#>
3431

@@ -43,26 +40,24 @@ function Get-RequiredModule {
4340
[String] $Version
4441
)
4542

46-
# Check if the required version of the module is installed (check only works for PowerShell Core / 7.x)
47-
if ($PSVersionTable.PSEdition -eq 'Core') {
48-
$RequiredModule = Get-Module -ListAvailable -Name $Name |
49-
Sort-Object -Property Version -Descending |
50-
Select-Object -First 1
43+
# Check if the required version of the module is installed
44+
$RequiredModule = Get-Module -ListAvailable -Name $Name |
45+
Sort-Object -Property Version -Descending |
46+
Select-Object -First 1
5147

52-
if ($RequiredModule) {
53-
$ModuleVersion = "$($RequiredModule.Version.Major)" + "." + "$($RequiredModule.Version.Minor)" + "." + "$($RequiredModule.Version.Build)"
54-
} else {
55-
$ModuleVersion = $null
56-
}
48+
if ($RequiredModule) {
49+
$ModuleVersion = "$($RequiredModule.Version.Major)" + "." + "$($RequiredModule.Version.Minor)" + "." + "$($RequiredModule.Version.Build)"
50+
} else {
51+
$ModuleVersion = $null
52+
}
5753

58-
# Module not installed
59-
if (-not $ModuleVersion -or $ModuleVersion -eq ".") {
60-
throw ($translate.RequiredModuleNotInstalled -f $Name, $Version)
61-
}
54+
# Module not installed
55+
if (-not $ModuleVersion -or $ModuleVersion -eq ".") {
56+
throw ($translate.RequiredModuleNotInstalled -f $Name, $Version)
57+
}
6258

63-
# Module version too old
64-
if ([Version]$ModuleVersion -lt [Version]$Version) {
65-
throw ($translate.RequiredModuleTooOld -f $Name, $ModuleVersion, $Version)
66-
}
59+
# Module version too old
60+
if ([Version]$ModuleVersion -lt [Version]$Version) {
61+
throw ($translate.RequiredModuleTooOld -f $Name, $ModuleVersion, $Version)
6762
}
6863
}

Tests/Unit/Draw-AsciiBanner.Tests.ps1

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,15 @@ Describe 'Draw-AsciiBanner Unit Tests' {
136136
Mock Write-Host { param($Object) $script:Output += @($Object) }
137137
$script:Output = @()
138138
Draw-AsciiBanner -Lines @() -TextColor 'Cyan' -SeparatorColor 'Cyan'
139-
$script:Output[0] | Should -Match ''
139+
# Check separator line properties instead of exact character match
140+
# This handles encoding differences between PS 5.1 and PS 7.x
141+
$separator = $script:Output[0]
142+
$separator.Length | Should -Be 60
143+
# Verify all characters in the separator are the same
144+
$uniqueChars = $separator.ToCharArray() | Select-Object -Unique
145+
$uniqueChars.Count | Should -Be 1
146+
# Verify it's the expected Unicode character (0x2500)
147+
[int][char]$uniqueChars[0] | Should -Be 0x2500
140148
}
141149
}
142150
}

Tests/Unit/Get-RequiredModule.Tests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Describe 'Get-RequiredModule Unit Tests' {
5353
}
5454
}
5555

56-
Context 'Module Version Checking' -Skip:($PSVersionTable.PSEdition -ne 'Core') {
56+
Context 'Module Version Checking' {
5757
It 'Should pass when module version meets requirement' {
5858
InModuleScope 'AsBuiltReport.Core' {
5959
Mock Get-Module {

0 commit comments

Comments
 (0)