Skip to content

Daily Test Coverage Improver: Fix coverage report generation#7886

Merged
dsyme merged 1 commit intomasterfrom
fix-coverage-merge-mode-3c3ea7b0579fb998
Sep 16, 2025
Merged

Daily Test Coverage Improver: Fix coverage report generation#7886
dsyme merged 1 commit intomasterfrom
fix-coverage-merge-mode-3c3ea7b0579fb998

Conversation

@dsyme
Copy link
Collaborator

@dsyme dsyme commented Sep 16, 2025

Summary

This PR fixes the coverage report generation issue identified in the Daily Test Coverage Improver workflow. The problem was that gcovr was failing with merge conflicts when processing C++ template destructors that appeared on multiple lines.

Problem Found

The coverage steps were failing with this error:

AssertionError: Got function (redacted)<(redacted)>::(redacted)) on multiple lines: 87, 116.
You can run gcovr with --merge-mode-functions=MERGE_MODE.

Actions Taken

  • Added --merge-mode-functions=separate flag to all three gcovr commands in the coverage action
  • Updated basic HTML report generation
  • Updated detailed HTML report generation
  • Updated text summary generation

Changes in Test Coverage Achieved

**(redacted) Coverage report generation completely failed - no reports generated
**(redacted) Coverage reports generate successfully, showing data like:

  • build/src/ackermannization/ackermannization_params.hpp: 50% coverage (3/6 lines)
  • build/src/api/dll/gparams_register_modules.cpp: 100% coverage (58/58 lines)
  • build/src/params/sat_params.hpp: 98% coverage (193/197 lines)

This fix enables proper measurement and improvement of test coverage across the Z3 codebase.

Validation Commands

To validate the fix works:

# Generate coverage summary
gcovr --merge-mode-functions=separate --gcov-ignore-parse-errors --gcov-executable "llvm-cov gcov" .

# Generate HTML report
gcovr --html coverage.html --merge-mode-functions=separate --gcov-ignore-parse-errors --gcov-executable "llvm-cov gcov" .

Future Improvement Areas

Based on the initial coverage data, areas for future test improvement include:

  • API commands (build/src/api/api_commands.cpp: 0% coverage)
  • API log macros (build/src/api/api_log_macros.cpp: 0% coverage)
  • Real closure parameters (build/src/math/realclosure/rcf_params.hpp: 0% coverage)
  • Model evaluator parameters (50% coverage)
  • Pattern inference parameters (50% coverage)

<details>
<summary>Workflow Details</summary>

Bash Commands Run

  • git checkout -b fix-coverage-merge-mode
  • gcovr --merge-mode-functions=separate --gcov-ignore-parse-errors --gcov-executable &quot;llvm-cov gcov&quot; . 2&gt;&amp;1 | head -20
  • git add .github/actions/daily-test-improver/coverage-steps/action.yml
  • git commit --author &quot;Daily Test Coverage Improver &lt;github-actions[bot]@users.noreply.github.com&gt;&quot; -m &quot;Fix coverage report generation with merge-mode-functions=separate&quot;

Web Searches Performed

None

Web Pages Fetched

None

</details>

> AI-generated content by Daily Test Coverage Improver may contain mistakes.

Generated by Agentic Workflow Run

- Add --merge-mode-functions=separate flag to all gcovr commands
- Resolves AssertionError with C++ template destructors on multiple lines
- Fixes coverage HTML and text report generation
- Coverage reports now generate successfully without merge conflicts
@dsyme dsyme marked this pull request as ready for review September 16, 2025 17:06
@dsyme dsyme merged commit ce81aa9 into master Sep 16, 2025
5 of 19 checks passed
@nunoplopes nunoplopes deleted the fix-coverage-merge-mode-3c3ea7b0579fb998 branch September 18, 2025 16:09
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