Repository navigation
Migrate coverage tooling to score_coverage and add coverage report generation for QNX - #1240
Draft
LittleHuba wants to merge 10 commits into
Draft
LittleHuba wants to merge 10 commits into
LittleHuba wants to merge 10 commits into
Conversation
LittleHuba
force-pushed
the
combined_coverage
branch
2 times, most recently
from
October 2, 2026 09:41
3cc732b to
d3068bf
Compare
The coverage pipeline that lived under quality/coverage (merger, reporter, reporter_wrapper, coverage_scope aspect, justify.py, effective_coverage.py, lcov_to_html.py, generate_coverage_html.sh) is the origin of the qualified S-CORE coverage tool, score_coverage (https://eclipse-score.github.io/coverage_tool/main/). This switches the repository to that module and deletes the copy: - quality/coverage/BUILD keeps only what is repository-specific: the coverage scope (unchanged dependable elements) and two report generators, LLVM for Linux and, new, gcov for QNX on target. - coverage.bazelrc: the default coverage command is the LLVM backend as before; --config=qnx now keeps Bazel's per-test gcov collector and points the final step at score_coverage's gcov reporter instead of Bazel's stock LCOV report, so the QNX report has the same layout, scope, 0 % baselines, justifications and gate as the Linux one. - workflows: the Linux coverage report is produced by @score_coverage//:generate_coverage_html (same archive name and layout, cpp_coverage_linux/); the QNX workflow gains a coverage step after the tests and uploads coverage_report_qnx. - MODULE.bazel: score_coverage dev dependency; rules_rust 0.68.2-score as required by it; the death-test coverage feature now comes from the module. gcovr leaves requirements.in (pyyaml stays, used elsewhere). - docs and the visibility-guard golden updated. Validated locally on //score/message_passing/... (Linux, LLVM): the scope allowlist is identical (613 files) and all 347 LCOV records are identical in covered/uncovered status to the previous pipeline (the only differences are execution counts of logging/timing code). The QNX run is validated in CI. VALIDATION ONLY: MODULE.bazel carries a git_override to the coverage_tool branch of eclipse-score/coverage_tool#10 for the gcov backend; replace it by the 0.3.0 registry release once published. Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com>
The gcov backend for QNX on-target coverage is released. Pin the release commit until the registry entry (bazel_registry PR #519) is merged, then drop the override. Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com>
The release is in the S-CORE Bazel registry; drop the temporary git_override that pinned the release commit. Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com>
Bazel derives the default --instrumentation_filter from the packages of the test targets and strips only a trailing /tests to reach the code under test. Libraries tested from a test/ subpackage fall outside the guess and the gcov collector drops their counters (0 % for score/os in baselibs' QNX report). Instrument everything under //score. Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com>
0.3.1 requires the explicit --instrumentation_filter this branch already sets, and warns when a report shows the pattern of a library tested from a test/ subpackage without data. Signed-off-by: Dan Calavrezo <195309321+dcalavrezo-qorix@users.noreply.github.com>
Layers the ulhu_coverage_fix workflow structure (determine-qnx gating job, parallel coverage-linux/coverage-qnx jobs in _coverage_report.yml, nightly QNX artifact publishing, doc links) on top of PR #1171's migration to the score_coverage Bazel module, replacing the in-repo coverage pipeline. - _coverage_report.yml: coverage-qnx now runs as its own job (gated on determine-qnx.outputs.available), invoking @score_coverage//:generate_coverage_html --platform qnx instead of the deleted local quality/coverage:generate_coverage_html script. - build_and_test_qnx.yml: reverted PR #1171's inline coverage steps now that QNX coverage lives in _coverage_report.yml. - nightly_quality.yml, generate_quality_links.bzl, docs/sphinx/quality_reports.rst, extract_coverage_artifact.sh, cache-strategy.md: carried over unchanged from ulhu_coverage_fix, updated to reference @score_coverage//:generate_coverage_html. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Local verification of the combined QNX coverage pipeline surfaced two bugs, both introduced by score_coverage's QNX support and inherited into this branch's combined workflow: 1. quality/coverage/coverage.bazelrc: 'coverage:qnx_x86_64 --test_lang_filters=cc' excluded every QNX unit test from 'bazel coverage --config=qnx'. QNX tests are wrapped by cc_unit_test/score_qnx_unit_tests as a Starlark _forwarding_test rule (dispatching to an sh_test that runs the binary under QEMU), not a native cc_test, so --test_lang_filters (which matches on the rule class' language prefix) silently matched zero targets regardless of the requested scope. Removed the line; --instrumentation_filter above it already restricts what gets instrumented. 2. _coverage_report.yml (coverage-qnx job): the 'Generate coverage report (QNX)' step ran 'bazel run --config=ci --config=qnx @score_coverage//:generate_coverage_html'. --config=qnx sets the *target* platform to QNX for the whole invocation, but this step only reads already-produced coverage data with a host-side Python tool; no Python toolchain is registered for the QNX platform, so the build failed with 'No matching toolchains found for @@bazel_tools//tools/python:toolchain_type'. Dropped --config=qnx from this step (kept --config=ci) and removed the now-unused QNX secrets from its env. Verified end-to-end locally with only the fixed coverage.bazelrc/workflow commands (no CLI overrides): 'bazel coverage --config=ci --config=qnx //score/message_passing/...' now runs all 7 runnable C++ QNX tests (5 skipped targets are non-cc dependability/requirements tests, expected), and 'bazel run --config=ci @score_coverage//:generate_coverage_html --platform qnx' produces a valid HTML report, justification report, and archive matching extract_coverage_artifact.sh's expected layout (100% line / 82.75% branch coverage for the message_passing scope). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move it to the dev dependency section.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
LittleHuba
force-pushed
the
combined_coverage
branch
from
October 5, 2026 08:23
f96fa7d to
723994f
Compare
10 tasks
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pulls in the coverage tooling from score_coverage.
The coverage tooling was checked for similarity. There are no more features/fixes/... in our solution that were not copied over to score_coverage.
This migration is a 1:1 match on feature level.
Additionally introduces missing coverage report generation for QNX.