1+ name : ' Daily Test Coverage Improver - Coverage Steps'
2+ description : ' Builds project, runs tests, and generates coverage reports'
3+ runs :
4+ using : ' composite'
5+ steps :
6+ - name : Setup .NET
7+ uses : actions/setup-dotnet@v4
8+ with :
9+ dotnet-version : ' 8.0.x'
10+
11+ - name : Restore dependencies
12+ shell : bash
13+ run : dotnet restore
14+
15+ - name : Build project
16+ shell : bash
17+ run : dotnet build --no-restore
18+
19+ - name : Add coverlet collector
20+ shell : bash
21+ run : |
22+ dotnet add tests/FSharp.Control.AsyncSeq.Tests/FSharp.Control.AsyncSeq.Tests.fsproj package coverlet.collector --version 6.0.0 --no-restore || true
23+
24+ - name : Run tests with coverage
25+ shell : bash
26+ run : |
27+ dotnet test --collect:"XPlat Code Coverage" --results-directory ./coverage --logger "console;verbosity=detailed"
28+
29+ - name : Install ReportGenerator
30+ shell : bash
31+ run : dotnet tool install -g dotnet-reportgenerator-globaltool || dotnet tool update -g dotnet-reportgenerator-globaltool
32+
33+ - name : Generate coverage report
34+ shell : bash
35+ run : |
36+ reportgenerator -reports:"coverage/**/coverage.cobertura.xml" -targetdir:"coverage/report" -reporttypes:"Html;Badges;Cobertura;JsonSummary"
37+
38+ - name : Display coverage summary
39+ shell : bash
40+ run : |
41+ echo "=== Coverage Summary ==="
42+ if [ -f "coverage/report/Summary.json" ]; then
43+ cat coverage/report/Summary.json | grep -E '"coverage":|"covered":|"uncovered":|"coverable":'
44+ else
45+ echo "Coverage summary not found"
46+ find coverage -name "*.xml" -o -name "*.json" | head -5
47+ fi
48+
49+ - name : Upload coverage report
50+ uses : actions/upload-artifact@v4
51+ with :
52+ name : coverage-report
53+ path : coverage/report/
54+ retention-days : 30
55+
56+ - name : Upload raw coverage data
57+ uses : actions/upload-artifact@v4
58+ with :
59+ name : coverage-data
60+ path : coverage/
61+ retention-days : 7
0 commit comments