name: coverage # Manual dispatch ONLY — deliberately not on `pull_request`, and # deliberately not nightly. # # A coverage run needs its own instrumented build: it cannot reuse the # normal test artifacts, so it roughly doubles a test job. Coverage here # answers "do we have glaring holes", which is a question someone asks # occasionally — not a gate every PR pays for, and not a number worth # spending farm time on every night whether or not anyone reads it. # Manual dispatch costs nothing until someone wants the answer. # # Its own file rather than a job in ci.yml: that workflow already has a # `workflow_dispatch` trigger (so `hive-forge ci-rerun` can retrigger # without an empty commit), and a trigger there fires EVERY job in the # file. A coverage job added to ci.yml would run on every pull request. on: workflow_dispatch: jobs: coverage: name: cargo llvm-cov runs-on: [hive-ci] # Above the 30 min `nix flake check` allows, because instrumented # builds are slower than the ordinary ones and this starts from a # cache that the normal jobs never populate. timeout-minutes: 60 steps: - uses: actions/checkout@v3 - name: coverage # No threshold and no `--fail-under-lines`: a coverage gate # mostly teaches people to write assertion-free tests that # execute lines. The report is the deliverable; the number is # for a human to look at. # # `--workspace` because the interesting holes are in the crates # nobody runs directly, and the per-crate default would hide # exactly those behind a green summary for the one crate someone # happened to name. run: nix develop -c cargo llvm-cov --workspace --summary-only