Skip to content

Commit

Permalink
Test (entrypoint): Improve test entrypoint script
Browse files Browse the repository at this point in the history
- Includes necessary variables
- Integrates installation of Pester dependencies
- Fixes throwing of error when Pester tests do not have a full passed count
- Add listing of test artifacts at the end of tests
  • Loading branch information
joeltimothyoh committed May 11, 2024
1 parent daebcce commit bf7a565
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 50 deletions.
25 changes: 0 additions & 25 deletions test/Install-TestDependencies.ps1

This file was deleted.

77 changes: 52 additions & 25 deletions test/test.ps1
Original file line number Diff line number Diff line change
@@ -1,43 +1,70 @@
[CmdletBinding()]
param()
param (
[Parameter(Mandatory=$false)]
[ValidateNotNullOrEmpty()]
[string]$Tag = ''
)

Set-StrictMode -Version Latest
$VerbosePreference = 'Continue'
$global:PesterDebugPreference_ShowFullErrors = $true
$script:PesterDebugPreference_ShowFullErrors = $true

try {
# Initialize variables
$moduleItem = Get-Item "$PSScriptRoot/../src/*/*.psm1"
$MODULE_PATH = $moduleItem.FullName
$MODULE_DIR = $moduleItem.Directory
$MODULE_NAME = $moduleItem.BaseName

Push-Location $PSScriptRoot

# Install test dependencies
"Installing test dependencies" | Write-Verbose
& "$PSScriptRoot\Install-TestDependencies.ps1" > $null

# Run unit tests
"Running unit tests" | Write-Verbose
$testFailed = $false
$unitResult = Invoke-Pester -Script "$PSScriptRoot\..\src\PSRepositoryReleaseManager" -Tag 'Unit' -PassThru
if ($unitResult.FailedCount -gt 0) {
"$($unitResult.FailedCount) tests failed." | Write-Warning
$testFailed = $true
# Install Pester if needed
"Checking Pester version" | Write-Host
$pesterMinimumVersion = [version]'4.0.0'
$pesterMaximumVersion = [version]'4.10.1'
$pester = Get-Module 'Pester' -ListAvailable -ErrorAction SilentlyContinue
if (!$pester -or !($pester | ? { $_.Version -ge $pesterMinimumVersion -and $_.Version -le $pesterMaximumVersion })) {
"Installing Pester" | Write-Host
Install-Module -Name 'Pester' -Repository 'PSGallery' -MinimumVersion $pesterMinimumVersion -MaximumVersion $pesterMaximumVersion -Scope CurrentUser -Force
}
$pester = Get-Module Pester -ListAvailable
$pester | Out-String | Write-Verbose
$pester | ? { $_.Version -ge $pesterMinimumVersion -and $_.Version -le $pesterMaximumVersion } | Select-Object -First 1 | Import-Module # Force import the latest version within the defined range to ensure environment uses the correct version of Pester

# Run integration tests
"Running integration tests" | Write-Verbose
$integratedResult = Invoke-Pester -Script "$PSScriptRoot\..\src\PSRepositoryReleaseManager" -Tag 'Integration' -PassThru
if ($integratedResult.FailedCount -gt 0) {
"$($integratedResult.FailedCount) tests failed." | Write-Warning
$testFailed = $true
}
# Import the project module
Import-Module $MODULE_PATH -Force

"Listing test artifacts" | Write-Verbose
git ls-files --others --exclude-standard
if ($Tag) {
# Run Unit Tests
$res = Invoke-Pester -Script $MODULE_DIR -Tag $Tag -PassThru -ErrorAction Stop
if (!($res.PassedCount -eq $res.TotalCount)) {
"$($res.TotalCount - $res.PassedCount) unit tests did not pass." | Write-Host
}
if (!($res.PassedCount -eq $res.TotalCount)) {
throw
}
}else {
# Run Unit Tests
$res = Invoke-Pester -Script $MODULE_DIR -Tag 'Unit' -PassThru -ErrorAction Stop
if (!($res.PassedCount -eq $res.TotalCount)) {
"$($res.TotalCount - $res.PassedCount) integration tests did not pass." | Write-Host
}

"End of tests" | Write-Verbose
if ($testFailed) {
throw "One or more tests failed."
# Run Integration Tests
$res2 = Invoke-Pester -Script $MODULE_DIR -Tag 'Integration' -PassThru -ErrorAction Stop
if (!($res2.PassedCount -eq $res2.TotalCount)) {
"$($res2.TotalCount - $res2.PassedCount) integration tests did not pass." | Write-Host
}

if (!($res.PassedCount -eq $res.TotalCount) -or !($res2.PassedCount -eq $res2.TotalCount)) {
throw
}
}

}catch {
throw
}finally {
Pop-Location
"Listing test artifacts" | Write-Host
git ls-files --others --exclude-standard
}

0 comments on commit bf7a565

Please sign in to comment.