name: Unit Tests on: push: jobs: lint: name: PS Script Analyzer runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - name: Install PSScriptAnalyzer run: | Set-PSRepository -Name PSGallery -InstallationPolicy Trusted Install-Module -Name PSScriptAnalyzer -RequiredVersion 1.20.0 -Scope CurrentUser -Force Import-Module PSScriptAnalyzer -RequiredVersion 1.20.0 -Force Get-Module PSScriptAnalyzer | Select-Object Name, Version, Path shell: pwsh - name: Run PSScriptAnalyzer run: | $results = Invoke-ScriptAnalyzer -Path . -Settings ./lint/PSScriptAnalyser.ps1 -Recurse if ($results) { $results | Format-Table -AutoSize | Out-String -Width 4096 | Write-Host } else { Write-Host "PSScriptAnalyzer found no diagnostics." } shell: pwsh test: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v7 - name: Install Pester run: | Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process Install-Module -Name Pester -RequiredVersion 5.8.0 -Force -SkipPublisherCheck -AllowClobber Import-Module Pester -RequiredVersion 5.8.0 -Force Get-Module Pester | Select-Object Name, Version, Path shell: pwsh - name: Run Pester tests run: | Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process Import-Module Pester -RequiredVersion 5.8.0 -Force Invoke-Pester -Path 'pester/*.Tests.ps1' -Output Detailed -CI shell: pwsh env: TEMP: ${{ runner.temp }}