123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/usr/bin/env pwsh
- <#
- .SYNOPSIS
- Used by Azure Pipelines to compare code coverage reports between master and current branch.
- .PARAMETER wd
- The working directory in which to find downloaded artifacts.
- #>
- param([string]$wd)
- if (Test-Path -Path "$wd/current-artifacts/Code Coverage Report_*/summary*/coverage.xml") {
- [xml]$BranchXML = Get-Content "$wd/current-artifacts/Code Coverage Report_*/summary*/coverage.xml"
- } else {
- Write-Host "No code coverage from this build. Is pytest configured to output code coverage? Exiting pipeline." -ForegroundColor Red
- exit 1
- }
- if (Test-Path -Path "$wd/previous-artifacts/Code Coverage Report_*/summary*/coverage.xml") {
- [xml]$MasterXML = Get-Content "$wd/previous-artifacts/Code Coverage Report_*/summary*/coverage.xml"
- } else {
- Write-Host "No code coverage from previous build. Exiting pipeline." -ForegroundColor Red
- exit 2
- }
- $masterlinerate = [math]::Round([decimal]$MasterXML.coverage.'line-rate' * 100, 2)
- $branchlinerate = [math]::Round([decimal]$BranchXML.coverage.'line-rate' * 100, 2)
- Write-Output "Master line coverage rate: $masterlinerate%"
- Write-Output "Branch line coverage rate: $branchlinerate%"
- if ($masterlinerate -eq 0) {
- $change = "Infinite"
- } else {
- $change = [math]::Abs($branchlinerate - $masterlinerate)
- }
- if ($branchlinerate -gt $masterlinerate) {
- Write-Host "Coverage increased by $change% 😀" -ForegroundColor Green
- exit 0
- } elseif ($branchlinerate -eq $masterlinerate) {
- Write-Host "Coverage has not changed." -ForegroundColor Green
- exit 0
- } else {
- Write-Host "Coverage decreased by $change% 😭" -ForegroundColor Red
- exit 4
- }
|