Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: AD-Audit Tests

on:
push:
branches: [ main, develop, 'claude/*' ]
pull_request:
branches: [ main, develop ]

jobs:
test:
name: Run Pester Tests
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Display PowerShell version
shell: pwsh
run: |
$PSVersionTable
Write-Host "PowerShell $($PSVersionTable.PSVersion) on $($PSVersionTable.OS)"

- name: Install Pester
shell: pwsh
run: |
Install-Module -Name Pester -MinimumVersion 5.0.0 -Force -Scope CurrentUser -SkipPublisherCheck
Import-Module Pester
$pesterVersion = (Get-Module Pester).Version
Write-Host "Installed Pester $pesterVersion"

- name: Run Pester Tests
shell: pwsh
run: |
cd Tests
.\Run-Tests.ps1 -CI -CodeCoverage -OutputFormat NUnitXml
continue-on-error: false

- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action/windows@v2
if: always()
with:
files: Tests/TestResults.NUnitXml
check_name: 'Pester Test Results'
comment_title: 'Pester Test Results'

- name: Upload Test Results
uses: actions/upload-artifact@v3
if: always()
with:
name: test-results
path: Tests/TestResults.NUnitXml

- name: Upload Code Coverage
uses: actions/upload-artifact@v3
if: always()
with:
name: code-coverage
path: Tests/coverage.xml

code-quality:
name: Code Quality Checks
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: PSScriptAnalyzer
shell: pwsh
run: |
Install-Module -Name PSScriptAnalyzer -Force -Scope CurrentUser -SkipPublisherCheck
$results = Invoke-ScriptAnalyzer -Path . -Recurse -Settings PSGallery
$results | Format-Table -AutoSize

$errors = $results | Where-Object { $_.Severity -eq 'Error' }
$warnings = $results | Where-Object { $_.Severity -eq 'Warning' }

Write-Host ""
Write-Host "Summary:"
Write-Host " Errors: $($errors.Count)" -ForegroundColor $(if($errors.Count -gt 0){'Red'}else{'Green'})
Write-Host " Warnings: $($warnings.Count)" -ForegroundColor $(if($warnings.Count -gt 0){'Yellow'}else{'Green'})

if ($errors.Count -gt 0) {
Write-Error "PSScriptAnalyzer found $($errors.Count) error(s)"
exit 1
}
Loading
Loading