Skip to content

Commit 3fb6a9a

Browse files
authored
Fix Coverage (#147)
* add mkdir command for coverage directory * fix generating lcov.info * debug in coverage directory * update script * add concurrency=1 to fix tests * update merging coverages of packages * use melos script * update melos file * fix uploaded percentage in codecov * fix unit_test_and_coverage command * update scripts * update melos comand * extract generated files from coverage * extract generated directories from melos.yaml coverage * fix indentation
1 parent 0ce3b57 commit 3fb6a9a

File tree

2 files changed

+35
-18
lines changed

2 files changed

+35
-18
lines changed

.github/workflows/coverage.yaml

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,20 @@ jobs:
4343
sleep 5
4444
done
4545
46-
- name: Run unit tests and generate coverage
46+
- name: Run tests and generate coverage with Melos
4747
run: |
48-
melos exec rm -rf coverage
49-
melos run unit_test
50-
51-
- name: Create coverage directory
52-
run: mkdir -p coverage
53-
54-
- name: Calculate and merge coverage
55-
if: success()
56-
run: |
57-
melos exec --dir-exists="coverage" -- bash -c 'dart pub global run coverde filter --input coverage/lcov.info --output coverage/filtered.lcov.info --filters .g.dart'
58-
melos exec --dir-exists="coverage" -- bash -c 'dart pub global run coverde value -i coverage/filtered.lcov.info > coverage/result.txt'
48+
dart pub global activate coverage
49+
dart pub global activate coverde
50+
melos run unit_test_and_coverage
51+
52+
- name: Debug Coverage Directory
53+
run: ls -lh coverage && head -n 20 coverage/lcov.info || true
5954

6055
- name: Upload coverage to Codecov
6156
if: success()
6257
uses: codecov/codecov-action@v3
6358
with:
6459
token: ${{ secrets.CODECOV_TOKEN }}
65-
files: coverage/filtered.lcov.info
60+
files: ./coverage/filtered.lcov.info
61+
fail_ci_if_error: true
62+

melos.yaml

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,29 @@ scripts:
1010
run: melos exec --dir-exists="test" --fail-fast -- dart test --concurrency=1
1111
description: Run all Dart tests in this project sequentially.
1212
unit_test_and_coverage:
13-
description: Merge all packages coverage trace files ignoring data related to generated files.
13+
description: Merge all packages coverage trace files and filter out generated code and generated folders.
1414
run: |
15-
melos exec rm -rf coverage
16-
melos run unit_test
17-
melos exec -c 1 --file-exists=coverage/lcov.info -- coverde filter --input ./coverage/lcov.info --output MELOS_ROOT_PATH/coverage/filtered.lcov.info --filters \.g\.dart
18-
coverde value -i coverage/filtered.lcov.info > MELOS_ROOT_PATH/coverage/result.txt
15+
mkdir -p coverage
16+
melos exec --dir-exists="test" -- dart test --coverage=coverage --concurrency=1
17+
# Collect all raw .json files from package coverage folders
18+
find . -name "*.json" -path "*/coverage/*.json" -exec cp {} coverage/ \;
19+
# Convert to LCOV format
20+
dart pub global run coverage:format_coverage \
21+
--lcov \
22+
--in=coverage \
23+
--out=coverage/lcov.info
24+
# Filter out generated files
25+
dart pub global run coverde filter \
26+
--input coverage/lcov.info \
27+
--output coverage/filtered.lcov.info \
28+
--filters '.g.dart,lib/generated/' \
29+
--paths-parent $PWD
30+
# Print summary report
31+
dart pub global run coverde value \
32+
-i coverage/filtered.lcov.info \
33+
> coverage/result.txt
34+
35+
36+
37+
38+

0 commit comments

Comments
 (0)