From f2b4e881e47c69f1d6d77d831f0add3b8ec9293c Mon Sep 17 00:00:00 2001 From: Zac Gaetano Date: Thu, 7 May 2026 15:16:11 +0000 Subject: [PATCH] ci: enforce 80% line coverage gate on TeamsISO.Engine --- .forgejo/workflows/ci.yml | 28 ++++++++++++++++++++++++++++ coverlet.runsettings | 14 ++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 coverlet.runsettings diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 543120d..8777202 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -34,11 +34,39 @@ jobs: --no-build --logger "trx;LogFileName=test-results.trx" --collect:"XPlat Code Coverage" + --settings coverlet.runsettings --filter "Category!=ndi&requires!=ndi" + - name: Install ReportGenerator + run: dotnet tool install --global dotnet-reportgenerator-globaltool + + - name: Generate coverage report + run: | + export PATH="$PATH:$HOME/.dotnet/tools" + reportgenerator \ + -reports:"**/coverage.cobertura.xml" \ + -targetdir:coverage-report \ + -reporttypes:"Cobertura;TextSummary" \ + -assemblyfilters:"+TeamsISO.Engine;-TeamsISO.Engine.NdiInterop" + + - name: Enforce coverage threshold (80%) + run: | + summary=$(cat coverage-report/Summary.txt) + echo "$summary" + line_coverage=$(echo "$summary" | awk '/Line coverage/ {print $3}' | tr -d '%') + echo "Line coverage: $line_coverage%" + awk -v c="$line_coverage" 'BEGIN { if (c+0 < 80) { exit 1 } }' + - name: Upload test results if: always() uses: actions/upload-artifact@v4 with: name: test-results path: '**/test-results.trx' + + - name: Upload coverage report + if: always() + uses: actions/upload-artifact@v4 + with: + name: coverage-report + path: coverage-report/ diff --git a/coverlet.runsettings b/coverlet.runsettings new file mode 100644 index 0000000..0d81fe7 --- /dev/null +++ b/coverlet.runsettings @@ -0,0 +1,14 @@ + + + + + + + cobertura,opencover + [*.Tests]*,[*.NdiInterop]*,[*.IntegrationTests]* + GeneratedCodeAttribute,CompilerGeneratedAttribute + + + + +