Add build and test for dotnet projects (#51)

* Add build and test in subfolder to see if it works

* Move build and test file to root workflows

* Update to .net 9, add checkout filter and fix package check

* Only run framework tests on windows-latest

* Fix if statements and restrict package check to release builds

* Fix coverage check

* Add dotnet format

* Address PR comment

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Address PR comments

Co-authored-by: Roger Barreto <19890735+RogerBarreto@users.noreply.github.com>

* Address PR comments

Co-authored-by: Roger Barreto <19890735+RogerBarreto@users.noreply.github.com>

* Fix error

* update package install check to run in temp folder.

* Fix typo in package install check

* Update net472 handling for tests

* Fix dotnet version name

* Update package install check with framework from matrix

* Remove switch from pack and rename to targetFramework

* Try /p switch for pack

* Move /p switch

* rename /p to /property

* Restrict package install check to netx

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Roger Barreto <19890735+RogerBarreto@users.noreply.github.com>
This commit is contained in:
westey
2025-06-03 10:20:50 +00:00
committed by GitHub
co-authored by Copilot Roger Barreto
parent 43316ecb50
commit 0bcb11fbb4
3 changed files with 387 additions and 0 deletions
@@ -0,0 +1,71 @@
param (
[string]$JsonReportPath,
[double]$CoverageThreshold
)
$jsonContent = Get-Content $JsonReportPath -Raw | ConvertFrom-Json
$coverageBelowThreshold = $false
$nonExperimentalAssemblies = [System.Collections.Generic.HashSet[string]]::new()
$assembliesCollection = @(
'Microsoft.Agents.Abstractions'
'Microsoft.Agents'
)
foreach ($assembly in $assembliesCollection) {
$nonExperimentalAssemblies.Add($assembly)
}
function Get-FormattedValue {
param (
[float]$Coverage,
[bool]$UseIcon = $false
)
$formattedNumber = "{0:N1}" -f $Coverage
$icon = if (-not $UseIcon) { "" } elseif ($Coverage -ge $CoverageThreshold) { '✅' } else { '❌' }
return "$formattedNumber% $icon"
}
$lineCoverage = $jsonContent.summary.linecoverage
$branchCoverage = $jsonContent.summary.branchcoverage
$totalTableData = [PSCustomObject]@{
'Metric' = 'Total Coverage'
'Line Coverage' = Get-FormattedValue -Coverage $lineCoverage
'Branch Coverage' = Get-FormattedValue -Coverage $branchCoverage
}
$totalTableData | Format-Table -AutoSize
$assemblyTableData = @()
foreach ($assembly in $jsonContent.coverage.assemblies) {
$assemblyName = $assembly.name
$assemblyLineCoverage = $assembly.coverage
$assemblyBranchCoverage = $assembly.branchcoverage
$isNonExperimentalAssembly = $nonExperimentalAssemblies -contains $assemblyName
if ($isNonExperimentalAssembly -and ($assemblyLineCoverage -lt $CoverageThreshold -or $assemblyBranchCoverage -lt $CoverageThreshold)) {
$coverageBelowThreshold = $true
}
$assemblyTableData += [PSCustomObject]@{
'Assembly Name' = $assemblyName
'Line' = Get-FormattedValue -Coverage $assemblyLineCoverage -UseIcon $isNonExperimentalAssembly
'Branch' = Get-FormattedValue -Coverage $assemblyBranchCoverage -UseIcon $isNonExperimentalAssembly
}
}
$sortedTable = $assemblyTableData | Sort-Object {
$nonExperimentalAssemblies -contains $_.'Assembly Name'
} -Descending
$sortedTable | Format-Table -AutoSize
if ($coverageBelowThreshold) {
Write-Host "Code coverage is lower than defined threshold: $CoverageThreshold. Stopping the task."
exit 1
}