@@ -34,36 +34,45 @@ jobs:
3434 - name : Install dependencies
3535 run : pnpm install
3636
37- - name : Build and test
38- run : pnpm test:spec
39-
40- - name : Run coverage (domain suite)
37+ - name : Test with coverage
4138 run : |
4239 set -o pipefail
43- pnpm test:domain:cov | tee coverage/typecheck/coverage.log
40+ pnpm -w build
41+ c8 --all --include "packages/domain/out/**/*.js" --exclude "**/*.test.*" --exclude "packages/**/test/**" -r text -r html -r lcov -r json -o coverage/typecheck node --test --test-reporter=spec | tee coverage/typecheck/coverage.log
4442
4543 - name : Coverage summary (job)
44+ if : always()
4645 run : |
4746 {
4847 echo "## Coverage (domain suite)";
4948 echo "";
50- grep -A20 "All files" coverage/typecheck/coverage.log || cat coverage/typecheck/coverage.log;
49+ if [ -f coverage/typecheck/coverage.log ]; then
50+ grep -A20 "All files" coverage/typecheck/coverage.log || cat coverage/typecheck/coverage.log;
51+ else
52+ echo "**Coverage log not found.**";
53+ fi
5154 } >> "$GITHUB_STEP_SUMMARY"
5255
5356 - name : Upload coverage artifacts
57+ if : always()
5458 uses : actions/upload-artifact@v4
5559 with :
5660 name : coverage-typecheck
5761 path : coverage/typecheck
62+ if-no-files-found : ignore
5863
5964 - name : Comment coverage on PR
60- if : github.event_name == 'pull_request'
65+ if : github.event_name == 'pull_request' && always()
6166 uses : actions/github-script@v7
6267 with :
6368 github-token : ${{ secrets.GITHUB_TOKEN }}
6469 script : |
6570 const fs = require('fs');
6671 const path = 'coverage/typecheck/coverage-final.json';
72+ if (!fs.existsSync(path)) {
73+ core.info('coverage-final.json not found; skipping comment.');
74+ return;
75+ }
6776 const coverage = JSON.parse(fs.readFileSync(path, 'utf8'));
6877
6978 const keys = ['lines', 'statements', 'functions', 'branches'];
0 commit comments