Skip to content

ci: re-enable Coveralls coverage upload (Tier 1)#2125

Open
jcelerier wants to merge 1 commit into
masterfrom
ci/coverage-coveralls
Open

ci: re-enable Coveralls coverage upload (Tier 1)#2125
jcelerier wants to merge 1 commit into
masterfrom
ci/coverage-coveralls

Conversation

@jcelerier

@jcelerier jcelerier commented Jul 17, 2026

Copy link
Copy Markdown
Member

Restores coverage reporting to coveralls.io — a Travis-only gcov/lcov job (the coveralls-lcov gem) orphaned when the linux-gcov matrix leg was dropped and deleted in 2021 ("Adios Travis"), never ported to Azure or GitHub Actions.

Based on tests/infrastructure (#2117), not master, deliberately: a coverage job is only meaningful on top of the suite it measures. master has 1 ctest test and the old INTEGRATION_TESTING flag is deprecated; the SCORE_TESTING suite (#2117 = 9 tests, growing as the stack lands) is the real CI-runnable surface.

What was broken

SCORE_COVERAGE was a silent no-op that would error at configure — it include()d a cmake/modules/CodeCoverage.cmake that no longer exists (Bilke module, left under the old CMake/ path), so flags were empty and setup_target_for_coverage() was undefined.

This PR

  • cmake/ScoreConfiguration.cmake — inject the gcov flags directly (add_compile_options/add_link_options).
  • tests/Integration/CMakeLists.txt — drop the two undefined setup_target_for_coverage() calls.
  • ci/coverage.build.sh — Debug + SCORE_TESTING + SCORE_COVERAGE build, run ctest under xvfb (llvmpipe GL, dummy audio) so unit/integration/regression/GUI tests run, then gcovr --coveralls-pretty (clang via llvm-cov gcov) → coverage.json.
  • .github/workflows/coverage.ymlubuntu:noble container, reuses ci/ubuntu.noble.deps.sh + xvfb, uploads via coverallsapp/github-action@v2.

The gcov → Coveralls-JSON mechanism was validated locally end-to-end (valid report with git metadata + per-file coverage).

Scope / caveat

The real suite runs on hardware rigs, so this CI job covers the offscreen model/logic tests only — gfx/interop/video stay ~0% here. That's the target of the rig-fed Tier 2 (Coveralls parallel builds) in the follow-up plan. The number grows as the SCORE_TESTING stack merges upward.

One-time prerequisites (repo admin)

  1. Enable the Coveralls GitHub App on ossia/score (token via github.token, no secret).
  2. Re-add the README badge once live (old coveralls slug was OSSIA/i-score).

🤖 Generated with Claude Code

@jcelerier
jcelerier force-pushed the ci/coverage-coveralls branch from 151bf06 to fa075d5 Compare July 17, 2026 15:00
@jcelerier
jcelerier changed the base branch from master to tests/infrastructure July 17, 2026 15:01
@jcelerier
jcelerier force-pushed the ci/coverage-coveralls branch from fa075d5 to d44ff88 Compare July 18, 2026 13:37
@jcelerier
jcelerier changed the base branch from tests/infrastructure to master July 18, 2026 13:37
@jcelerier
jcelerier force-pushed the ci/coverage-coveralls branch 2 times, most recently from 301433b to 7109926 Compare July 19, 2026 03:08
The coverage job sits on top of the SCORE_TESTING suite: the old
INTEGRATION_TESTING flag is deprecated and master previously had only a
single ctest test, so this is the first point where a coverage job
measures something real.

Coverage -> coveralls.io was a Travis-only gcov/lcov job (coveralls-lcov gem)
orphaned when the linux-gcov matrix leg was dropped and deleted in 2021
("Adios Travis"); never ported to Azure or GitHub Actions. This restores it.

- cmake/ScoreConfiguration.cmake: SCORE_COVERAGE was a silent no-op that would
  error at configure — it include()d a CodeCoverage.cmake module that no longer
  exists, so the flags were empty and setup_target_for_coverage() was undefined.
  Now inject the gcov flags directly (add_compile_options/add_link_options).
- tests/Integration/CMakeLists.txt: drop the two undefined
  setup_target_for_coverage() calls (gcovr replaces the Bilke report targets).
- ci/coverage.build.sh: Debug + SCORE_TESTING + SCORE_COVERAGE build, run the
  ctest suite under xvfb (llvmpipe GL, dummy audio) so the unit/integration/
  regression/gui tests run, then gcovr --coveralls-pretty (clang via
  llvm-cov gcov) -> coverage.json.
- .github/workflows/coverage.yml: ubuntu:noble container, reuses
  ci/ubuntu.noble.deps.sh + xvfb, uploads via coverallsapp/github-action@v2.

Scope: the full suite runs on hardware rigs (GPU/capture), so this CI job
covers the offscreen/model/logic tests only — gfx/interop/video stay ~0% here
and will be covered by rig-fed parallel builds later. Coverage grows as more
of the SCORE_TESTING suite lands.

Prerequisites (repo-admin, one-time): enable the Coveralls GitHub App on
ossia/score; re-add the README badge (old slug OSSIA/i-score).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014rZgzE8JjWvHDtaVUhxpLE
@jcelerier
jcelerier force-pushed the ci/coverage-coveralls branch from 7109926 to da6e6e2 Compare July 19, 2026 21:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant