acoustic-spring-13969
04/05/2026, 9:01 PMacoustic-spring-13969
04/06/2026, 6:20 AMcurved-manchester-66006
04/06/2026, 3:49 PMpants repo itself uses <http://coveralls.io|coveralls.io> https://coveralls.io/github/pantsbuild/pants?branch=main
In that case, coveralls handles aggregation.
I'd be curios for a design that works well with --changed-since, since that can be harder to reason about.acoustic-spring-13969
04/06/2026, 4:22 PMpants test --changed-since=origin/${{ github.base_ref }} --changed-dependents=transitive --shard=$((${{ matrix.shard }}))
Then download and merge them based on this logic
• Combine all shards via coverage combine using 3rdparty/.coveragerc
• Exports a merged coverage-report/coverage.xml
• Fallback chain if no binary .coverage files exist:
Try using a shard's coverage.xml directly
• If nothing at all, generate a minimal empty coverage.xml via Python inline script (so downstream steps don't fail on a missing file e.g coverage thresholds)
I plan on adding diff-cover later down the line when I would want coverage on new/edited lines of code only but for now this setup works well for us
Have added approach as a PR if you're interested in reviewing or suggesting