Skip to content

ci: prove the whole supported PHP range, 8.2 to 8.5 - #17

Merged
HafizMMoaz merged 1 commit into
mainfrom
ci/php-85
Nov 1, 2026
Merged

HafizMMoaz merged 1 commit into
mainfrom
ci/php-85

Conversation

@HafizMMoaz

@HafizMMoaz HafizMMoaz commented Nov 1, 2026 •

Copy link
Copy Markdown
Member

composer.json claims php: >=8.2 with no upper bound, but CI ran 8.4 only. Three of the four versions in the supported range, including the newest, were never executed. >=8.2 was a claim rather than a tested fact, and nothing would have caught syntax or behaviour needing a later version.

Change

A compat job over 8.2, 8.3 and 8.5, which together with the 8.4 gate covers the declared range.

Two deliberate choices

The test job is untouched, name included. The branch ruleset requires a status check named exactly test. Turning it into a matrix would publish test (8.2), test (8.3) and so on, and the required test context would never appear again, blocking every future merge on this repo. Adding a separate job avoids that entirely.

The compat job is derived from the test job, not written fresh, so it carries the same services, extensions, environment, coverage and steps and cannot drift from it.

I first had it run with coverage: none, reasoning that collecting coverage once on the gate was enough. That failed every leg: phpunit.xml.dist configures coverage reports, so with no driver PHPUnit emits a test-runner warning and exits 1 even though all tests pass. Worth recording, because it looks like a free speed-up and is not.

What this may surface

If a leg fails, that is the point of the change: it means the package does not actually support a version it claims to. I would rather that show up here than in someone's install.

composer.json claims php >=8.2 with no upper bound, but CI ran 8.4 only.
So three of the four versions in the supported range, including the
newest, were never executed: ">=8.2" was a claim rather than a tested
fact, and nothing would have caught syntax or behaviour that needs a
later version.

Added a compat job over 8.2, 8.3 and 8.5, which together with the 8.4
gate covers the range.

The test job is left exactly as it was, name included, because the
branch ruleset requires a status check named exactly "test". Turning it
into a matrix would publish "test (8.2)" and the required context would
never appear again, blocking every future merge.

The compat job is derived from the test job rather than written fresh,
so it keeps the same services, extensions, environment, coverage and
steps and cannot drift from it.
@HafizMMoaz
HafizMMoaz merged commit 3c92036 into main Nov 1, 2026
5 checks passed
@HafizMMoaz
HafizMMoaz deleted the ci/php-85 branch November 1, 2026 21:54
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