Skip to content

test: CLI interaction contract coverage gaps (23 of 37 stderr sites untested) #615

@rocketman-code

Description

@rocketman-code

Problem

The CLI interaction contract has 37 mechanically-enumerated stderr output sites (extracted via grep from source). 14 are tested. 23 have no test coverage.

Discovered during the user-contract spec reorganization (see #611). The error display contract had the same pattern (1 test, 7 bugs) and was closed by the proof matrix in v0.14.2.

Untested Sites by Priority

High risk (5 sites)

  • main.rs:285 -- "error: {e}" generic dispatch format
  • main.rs:583 -- overhead warning (>200 functions threshold)
  • main.rs:1283 -- "--threads requires per-thread data" fallback
  • main.rs:1286 -- "showing aggregated view instead"
  • resolve.rs:339 -- "warning: parse errors in path"

Medium risk (5 sites)

  • main.rs:1153 -- "--- profiling report ---" separator
  • main.rs:1385 -- "comparing: A vs B" diff labels
  • main.rs:1446 -- "no tags saved" (save path)
  • main.rs:1466 -- "no tags saved" (list path)
  • main.rs:1481 -- "tagged 'name'" confirmation

Low risk (7 sites)

  • main.rs:645 -- "pre-building piano-runtime..."
  • main.rs:953 -- duration minimum resolution warning
  • main.rs:1068 -- SIGTERM timeout warning (run path)
  • main.rs:1117 -- SIGTERM timeout warning (profile path)
  • report/diff.rs:158 -- format mismatch warning
  • Injected runtime warnings (2 sites in rewrite/mod.rs)

Wrapper (6 sites, 0% coverage)

  • wrapper.rs:100,118,125,157,161,277 -- all wrapper stderr messages

Approach

Leaves to roots. Start with the simplest isolated sites (tag CLI, diff labels, report separator). Work up to complex setup (wrapper, SIGTERM timeout, overhead threshold).

Context

Part of the 4-contract spec reorganization (#611). The CLI interaction contract spec is at spec_cli_interaction.md in project memory.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions