Skip to content

docs(dev-env): a PHP coverage driver is a prerequisite, not an optional extra - #747

Merged
rubenvdlinde merged 3 commits into
mainfrom
docs/coverage-driver-prerequisite
Sep 14, 2026
Merged

rubenvdlinde merged 3 commits into
mainfrom
docs/coverage-driver-prerequisite

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Ruben chose "install pcov in the dev environment" for #746. This is the durable half of that: the prerequisite is now written down, with the reason.

Why it belongs under Prerequisites rather than under testing

phpunit.xml sets failOnRisky and beStrictAboutCoverageMetadata. Both are inert without a coverage driver. A test that executes a class its @covers block does not name is risky, and risky means exit 1 — in CI, where a driver is loaded. Locally, with no driver, the check cannot fire at all. composer check:strict passes. The suite prints:

Tests: 3651, Assertions: 20819, Skipped: 1, Risky: 6.
OK, but there were issues!

and exits 1, which reads like a pass to anyone looking at the summary line rather than the exit code.

What it cost on 2026-09-10

Every PHPUnit cell in two repos, red on development, within the same hour, for the same reason:

Neither author could have seen it before pushing. Adding a collaborator to an existing test is an ordinary edit that looks nothing like touching coverage metadata. pipelinq's test file already carried a docblock note explaining the trap, written by whoever hit it last time on FleetAppId — accurate, and it did not prevent the next occurrence, because the note lives in the file that already got fixed.

What this does not do

It does not install anything. The machine change needs a password I do not have, so the command is written for whoever runs it. If someone later adds the driver to a provisioning script, this section is where it should point.

Conduction Release Bot and others added 3 commits September 10, 2026 19:41
…al extra

phpunit.xml sets failOnRisky and beStrictAboutCoverageMetadata, and both are
inert without a coverage driver. A test that executes a class its @Covers block
does not name is risky, and risky is exit 1 in CI, where a driver is loaded.
Without one locally the check cannot fire at all: composer check:strict passes
and the suite prints 'OK, but there were issues!', which reads like a pass to
anyone reading the summary line rather than the exit code.

On 2026-09-10 that reddened every PHPUnit cell in dossiq and pipelinq within
the same hour, on development, for the same reason. Neither author could have
seen it before pushing. Adding a collaborator to an existing test is an
ordinary edit that looks nothing like touching coverage metadata.

Refs #746.
@rubenvdlinde
rubenvdlinde merged commit aa09caf into main Sep 14, 2026
42 of 43 checks passed
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.

1 participant