test(coverage): declare every public command's coverage judgments once - #2418
Conversation
…judgments once One row per public command in test/integration/command-coverage/declarations.ts carries the android-emulator, ios-simulator, macOS, tvOS, web and Linux classifications with the same fields the six per-platform manifests use today. Each platform's Record<PublicCommand, ...> is projected from that table at load time by a small per-platform view module, so no projected record is committed. No judgment is derived from another platform's: all six stay authored per command.
The six coverage smoke tests, live harnesses and coverage reports now import the platform view module that projects the declaration table. Both the depgraph blast-radius query and the device-lane test follow the iOS and macOS paths.
Their rows now live once, per command, in the declaration table; each platform's record is projected from it at load time.
…ship to command-coverage/ test/integration/command-coverage/declarations.ts now carries the per-command coverage judgments that used to live directly under test/integration/macos-e2e/. Its nested path wasn't matched by macosCoverageOwnership (top-level or macos-e2e/ only) or isNodeIntegrationPath (no nested segments), so it fell through to vitest-related, which can't actually run its node --test consumers. Extend both rules to also match test/integration/command-coverage/.
Size Report
Startup median (7 runs, lower is better):
|
|
The projection and affected-test routing look sound at 1b80f01. Please add the migration evidence required by #2411: compare all six projected records with the old manifests, show one historical command addition reduced from six coverage-input files to one, and demonstrate that an omitted declaration fails the exhaustiveness check. The red iOS smoke check appears unrelated: xcrun timed out while querying the Simulator SDK version during installed-bridge preparation. |
|
The iOS smoke lane on this PR is red on the same step in four consecutive runs: This PR does not touch that path; the same step failed on three unrelated branches in the last three days. Filed as #2422 (cold toolchain probes budgeted below the first-exec signature stall) with a fix PR in progress. Plan: land #2422, rebase, rerun this lane once. |
|
Migration evidence requested above, measured on this branch at (1) Projected record vs committed manifest at BASEMethod: the six
Every entry is deep-equal, field for field (assertion, evidence reference / owner / scenario, Honest caveat on iteration order: the projected records iterate in the single declaration-table (2) Planted omissionRemoved the whole
(3) Replay of a historical command addition: 6 → 1 coverage input filesCommand replayed: Measured by deleting
Coverage input files for one public-command addition: 6 → 1. The six judgments, their evidence |
|
The added parity, omission and historical replay evidence addresses the remaining review gap at 1b80f01. Ready for human review. The iOS smoke failure is likely unrelated: it times out in the unchanged SDK probe tracked by #2422; whichever of this PR and #2420 lands second must preserve the new hover evidence references. |
|
Declares every public command's six platform coverage judgments once in
test/integration/command-coverage/declarations.ts, projected per platform atload time, and deletes the six now-redundant per-platform manifests.
Fixes a review finding:
test/integration/command-coverage/moved the macOScoverage judgments out from under
test/integration/macos-e2e/, butcheck-affected'smacosCoverageOwnershipandisNodeIntegrationPathonlymatched the old top-level/
macos-e2e/paths. A declarations.ts edit fellthrough to
vitest-related, which can't run its actual node --test consumers(the six coverage smoke tests). Both rules now also match
test/integration/command-coverage/.Closes #2411.