66 pull_request :
77 branches : [ main ]
88
9+ permissions :
10+ contents : read
11+ pull-requests : write
912
1013jobs :
1114 build-and-test-linux :
@@ -14,15 +17,96 @@ jobs:
1417
1518 steps :
1619 - uses : actions/checkout@v4
20+ with :
21+ fetch-depth : 0
1722 - name : Setup .NET
1823 uses : actions/setup-dotnet@v4
1924 with :
20- dotnet-version : 9 .x.x
25+ dotnet-version : 8 .x.x
2126 - name : make script executable
2227 run : chmod u+x build.sh
23- - name : Build and test
28+ - name : Build and test with coverage
2429 working-directory : ./
25- run : ./build.sh runtests
30+ run : ./build.sh runtestswithcoverage
31+
32+ - name : Install ReportGenerator
33+ run : dotnet tool install -g dotnet-reportgenerator-globaltool
34+
35+ - name : Generate coverage report
36+ run : |
37+ reportgenerator \
38+ -reports:"TestResults/**/coverage.cobertura.xml" \
39+ -targetdir:"TestResults/CoverageReport" \
40+ -reporttypes:"Html;Cobertura;JsonSummary" \
41+ -verbosity:"Info"
42+
43+ - name : Code Coverage Report
44+ uses : irongut/CodeCoverageSummary@v1.3.0
45+ with :
46+ filename : TestResults/**/coverage.cobertura.xml
47+ badge : true
48+ fail_below_min : false
49+ format : markdown
50+ hide_branch_rate : false
51+ hide_complexity : false
52+ indicators : true
53+ output : both
54+ thresholds : ' 60 80'
55+
56+ - name : Create Enhanced Coverage Report
57+ run : |
58+ echo "# 📊 Code Coverage Report" > enhanced-coverage-results.md
59+ echo "" >> enhanced-coverage-results.md
60+ echo "## Summary" >> enhanced-coverage-results.md
61+ cat code-coverage-results.md >> enhanced-coverage-results.md
62+ echo "" >> enhanced-coverage-results.md
63+ echo "## 📈 Coverage Analysis" >> enhanced-coverage-results.md
64+ echo "" >> enhanced-coverage-results.md
65+
66+ # Extract coverage percentage for analysis
67+ COVERAGE=$(grep -o '[0-9]\+%' code-coverage-results.md | head -1 | tr -d '%')
68+
69+ if [ "$COVERAGE" -ge 80 ]; then
70+ echo "🟢 **Excellent Coverage!** Your code coverage is above 80%, which is considered very good practice." >> enhanced-coverage-results.md
71+ elif [ "$COVERAGE" -ge 60 ]; then
72+ echo "🟡 **Good Coverage** Your code coverage is above 60%. Consider adding more tests to reach 80%." >> enhanced-coverage-results.md
73+ else
74+ echo "🔴 **Low Coverage** Your code coverage is below 60%. Please add more tests to improve coverage." >> enhanced-coverage-results.md
75+ fi
76+
77+ echo "" >> enhanced-coverage-results.md
78+ echo "## 🎯 Coverage Goals" >> enhanced-coverage-results.md
79+ echo "- **Target**: 80% line coverage" >> enhanced-coverage-results.md
80+ echo "- **Minimum**: 60% line coverage" >> enhanced-coverage-results.md
81+ echo "- **Current**: ${COVERAGE}% line coverage" >> enhanced-coverage-results.md
82+ echo "" >> enhanced-coverage-results.md
83+ echo "## 📋 What These Numbers Mean" >> enhanced-coverage-results.md
84+ echo "" >> enhanced-coverage-results.md
85+ echo "- **Line Rate**: Percentage of code lines that were executed during tests" >> enhanced-coverage-results.md
86+ echo "- **Branch Rate**: Percentage of code branches (if/else, switch cases) that were tested" >> enhanced-coverage-results.md
87+ echo "- **Health**: Overall assessment combining line and branch coverage" >> enhanced-coverage-results.md
88+ echo "" >> enhanced-coverage-results.md
89+ echo "## 🔗 Detailed Reports" >> enhanced-coverage-results.md
90+ echo "" >> enhanced-coverage-results.md
91+ echo "📋 [Download Full Coverage Report](../actions/runs/${{ github.run_id }}) - Check the 'coverage-report' artifact for detailed HTML coverage report" >> enhanced-coverage-results.md
92+ echo "" >> enhanced-coverage-results.md
93+ echo "---" >> enhanced-coverage-results.md
94+ echo "*Coverage report generated on $(date '+%Y-%m-%d at %H:%M:%S UTC')*" >> enhanced-coverage-results.md
95+ echo "" >> enhanced-coverage-results.md
96+ echo "<!-- Sticky Pull Request Comment -->" >> enhanced-coverage-results.md
97+
98+ - name : Add Enhanced Coverage PR Comment
99+ uses : marocchino/sticky-pull-request-comment@v2
100+ if : github.event_name == 'pull_request'
101+ with :
102+ recreate : true
103+ path : enhanced-coverage-results.md
104+
105+ - name : Upload coverage report
106+ uses : actions/upload-artifact@v4
107+ with :
108+ name : coverage-report
109+ path : TestResults/CoverageReport/
26110
27111 build-and-test-windows :
28112
33117 - name : Setup .NET
34118 uses : actions/setup-dotnet@v4
35119 with :
36- dotnet-version : 9 .x.x
37- - name : Build and test
120+ dotnet-version : 8 .x.x
121+ - name : Build and test with coverage
38122 working-directory : ./
39- run : ./build.cmd runtests
123+ run : ./build.cmd runtestswithcoverage
0 commit comments