Skip to content

Commit

Permalink
Enhancement (ci): Enhance test entrypoint script
Browse files Browse the repository at this point in the history
  • Loading branch information
leojonathanoh committed Jun 17, 2024
1 parent 46f9aaa commit c36d5d0
Showing 1 changed file with 30 additions and 11 deletions.
41 changes: 30 additions & 11 deletions test/test.ps1
Original file line number Diff line number Diff line change
@@ -1,31 +1,50 @@
[CmdletBinding()]
param (
[Parameter(Mandatory=$false)]
[ValidateNotNullOrEmpty()]
[string]$Tag = ''
)
$MODULE_NAME = (Get-Item $PSScriptRoot/../).Name
$MODULE_DIR = "$PSScriptRoot/../src/$MODULE_NAME"
$MODULE_PATH = "$MODULE_DIR/$MODULE_NAME.psm1"
$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
Get-Module Pester

# Install RequiredModules if needed
$manifestObj = Invoke-Command -ScriptBlock ([scriptblock]::Create((Get-Content $MODULE_MANIFEST -Encoding utf8 -Raw)))
if ($manifestObj.Contains('RequiredModules')) {
foreach ($m in $manifestObj['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
}
}

# Test the module manifest
Test-ModuleManifest "$MODULE_MANIFEST" -ErrorAction Stop > $null

# Import our module
Get-Module "$MODULE_NAME" | Remove-Module -Force
Import-Module $MODULE_PATH -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
Expand All @@ -48,7 +67,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
}
}

0 comments on commit c36d5d0

Please sign in to comment.