Skip to content

Redesign integration test matrix without --prefer-lowest#152

Merged
JanTvrdik merged 1 commit intomasterfrom
matrix-without-prefer-lowest
Feb 24, 2026
Merged

Redesign integration test matrix without --prefer-lowest#152
JanTvrdik merged 1 commit intomasterfrom
matrix-without-prefer-lowest

Conversation

@JanTvrdik
Copy link
Copy Markdown
Member

Summary

  • Removes --prefer-lowest second test pass from run-integration.sh; instead, each matrix file explicitly tests the latest patch of one specific minor version using X.Y.* constraints
  • Eliminates PHP version splits — each matrix file covers the full PHP range supported by that package version, with appropriate MIN/MAX bounds
  • Removes unnecessary secondary COMPOSER_REQUIRE entries that were only needed for --prefer-lowest compatibility
  • Adds --rm to docker-compose run in run-in-docker.sh to prevent orphan containers
  • Fixes PHP 8.4 implicit nullable deprecation in MigrationsExtension.phpt

Matrix file changes

Group Old files New files Versions covered
dbal/doctrine 6 25 2.5–4.4
dbal/nextras 6 8 1.0–5.0
dbal/dibi 4 8 3.0–5.1
dbal/nette 3 4 2.4–3.2
nette-di 6 4 2.4–3.2
symfony-bundle 8 18 4.4, 5.0–5.4, 6.0–6.4, 7.0–7.4, 8.0

Notable findings during testing

  • Doctrine DBAL 2.12–2.13 and 3.0–3.2 fail on PHP 8.2+ due to ${var} string deprecation → capped at PHP 8.1
  • Symfony 4.0–4.3 blocked by Composer 2.9.5 security advisory enforcement (EOL versions) → removed, only 4.4 LTS kept
  • Symfony 6.0–6.2 need symfony/console pinned to same minor to prevent resolution to 7.x+ → capped at PHP 8.3 (implicit nullable in framework-bundle on 8.4)
  • Symfony yaml must be pinned to same minor as framework-bundle to prevent cross-major resolution

Test plan

  • All matrix files verified locally via tests/run-in-docker.sh on appropriate PHP versions
  • Representative tests passing for each group (doctrine, nextras, dibi, nette, nette-di, symfony-bundle)

Copilot AI review requested due to automatic review settings February 24, 2026 18:33
@JanTvrdik JanTvrdik force-pushed the matrix-without-prefer-lowest branch from 3fec455 to 0ca51b5 Compare February 24, 2026 18:38
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request redesigns the integration test matrix by removing the --prefer-lowest testing approach and replacing it with explicit version pinning using X.Y.* constraints. This simplification reduces the number of test runs per matrix file from 2 to 1, while consolidating PHP version ranges within each matrix file rather than splitting them across multiple files.

Changes:

  • Removed --prefer-lowest logic from the integration test runner script
  • Consolidated matrix files from 33 to 67 files (more granular version coverage, but simpler per-file structure)
  • Updated all matrix files to use X.Y.* constraints for the primary package being tested and appropriate caret/wildcard constraints for dependencies
  • Added --rm flag to docker-compose to prevent orphan containers
  • Fixed PHP 8.4 implicit nullable deprecation in MigrationsExtension.phpt

Reviewed changes

Copilot reviewed 96 out of 96 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/run-integration.sh Removed --prefer-lowest test pass and simplified composer_prepare_dependencies function
tests/run-in-docker.sh Added --rm flag to docker-compose run to auto-remove containers
tests/matrix/symfony-bundle/*.sh Added 17 new files (one per Symfony minor version 4.4-8.0), removed 8 old PHP-version-specific files
tests/matrix/nette-di/*.sh Added 4 consolidated files (nette 2.4, 3.0, 3.1, 3.2), removed 6 PHP-version-specific files
tests/matrix/dbal/nextras-*.sh Added 8 version-specific files (1.0-5.0), removed 6 old files
tests/matrix/dbal/nette-*.sh Added 4 version-specific files (2.4, 3.0, 3.1, 3.2), removed 3 old files
tests/matrix/dbal/doctrine-*.sh Added 25 version-specific files (2.5-4.4), removed 6 old files
tests/matrix/dbal/dibi-*.sh Added 8 version-specific files (3.0-5.1), removed 4 old files
tests/cases/integration/nette-di/MigrationsExtension.phpt Fixed PHP 8.4 deprecation by adding explicit nullable type hint

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@JanTvrdik JanTvrdik force-pushed the matrix-without-prefer-lowest branch from 0ca51b5 to bcb1899 Compare February 24, 2026 18:57
…--prefer-lowest

Replace --prefer-lowest with explicit X.Y.* constraints per minor version,
eliminating PHP version splits and reducing breakage from transitive dependency
changes. Each matrix file now tests the latest patch of one specific minor version.

Changes:
- Remove --prefer-lowest second pass from run-integration.sh
- Add --rm to docker-compose run in run-in-docker.sh to fix orphan containers
- Fix PHP 8.4 implicit nullable deprecation in MigrationsExtension.phpt
- dbal/doctrine: 6 files -> 25 files (2.5-4.4, one per minor)
- dbal/nextras: 6 files -> 8 files (1.0-5.0)
- dbal/dibi: 4 files -> 8 files (3.0-5.1)
- dbal/nette: 3 files -> 4 files (2.4-3.2)
- nette-di: 6 files -> 4 files (2.4-3.2)
- symfony-bundle: 8 files -> 18 files (4.4, 5.0-5.4, 6.0-6.4, 7.0-7.4, 8.0)
@JanTvrdik JanTvrdik force-pushed the matrix-without-prefer-lowest branch from bcb1899 to 6a1d81c Compare February 24, 2026 19:00
@JanTvrdik JanTvrdik merged commit cb0e39e into master Feb 24, 2026
9 checks passed
@JanTvrdik JanTvrdik deleted the matrix-without-prefer-lowest branch February 24, 2026 19:28
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.

2 participants