Description
Describe the bug
In my project, I configured coverage.py using pyproject.toml
to
- write all files into a
test-files
folder (idk if that’s relevant) - skip coverage for
if TYPE_CHECKING:
blocks
The reported coverage reflects that (see table below), and when I run coverage xml
, the test-files/coverage.xml
file is also correct.
------------------------------------------------------------------ TOTAL 110 5 95%Name Stmts Miss Cover
------------------------------------------------------------------ src/fast_array_utils/__init__.py 4 0 100% src/fast_array_utils/_patches.py 2 0 100% src/fast_array_utils/conv/__init__.py 3 0 100% src/fast_array_utils/conv/_asarray.py 25 3 88% src/fast_array_utils/conv/scipy/__init__.py 3 0 100% src/fast_array_utils/conv/scipy/_to_dense.py 12 0 100% src/fast_array_utils/stats/__init__.py 3 0 100% src/fast_array_utils/stats/_sum.py 33 0 100% src/fast_array_utils/types.py 25 2 92%
But when the codecov CLI runs coverage xml
via its coveragepy plugin, the lines are not skipped and codecov reports a 82.87% coverage instead of the expected 95.45% (see codecov report for the linked run below)
See also Additional context below for a workaround I’m using
To Reproduce
- set coverage.py’s
report.exclude_also
setting in a pyproject.toml to ignore some lines - collect coverage in
.coverage
file and runcoverage xml
- run codecov CLI’s upload (which will re-generate the XML)
- compare the XML you created with the one codecov’s CLI created
Expected behavior
either
coverage xml
run from the codecov CLI uses the same config as when I run it, or- when the file passed via
--file
already exists, have the codecov CLI skip runningcoverage xml
Regression
This probably worked using the old coverage
PyPI package, but IDK.
Screenshots
NA
Product Area
coverage
Versions
- OS: linux
- Git Host: GitHub
- CI/CD: GitHub Actions
- Uploader: codecov-action@v5.3.1, codecov-cli@v10.1.0
Commit and CI link
scverse/fast-array-utils@13436951846
https://github.com/scverse/fast-array-utils/actions/runs/13436951846/job/37541444988
Additional context
I can manually work around this by generating the XML myself and then deleting the test-files/.coverage
file, but this should be fixed on your side.
See scverse/fast-array-utils#29 for the workaround, which results in the correct coverage of 95.45% being reported.