Skip to content
This repository was archived by the owner on Jul 16, 2025. It is now read-only.
This repository was archived by the owner on Jul 16, 2025. It is now read-only.

[BUG] XML generated from coverage.py .coverage doesn’t respect config #648

@flying-sheep

Description

@flying-sheep

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.

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%
------------------------------------------------------------------ TOTAL 110 5 95%

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

  1. set coverage.py’s report.exclude_also setting in a pyproject.toml to ignore some lines
  2. collect coverage in .coverage file and run coverage xml
  3. run codecov CLI’s upload (which will re-generate the XML)
  4. 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 running coverage xml

Regression
This probably worked using the old coverage PyPI package, but IDK.

Screenshots
NA

Product Area
coverage

Versions

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.

Metadata

Metadata

Labels

MediumMedium Priority Issues (to be fixed or re-evaluated in 3 monthscodecov/codecov-clienhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions