maaz.code logo
Simple view

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

+1−11 line added, 1 line removed1 file changed1 comment

Conversation

  1. maaz7409opened this pull request on 15 Oct 2026description.mdAuthor

    Description

    Codecov shows datashader/tiles.py at 17.87% on main (Codecov), and even datashader/tests/test_tiles.py has only 27 of its 83 lines marked as run, although test_tiles.py runs in every unit job.

    The unit job runs the suite twice, test-unit $COV and then test-unit-nojit $COV, and uploads once. pytest-cov erases the previous coverage data at the start of a run unless --cov-append is 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-nojit deselects test_tiles, which is why the tiles code looks untested.

    This worked before the move to pixi: the tox commands had --cov-append on both runs (dropped in #1354), and it's also the workflow described in #1192. Panel sets --cov-append in its COV variable for the same reason, so I did the same here.

    Reproduce: run the two CI steps in order and look at the coverage.xml that would be uploaded, then repeat with --cov-append added to both:

    pixi run test-unit --cov=./datashader --cov-report=xml
    pixi run test-unit-nojit --cov=./datashader --cov-report=xml
    
    Local coverage.xml after both stepslines coveredline ratetiles.py
    main (only the no-JIT data is left)17299 / 1954888.49%42 / 235
    this PR (both runs combined)17500 / 1954889.52%165 / 235

    These are local measurements with Python 3.13 on Linux. For the JIT step, I added --dist loadfile to keep memory use within the 13 GB cap; this changes how tests are distributed across workers. Codecov's main report has slightly different totals (17289 / 19536), but the same overall coverage (88.49%) and tiles.py count (42 / 235).

    With the change, 201 more lines are counted and none are lost: 123 in tiles.py, 11 each in glyph.py and composite.py, and 56 in test_tiles.py itself. 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.py as 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)
  2. hoxbrocommented on 16 Oct 2026Member

    Thank you.

  3. hoxbromerged this pull request on 16 Oct 2026

Copied from GitHub when this site was built; comments by bots are left out.