tests/TestEnvironment.psm1
|
# Test Environment Setup for HermesConsoleUI # Prepares the environment for successful module loading in Pester context <# .SYNOPSIS Initializes test environment for HermesConsoleUI tests #> function Initialize-HermesTestEnvironment { [CmdletBinding()] param() # Get module root $moduleRoot = Resolve-Path (Join-Path $PSScriptRoot ".." "..") # Ensure all required directories exist $requiredDirs = @( "src\Constants", "src\Validators", "src\Core", "modules", "config\locales" ) foreach ($dir in $requiredDirs) { $fullPath = Join-Path $moduleRoot $dir if (-not (Test-Path $fullPath)) { Write-Warning "Required directory not found: $dir" } } # Set up minimal environment variables if needed if (-not $env:HERMES_TEST_MODE) { $env:HERMES_TEST_MODE = "true" } return $moduleRoot } <# .SYNOPSIS Safely imports HermesConsoleUI module for testing #> function Import-HermesModule { [CmdletBinding()] param( [switch]$Force ) try { $moduleRoot = Initialize-HermesTestEnvironment $manifestPath = Join-Path $moduleRoot "HermesConsoleUI.psd1" # Remove module if already loaded if (Get-Module HermesConsoleUI) { Remove-Module HermesConsoleUI -Force -ErrorAction SilentlyContinue } # Import with error handling Import-Module $manifestPath -Force:$Force -Global -ErrorAction Stop return $true } catch { Write-Warning "Failed to import HermesConsoleUI: $_" return $false } } <# .SYNOPSIS Validates that module loaded successfully #> function Test-HermesModuleLoaded { $module = Get-Module -Name HermesConsoleUI return ($null -ne $module) } <# .SYNOPSIS Gets list of exported functions from HermesConsoleUI #> function Get-HermesFunctions { if (-not (Test-HermesModuleLoaded)) { return @() } return (Get-Command -Module HermesConsoleUI).Name } # Export functions Export-ModuleMember -Function @( 'Initialize-HermesTestEnvironment', 'Import-HermesModule', 'Test-HermesModuleLoaded', 'Get-HermesFunctions' ) |