1+ name : Run Unit Tests
2+
3+ on :
4+ push :
5+ branches : [ main, master ]
6+ pull_request :
7+ branches : [ main, master ]
8+
9+ jobs :
10+ test :
11+ runs-on : windows-latest
12+
13+ steps :
14+ - name : Checkout repository
15+ uses : actions/checkout@v4
16+
17+ - name : Setup PowerShell modules
18+ shell : pwsh
19+ run : |
20+ Write-Host "Installing required modules..."
21+ # Install Pester if needed
22+ if (-not (Get-Module -ListAvailable -Name Pester)) {
23+ Install-Module -Name Pester -Force -SkipPublisherCheck -Scope CurrentUser
24+ }
25+
26+ # Import your GenXdev modules
27+ $modulePath = "${{ github.workspace }}/Modules"
28+ if (Test-Path $modulePath) {
29+ $env:PSModulePath = "$modulePath;$env:PSModulePath"
30+ Write-Host "Added modules path: $modulePath"
31+ }
32+
33+ - name : Run unit tests
34+ shell : pwsh
35+ run : |
36+ Write-Host "Running Assert-GenXdevTest..."
37+
38+ # Import the GenXdev.Coding module which contains Assert-GenXdevTest
39+ Import-Module GenXdev.Coding -ErrorAction SilentlyContinue
40+
41+ # Run tests with error handling
42+ try {
43+ $result = Assert-GenXdevTest -Verbosity Detailed -TestFailedAction Stop -SkipModuleImports
44+
45+ if (-not $result.Success) {
46+ Write-Error "Tests failed!"
47+
48+ # Display analyzer results if any
49+ if ($result.AnalyzerResults) {
50+ Write-Host "`nPSScriptAnalyzer Results:" -ForegroundColor Yellow
51+ $result.AnalyzerResults | Format-Table -AutoSize
52+ }
53+
54+ # Display failed test names if any
55+ if ($result.TestResults.Failed) {
56+ Write-Host "`nFailed Tests:" -ForegroundColor Red
57+ $result.TestResults.Failed.Name | ForEach-Object { Write-Host " - $_" }
58+ }
59+
60+ exit 1
61+ }
62+
63+ Write-Host "`n✓ All tests passed!" -ForegroundColor Green
64+ exit 0
65+
66+ } catch {
67+ Write-Error "Error running tests: $($_.Exception.Message)"
68+ exit 1
69+ }
0 commit comments