Cockatrice/.ci
Lukas Brübach 2c249438d5 [CI] Publish a gcovr line-coverage report from the test run
Sanitizers tell us what a run did wrong; they say nothing about what it never
reached. This adds the other half: an instrumented build whose report says which
of our own lines no test executes.

Add an ENABLE_COVERAGE option that compiles with --coverage -O0 -g, mirroring the
ENABLE_SANITIZERS opt-in including the per-source carve-out that keeps vendored
trees out of the denominator. -O0 is deliberate: at higher optimisation levels GCC
merges and relocates lines, so the report would describe code that no longer exists
in that form. Only GCC is supported, since Clang's intermediate format needs
llvm-cov; asking for coverage under Clang is a hard error rather than a build that
silently produces unreadable .gcno files.

Keep the filters in a committed gcovr.cfg rather than in the invocation. The tests
themselves are excluded because they are compiled with the same instrumentation
and are only ever executed by the run doing the measuring, so leaving them in would
report a healthier project than we have. The process entry points and the client's
window chrome go too: each needs a display, an interactive terminal or a live
database before it does anything a headless test could observe, so they would
otherwise sit at 0% forever and bury real movement.

Give coverage its own matrix leg rather than a second flag on the sanitizer leg.
The two answer different questions, and combining them slows both down without
telling us more. The new variant key gives the leg its own Docker image and ccache
entry so the two legs cannot race on the same tag.

The leg publishes an HTML report with per-file pages, LCOV, Cobertura XML and a
JSON summary. gcovr is a report-time dependency rather than a build dependency, so
a missing one warns and skips instead of failing an otherwise green build.
2026-10-10 19:51:50 +02:00
..
Arch [Security] Use a CSPRNG for salts, tokens, and RNG seeding (#7192) 2026-09-04 13:49:18 +02:00
Debian12 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Debian13 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Fedora43 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Fedora44 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Servatrice_Debian12 [Security] Use a CSPRNG for salts, tokens, and RNG seeding (#7192) 2026-09-04 13:49:18 +02:00
Ubuntu24.04 Alphabetical ordering of Qt modules/packages (#7334) 2026-09-20 19:24:55 +02:00
Ubuntu26.04 [CI] Publish a gcovr line-coverage report from the test run 2026-10-10 19:51:50 +02:00
compile.sh [CI] Publish a gcovr line-coverage report from the test run 2026-10-10 19:51:50 +02:00
docker.sh [CI] Publish a gcovr line-coverage report from the test run 2026-10-10 19:51:50 +02:00
lint_cpp.sh CI: Print colored diff for lint check (#6975) 2026-06-08 19:19:28 +02:00
macos.entitlements Sign macOS Releases (#5396) 2025-01-09 22:32:53 -05:00
name_build.sh CI: Cleanup (#6677) 2026-03-09 21:32:47 +01:00
prep_release.sh escape ampersand (#6900) 2026-05-21 22:02:09 +02:00
release_template.md Update & add arch/platform labels in release template (#7149) 2026-08-23 12:56:00 +02:00
resolve_latest_aqt_qt_version.sh CI: Resolve to latest Qt version in range for Windows as well (#6700) 2026-03-15 17:47:48 +01:00
thin_macos_qtlib.sh ci: make fat qt libs thin (#6281) 2026-01-04 01:00:05 +01:00
update_translation_source_strings.sh make translation update script more specific in line selection (#4993) 2024-01-25 23:28:23 +01:00
update_translation_source_strings_template.md fix transifex link (#5969) 2025-06-09 02:05:24 +02:00