Mergedholoviz/datashader#15423.6Kstars
ci: Combine coverage from the JIT and no-JIT test runs
By Mohd Maaz Khan, merged by hoxbro into holoviz/datashader on 16 Oct 2026
Conversation
maaz7409opened this pull request on 15 Oct 2026description.mdAuthor Description
Codecov shows
datashader/tiles.pyat 17.87% onmain(Codecov), and evendatashader/tests/test_tiles.pyhas only 27 of its 83 lines marked as run, althoughtest_tiles.pyruns in every unit job.The unit job runs the suite twice,
test-unit $COVand thentest-unit-nojit $COV, and uploads once. pytest-cov erases the previous coverage data at the start of a run unless--cov-appendis given (pytest-cov docs). So the no-JIT run replaces the JIT run's data, and Codecov only gets the no-JIT numbers.test-unit-nojitdeselectstest_tiles, which is why the tiles code looks untested.This worked before the move to pixi: the tox commands had
--cov-appendon both runs (dropped in #1354), and it's also the workflow described in #1192. Panel sets--cov-appendin itsCOVvariable for the same reason, so I did the same here.Reproduce: run the two CI steps in order and look at the
coverage.xmlthat would be uploaded, then repeat with--cov-appendadded to both:pixi run test-unit --cov=./datashader --cov-report=xml pixi run test-unit-nojit --cov=./datashader --cov-report=xmlLocal coverage.xmlafter both stepslines covered line rate tiles.pymain(only the no-JIT data is left)17299 / 19548 88.49% 42 / 235 this PR (both runs combined) 17500 / 19548 89.52% 165 / 235 These are local measurements with Python 3.13 on Linux. For the JIT step, I added
--dist loadfileto keep memory use within the 13 GB cap; this changes how tests are distributed across workers. Codecov'smainreport has slightly different totals (17289 / 19536), but the same overall coverage (88.49%) andtiles.pycount (42 / 235).With the change, 201 more lines are counted and none are lost: 123 in
tiles.py, 11 each inglyph.pyandcomposite.py, and 56 intest_tiles.pyitself. The other platforms will run on this PR.Related to #1192 (restores combined JIT and no-JIT coverage reporting; the issue's broader request for additional test coverage is not fully addressed by this PR).
AI Disclosure
Tool & Model: Claude Code + Opus 5.5 (high). Usage: Traced why Codecov shows
tiles.pyas almost untested, compared Codecov's numbers with local runs of both CI steps.- I have tested all AI-generated content in my PR.
- I take responsibility for all AI-generated content in my PR.
Checklist
- Tests added and are passing (no new tests; workflow-only change)
hoxbrocommented on 16 Oct 2026Member Thank you.
hoxbromerged this pull request on 16 Oct 2026
Copied from GitHub when this site was built; comments by bots are left out.