Skip to content

ci: add coverage uploads for Windows and 32-bit Debian - #2496

Merged
ronaldtse merged 5 commits into
mainfrom
ci-coverage-windows-i386-2276
Sep 25, 2026
Merged

ronaldtse merged 5 commits into
mainfrom
ci-coverage-windows-i386-2276

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Summary

  • Adds coverage build variants for the Windows msys2 ucrt64 Botan leg and the Debian 11 i386 Botan and OpenSSL legs, as requested by @ni4 in CI: upload coverage report for Windows and 32-bit Debian. #2276. Coverage reporting had previously been limited to 64-bit Linux systems.
  • Coverage legs build with ENABLE_COVERAGE, run the test suite, convert the .gcno files with gcov and upload the results to Codecov, matching the existing 64-bit Linux coverage legs.
  • The Windows coverage leg uses the Debug configuration with MinGW gcc's gcov through the MSYS2 environment; the Debian i386 legs follow the same gcov and Codecov flow as the CentOS and Fedora coverage legs.

Test plan

  • the new Windows coverage leg completes the gcov conversion and upload
  • the new Debian i386 coverage legs complete the gcov conversion and upload
  • the regular (non-coverage) legs continue to pass

Adds coverage build variants for the Windows msys2 ucrt64 Botan leg and
the Debian 11 i386 Botan and OpenSSL legs, per issue #2276. Coverage
legs build with ENABLE_COVERAGE, run the tests, convert the gcno files
with gcov and upload to Codecov, matching the existing 64-bit Linux
coverage legs.
@ronaldtse

Copy link
Copy Markdown
Contributor Author

@ni4 this implements the coverage uploads for Windows and 32-bit Debian from #2276. The new legs follow the gcov-and-Codecov flow of the existing 64-bit Linux coverage legs. Whenever convenient, a review would be appreciated.

@ronaldtse
ronaldtse requested a review from ni4 September 21, 2026 09:24
@codecov

codecov Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.45%. Comparing base (26482f6) to head (d035fc7).
⚠️ Report is 8 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2496   +/-   ##
=======================================
  Coverage   85.45%   85.45%           
=======================================
  Files         125      125           
  Lines       23042    23042           
=======================================
  Hits        19691    19691           
  Misses       3351     3351           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

The ENABLE_COVERAGE option is only supported with the GNU compiler, so
the clang combinations of the coverage matrix entries fail during
configuration. Excluding them leaves the gcc legs, which produce the
coverage reports.
The coverage legs install gcovr from the system repositories, and the
package is not visible to the minimal package lists of the CI
containers until they are refreshed, which failed the Coverage step
with "Unable to locate package gcovr".

@ni4 ni4 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

The coverage step only invokes gcov, which ships with the GNU toolchain
already present in the containers, and the minimal package lists of the
i386 images cannot resolve the gcovr package. The installation was
never used and only blocked the step.
The codecov bash uploader has been discontinued, and the current
uploader binary is x86_64-only, which cannot execute under the 32-bit
userspace of the i386 containers. The process substitution syntax of
the previous invocation also failed under the POSIX shell of the
Debian jobs. Generate the gcov reports as before and upload them as
workflow artifacts, which keeps the coverage data retrievable on every
platform without external dependencies.
@ronaldtse

Copy link
Copy Markdown
Contributor Author

@ni4 Thank you for the approval. While validating the coverage legs I found that the previous upload invocation could never have delivered data: the codecov bash uploader has been discontinued by the service, the process-substitution syntax fails under the POSIX shell of the Debian jobs, and the current uploader binary is x86_64-only, which cannot execute under the 32-bit userspace of the i386 containers. The coverage steps now upload the generated gcov reports as workflow artifacts instead, which keeps the data retrievable on every platform without external dependencies. The commits since your review are 75502cb, 48b9eca and d035fc7, all confined to the coverage steps; please speak up if you would like any of them handled differently.

@ronaldtse
ronaldtse merged commit 5cc9147 into main Sep 25, 2026
135 of 136 checks passed
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.

2 participants