diff --git a/eng/scripts/ValidateProjectCoverage.ps1 b/eng/scripts/ValidateProjectCoverage.ps1
index 39971b8863f..6e554c1ab7e 100644
--- a/eng/scripts/ValidateProjectCoverage.ps1
+++ b/eng/scripts/ValidateProjectCoverage.ps1
@@ -59,6 +59,8 @@ $Errors = New-Object System.Collections.ArrayList
$Kudos = New-Object System.Collections.ArrayList
$ErrorsMarkdown = @();
$KudosMarkdown = @();
+$FatalErrors = 0;
+$Warnings = 0;
Write-Verbose "Collecting projects from code coverage report..."
$CoberturaReport.coverage.packages.package | ForEach-Object {
@@ -66,6 +68,7 @@ $CoberturaReport.coverage.packages.package | ForEach-Object {
$LineCoverage = [math]::Round([double]$_.'line-rate' * 100, 2)
$BranchCoverage = [math]::Round([double]$_.'branch-rate' * 100, 2)
$IsFailed = $false
+ $IsWarning = $false
Write-Verbose "Project $Name with line coverage $LineCoverage and branch coverage $BranchCoverage"
@@ -80,7 +83,17 @@ $CoberturaReport.coverage.packages.package | ForEach-Object {
# Detect the under-coverage
if ($MinCodeCoverage -gt $LineCoverage) {
- $IsFailed = $true
+ if ($MinCodeCoverage -eq 100) {
+ $ansiEscapeCode = "$esc[1m$esc[0;31m";
+ $IsFailed = $true
+ $FatalErrors++;
+ }
+ else {
+ $ansiEscapeCode = "$esc[1m$esc[0;33m";
+ $IsWarning = $true;
+ $Warnings++;
+ }
+
$ErrorsMarkdown += "| $Name | Line | **$MinCodeCoverage** | $LineCoverage :small_red_triangle_down: |"
[void]$Errors.Add(
(
@@ -88,14 +101,24 @@ $CoberturaReport.coverage.packages.package | ForEach-Object {
"Project" = $Name.Replace('Microsoft.Extensions.', 'M.E.').Replace('Microsoft.AspNetCore.', 'M.AC.');
"Coverage Type" = "Line";
"Expected" = $MinCodeCoverage;
- "Actual" = "$esc[1m$esc[0;31m$($LineCoverage)$esc[0m"
+ "Actual" = "$($ansiEscapeCode)$($LineCoverage)$esc[0m"
}
)
)
}
if ($MinCodeCoverage -gt $BranchCoverage) {
- $IsFailed = $true
+ if ($MinCodeCoverage -eq 100) {
+ $ansiEscapeCode = "$esc[1m$esc[0;31m";
+ $IsFailed = $true
+ $FatalErrors++;
+ }
+ else {
+ $ansiEscapeCode = "$esc[1m$esc[0;33m";
+ $IsWarning = $true;
+ $Warnings++;
+ }
+
$ErrorsMarkdown += "| $Name | Branch | **$MinCodeCoverage** | $BranchCoverage :small_red_triangle_down: |"
[void]$Errors.Add(
(
@@ -103,7 +126,7 @@ $CoberturaReport.coverage.packages.package | ForEach-Object {
"Project" = $Name.Replace('Microsoft.Extensions.', 'M.E.').Replace('Microsoft.AspNetCore.', 'M.AC.');
"Coverage Type" = "Branch";
"Expected" = $MinCodeCoverage;
- "Actual" = "$esc[1m$esc[0;31m$($BranchCoverage)$esc[0m"
+ "Actual" = "$($ansiEscapeCode)$($BranchCoverage)$esc[0m"
}
)
)
@@ -125,8 +148,9 @@ $CoberturaReport.coverage.packages.package | ForEach-Object {
)
}
- if ($IsFailed) { Write-Host "$Name" -NoNewline; Write-Host " ...failed validation" -ForegroundColor Red }
- else { Write-Host "$Name" -NoNewline; Write-Host " ...ok" -ForegroundColor Green }
+ if ($IsWarning) { Write-Host "$Name" -NoNewline; Write-Host " ...missed the mark" -ForegroundColor Yellow }
+ elseif ($IsFailed) { Write-Host "$Name" -NoNewline; Write-Host " ...failed validation" -ForegroundColor Red }
+ else { Write-Host "$Name" -NoNewline; Write-Host " ...ok" -ForegroundColor Green }
}
else {
Write-Host "$Name ...skipping"
@@ -175,10 +199,20 @@ if (![string]::IsNullOrWhiteSpace($markdown)) {
Write-Host $gitHubCommentVar
}
-if ($Errors.Count -eq 0)
+if ($FatalErrors -gt 0)
+{
+ Write-Host "`r`nBreaking issues detected."
+ exit -1;
+}
+
+if ($Warnings -gt 0)
+{
+ Write-Host "`r`nNon-breaking issues detected."
+}
+
+if ($FatalErrors -eq 0)
{
- Write-Host "`r`nAll good, no issues found."
+ Write-Host "`r`nAll good, no issues detected."
exit 0;
}
-exit -1;
diff --git a/src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj b/src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj
index d3e969337e6..a6d3b013c0d 100644
--- a/src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj
+++ b/src/Libraries/Microsoft.Extensions.AI.OpenAI/Microsoft.Extensions.AI.OpenAI.csproj
@@ -9,7 +9,7 @@
preview
true
- 72
+ 77
0
diff --git a/src/Libraries/Microsoft.Extensions.Caching.Hybrid/Microsoft.Extensions.Caching.Hybrid.csproj b/src/Libraries/Microsoft.Extensions.Caching.Hybrid/Microsoft.Extensions.Caching.Hybrid.csproj
index 05638bcea77..ede3b88ca36 100644
--- a/src/Libraries/Microsoft.Extensions.Caching.Hybrid/Microsoft.Extensions.Caching.Hybrid.csproj
+++ b/src/Libraries/Microsoft.Extensions.Caching.Hybrid/Microsoft.Extensions.Caching.Hybrid.csproj
@@ -27,7 +27,7 @@
dev
true
EXTEXP0018
- 75
+ 86
50
diff --git a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj
index b83ecbbd0fc..4336188ced0 100644
--- a/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj
+++ b/src/Libraries/Microsoft.Extensions.Diagnostics.Probes/Microsoft.Extensions.Diagnostics.Probes.csproj
@@ -13,7 +13,7 @@
- 70
+ 76
75