Skip to content

✨ Coverage: Bullseye beside gcov - #44

Merged
mkarlesky merged 5 commits into
next_versionfrom
feature/bullseye-coverage
Nov 4, 2026
Merged

mkarlesky merged 5 commits into
next_versionfrom
feature/bullseye-coverage

Conversation

@mkarlesky

Copy link
Copy Markdown
Member

Run with Coverage now works with Ceedling's Bullseye plugin as well as its gcov plugin. A project that enables either plugin gets a Coverage profile for it. A project that enables both gets one profile per plugin, labeled Coverage (gcov) and Coverage (Bullseye).

What changes for users

  • Bullseye coverage needs Ceedling 1.2.0 or later, a licensed Bullseye install, and :bullseye: ↳ :xml_report: :cobertura. The extension reads <build>/artifacts/bullseye/coverage.xml.
  • Each run measures only itself. With coverageResetsCounters on, the extension runs covclear -q --file test.cov before a request's first Bullseye build, once per coverage file. That zeroes Bullseye's measurements and keeps its instrumentation, so the delta build doesn't recompile. If covclear fails, the run goes on and its coverage includes earlier runs'. A notice says so.
  • coverageCommandArgs now defaults to ["${PLUGIN}:${TEST_ID}"]. The new ${PLUGIN} token names the run's plugin. A deferred report runs as report:<plugin>. A configured task naming the other plugin draws a warning.
  • Docs. The manual's Code Coverage page is now a common base, with gcov and Bullseye subpages. The how-to guide gains a Bullseye tab. Architecture, the Changelog, the Release Notes, Known Issues, and the development docs are updated to match.

Commits

  1. ♻️ A behavior-preserving refactor. src/coveragePlugins.ts holds one table of coverage plugins, with gcov its only entry. Each plugin's tasks, reports, counter reset, and advice text come from that table.
  2. ✨ Bullseye support. It adds the table entry, the covclear reset, an :environment read from dumpconfig for covclear, fixtures captured from Bullseye 9.27.1, a capture script, and a hand-run validation suite.
  3. 📝 The docs, as reviewed.

Testing

  • just test: unit and integration tests pass, including an integration test with both plugins that runs against a fake Ceedling and its covclear stand-in.
  • just lint: clean. just docs-build: passes in strict mode.
  • just coverage: every new file is 100% covered.
  • just validate-bullseye, run by hand against a licensed Bullseye: no violations on Ceedling 1.2.0, 1.2.1, and 1.2.2. It is skipped on 1.1.10, which refuses the plugin.
  • The gcov validation suites pass on 1.2.2, and the coverage and gated suites on 1.2.0.

Bullseye's license can't live in an image or the repo, so the Bullseye suite stays out of CI and validate-matrix. The committed fixtures have license numbers and the key redacted.

Upstream

Ceedling#1385: with :report_task: TRUE, the first report:bullseye after a clean includes the test files and the frameworks. This is listed in Known Issues.

🤖 Generated with Claude Code

mkarlesky and others added 5 commits November 3, 2026 15:47
…verage profile per plugin; coverageCommandArgs names the run's plugin as ${PLUGIN}

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… file reset with covclear; a Coverage profile per plugin; fixtures, a capture script, and a hand-run validation suite against a licensed Bullseye

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…h gcov and Bullseye subpages; the how-to gains a Bullseye tab; Architecture, Changelog, Release Notes, Known Issues, and development docs cover Bullseye

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… resolved, as Bullseye's does on macOS beneath /var or /tmp, covers the files at the project's own paths

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nk-resolved directory return by way of the project's own path

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mkarlesky
mkarlesky merged commit 8d0b9d6 into next_version Nov 4, 2026
0 of 4 checks passed
@mkarlesky
mkarlesky deleted the feature/bullseye-coverage branch November 4, 2026 17:36
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