Skip to content

ci: fix dead PR trigger, install crate before functional tests, ASan/UBSan job, -Wall -Wextra (+-Werror on Linux), parallel kyua, lite off deprecated run: (1.1.28) - #231

Open
click0 wants to merge 1 commit into
mainfrom
claude/analyze-test-coverage-nCOJW
Open

click0 wants to merge 1 commit into
mainfrom
claude/analyze-test-coverage-nCOJW

Conversation

@click0

@click0 click0 commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Summary

Step 3 of the agreed plan — CI & build hygiene. This PR exercises itself: the new sanitizer job, -Werror, parallel kyua, and the migrated lite workflow all run on this very PR.

Bugs in CI (found by the test/CI review)

  • Linux unit tests never ran on pull requests — linux-unit.yml. pull_request: branches: [master] while the default branch is main → the fastest gate ran on push only; fork PRs got nothing. Now [main]. (This PR is the first one where the Linux job shows up as a PR check.)
  • The full FreeBSD workflow silently skipped every functional test — freebsd-build.yml. tests/functional/crate_info_test does atf_skip "crate binary not installed" unless /usr/local/bin/crate exists, and nothing ever installed it. sudo gmake install now runs before kyua.

New coverage

  • ASan + UBSan job on Linux (sanitizers). Pure modules are platform-independent, so -fsanitize=address,undefined -fno-sanitize-recover=all is cheap and catches exactly the class the 1.1.22 ctx.cpp erase(end()) UB belonged to. Built through the Makefile's existing COVERAGE_CXXFLAGS/COVERAGE_LDFLAGS; the ~1400 ATF cases are run directly (prog -l / prog <case>) because kyua scrubs the test environment and ASAN_OPTIONS/UBSAN_OPTIONS would never reach it.
  • Warnings on the test build, -Werror on Linux — Makefile. The two test rules had no warning flags at all. New TEST_CXXWARN ?= -Wall -Wextra -Wno-missing-field-initializers; Linux CI adds -Werror (gcc vs FreeBSD clang differ enough that a global -Werror would be brittle). The four real warnings that surfaced are fixed: unused lambda param in util.h, dead skipWs (privops_wire_pure.cpp) and isZero (ip6_alloc_pure.cpp), // comments ending in \ (-Wcomment) in retune_pure.h and three tests. Verified locally: all 69 link sources + stub + 79 test files compile clean under -Werror.
  • Parallel kyua. New KYUA_FLAGS Makefile variable; all three workflows run kyua -v parallelism=<ncpu> instead of a fully serial ~1400-case run.

Workflow migration

  • freebsd-build-lite.yml moved off the action's deprecated run: input to shell: cpa.sh {0} steps (upstream: "The run parameter is deprecated. Use the custom shell on subsequent steps"). Each phase is a real step with its own timing; the redundant "compile changed components (smoke)" step is gone; the stale "~1200 compiles / +1 min per test" comment (fixed in the Makefile since 0.7.12) is corrected. The full workflow keeps run: until the migrated lite has proven the syntax on a few pushes — it is manual-only, so a breakage there would go unnoticed.

Version

Bumps to 1.1.28; CHANGELOG.md + docs/trust-model.{md,uk.md} updated.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X6t6tzVypHye5bDGLxzmZK


Generated by Claude Code

…UBSan job, -Wall -Wextra (+-Werror on Linux), parallel kyua, lite off deprecated `run:` (1.1.28)

- linux-unit.yml: `pull_request: branches: [master]` never fired (default
  branch is main) — the fastest gate ran on push only. Now [main].
- freebsd-build.yml: `sudo gmake install` before kyua — the functional
  test atf_skips without /usr/local/bin/crate, so even a healthy manual
  full run silently skipped every functional test.
- linux-unit.yml: new `sanitizers` job — -fsanitize=address,undefined
  via the Makefile's COVERAGE_* hooks; ATF cases run directly because
  kyua scrubs the env (ASAN_OPTIONS/UBSAN_OPTIONS would not reach them).
- Makefile: TEST_CXXWARN ?= -Wall -Wextra -Wno-missing-field-initializers
  on both test rules (they had NO warning flags); Linux CI adds -Werror.
  Fixed the real warnings that surfaced: unused lambda param in util.h,
  dead skipWs (privops_wire_pure) and isZero (ip6_alloc_pure), and
  `//` comments ending in `\` (-Wcomment) in retune_pure.h and three
  tests. Verified locally: all 69 link srcs + stub + 79 tests clean.
- Makefile KYUA_FLAGS; CI runs `kyua -v parallelism=<ncpu>` (1400+
  cases were serial).
- freebsd-build-lite.yml migrated from the action's deprecated `run:`
  input to `shell: cpa.sh {0}` steps; redundant smoke-compile step
  dropped; stale "~1200 compiles" comment corrected. Full keeps `run:`
  until lite has proven the syntax.

Bumps to 1.1.28; CHANGELOG + trust-model.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X6t6tzVypHye5bDGLxzmZK
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