Skip to content

Run the AddressSanitizer test build in CI - #80

Merged
dmccoystephenson merged 1 commit into
masterfrom
feature/ci-asan-step
Nov 10, 2026
Merged

dmccoystephenson merged 1 commit into
masterfrom
feature/ci-asan-step

Conversation

@dmccoystephenson

Copy link
Copy Markdown
Member

Summary

  • An AddressSanitizer build and run step (bash run_tests_asan.sh) is added to the library job in .github/workflows/ci.yml, directly after bash run_tests.sh. A use-after-free, new/delete mismatch, or leak that does not trip an assert() now fails CI on pull requests and on pushes to master.
  • README.md's "Running Tests" section now states that CI runs both scripts.

run_tests_asan.sh has no set -e, but its last command is the sanitizer binary itself, so the script's exit status is the binary's, and a sanitizer report fails the step.

Closes #75

Test plan

  • The Library tests (make + CMake) job on this PR runs the new step and it passes, which shows that the current suite is clean under ASan with leak detection on
  • bash run_tests.sh and the CMake/ctest steps still pass

Merge hold

This PR edits .github/workflows/ci.yml, which is on the dev loop's do-not-auto-merge list, so it is left open for human review rather than merged automatically.

This PR description was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).

🤖 Generated with Claude Code


drafted by Claude on behalf of Daniel Stephenson

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dmccoystephenson

Copy link
Copy Markdown
Member Author

Self-review rubric (scored against CI run 42460881589 and the diff):

  • Scope: PASS — two files changed: the one-step addition to the library job in .github/workflows/ci.yml that CI does not run run_tests_asan.sh, so AddressSanitizer failures are not caught on PRs #75 asks for, and one README sentence describing it.
  • Tests-new: PASS (not applicable) — no new public methods were added.
  • Tests-fix: not applicable — CI coverage is extended. No behaviour fix is made.
  • Sibling structure: PASS — the step uses the same name: / run: bash <script> shape as the adjacent make and run the tests step.
  • Sibling renames: not applicable — nothing is renamed.
  • Docs: PASS — README's Running Tests section now says CI runs both scripts. The ## Classes table is unaffected.
  • Issue resolution: PASS — the suggested step from CI does not run run_tests_asan.sh, so AddressSanitizer failures are not caught on PRs #75 is present verbatim.
  • Test suite anchor: PASS — in the Library tests (make + CMake) job, the new AddressSanitizer build and run step printed 79 --- Success lines (Test 1 through Test 79, matching the 79 from make and run the tests), with zero ERROR: AddressSanitizer lines. CI and Browser build both completed with success.
  • Header/definition parity, include guards, test registration: not applicable — no source or header changes.

.github/workflows/ci.yml is on the dev loop's do-not-auto-merge list, so this PR is left open for a maintainer to approve and merge. The new step adds roughly 10 s to the job.

This review was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).


drafted by Claude on behalf of Daniel Stephenson

@dmccoystephenson
dmccoystephenson merged commit e721d4a into master Nov 10, 2026
3 checks passed
@dmccoystephenson
dmccoystephenson deleted the feature/ci-asan-step branch November 10, 2026 06:11
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.

CI does not run run_tests_asan.sh, so AddressSanitizer failures are not caught on PRs

1 participant