ci(cmux-next): the REF capture names a Swift driver by its module, not its target

Merged
TE
10d ago
+38-19

DEV daily run 40446615480 at 9198239e is the first capture after #25866, and it came out incomplete with "missing": ["cmux-next"] (1 of 134 modules). The frontend lines for that module are in the log. The SwiftDriver task line names the target (SwiftDriver cmux-next normal arm64 ... (in target 'cmux-next')), but frontend lines are matched by -module-name, and the app target compiles as -module-name cmux. Every package target has the same target and module name, so only the app goes unmatched, and every DEV capture would come out incomplete. The Linux whole-app proof needs a complete one.

  • drivers_and_lines takes a driver's module from the -module-name of the builtin-SwiftDriver line under its task, and falls back to the target name.
  • The log file is now closed after reading; it caused a ResourceWarning in the tests.

Tests

python3 tests/test_cmux_next_hybrid_ref_capture.py. The first commit changes the fixture's app driver to the real shape (target cmux-next, module cmux). That is red at de3d1aa7384, with ['cmux-next'] missing, as in the real run. The second commit turns it green: three runs in a row, also under -W error::ResourceWarning.

Observed / Not run

Ran: the test file (red, then green) and prepush-gate. I also ran the old and new matcher on the 40446615480 compile job's log. The old one finds cmux-next missing and the new one finds the app module cmux, with no target name in the list. The Actions job log also reports two package modules as missing under both matchers, because a byte-order mark keeps its timestamp prefix on their lines. The capture reads the raw xcodebuild log, which has no prefix, and the real run listed only cmux-next.
Not run: a capture with this change. The next dispatched DEV daily produces it.

Changelog

none

šŸ¤– Generated with Claude Code

Agent session: agent session


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.