Skip to content

[Bug]: Pest subdependency nunomaduro/collision not compatible with Symfony 8 #1621

@rserry

Description

@rserry

What Happened

When I try to update to symfony 8, it fails because the subdependency nunomaduro/collision is not compatible (yet).
But release v4.1.6 says it should support Symfony 8.

How to Reproduce

Clone the symfony demo project (uses Symfony 8).

git clone git@github.com:symfony/demo.git

Install pest

composer remove phpunit/phpunit
composer require pestphp/pest --dev --with-all-dependencies

Error:

phpunit/phpunit could not be found in require but it is present in require-dev
Do you want to remove it from require-dev [yes]? ./composer.json has been updated
Running composer update phpunit/phpunit
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 0 updates, 25 removals
  - Removing myclabs/deep-copy (1.13.4)
  - Removing phar-io/manifest (2.0.4)
  - Removing phar-io/version (3.2.1)
  - Removing phpunit/php-code-coverage (11.0.12)
  - Removing phpunit/php-file-iterator (5.1.0)
  - Removing phpunit/php-invoker (5.0.1)
  - Removing phpunit/php-text-template (4.0.1)
  - Removing phpunit/php-timer (7.0.1)
  - Removing phpunit/phpunit (11.5.47)
  - Removing sebastian/cli-parser (3.0.2)
  - Removing sebastian/code-unit (3.0.3)
  - Removing sebastian/code-unit-reverse-lookup (4.0.1)
  - Removing sebastian/comparator (6.3.2)
  - Removing sebastian/complexity (4.0.1)
  - Removing sebastian/environment (7.2.1)
  - Removing sebastian/exporter (6.3.2)
  - Removing sebastian/global-state (7.0.2)
  - Removing sebastian/lines-of-code (3.0.1)
  - Removing sebastian/object-enumerator (6.0.1)
  - Removing sebastian/object-reflector (4.0.1)
  - Removing sebastian/recursion-context (6.0.3)
  - Removing sebastian/type (5.1.3)
  - Removing sebastian/version (5.0.2)
  - Removing staabm/side-effects-detector (1.0.5)
  - Removing theseer/tokenizer (1.3.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 0 updates, 25 removals
  - Removing theseer/tokenizer (1.3.1)
  - Removing staabm/side-effects-detector (1.0.5)
  - Removing sebastian/version (5.0.2)
  - Removing sebastian/type (5.1.3)
  - Removing sebastian/recursion-context (6.0.3)
  - Removing sebastian/object-reflector (4.0.1)
  - Removing sebastian/object-enumerator (6.0.1)
  - Removing sebastian/lines-of-code (3.0.1)
  - Removing sebastian/global-state (7.0.2)
  - Removing sebastian/exporter (6.3.2)
  - Removing sebastian/environment (7.2.1)
  - Removing sebastian/complexity (4.0.1)
  - Removing sebastian/comparator (6.3.2)
  - Removing sebastian/code-unit-reverse-lookup (4.0.1)
  - Removing sebastian/code-unit (3.0.3)
  - Removing sebastian/cli-parser (3.0.2)
  - Removing phpunit/phpunit (11.5.47)
  - Removing phpunit/php-timer (7.0.1)
  - Removing phpunit/php-text-template (4.0.1)
  - Removing phpunit/php-invoker (5.0.1)
  - Removing phpunit/php-file-iterator (5.1.0)
  - Removing phpunit/php-code-coverage (11.0.12)
  - Removing phar-io/version (3.2.1)
  - Removing phar-io/manifest (2.0.4)
  - Removing myclabs/deep-copy (1.13.4)
Generating autoload files
107 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Symfony operations: 1 recipe (66315484cb17c2a29e089a377385e56d)
  - Unconfiguring phpunit/phpunit (>=11.1): From github.com/symfony/recipes:main
Executing script -r "@rename('.env.local.demo', '.env.local');" [OK]
Executing script cache:clear [OK]
Executing script assets:install public [OK]
Executing script importmap:install [OK]
Executing script sass:build [OK]

Found 1 security vulnerability advisory affecting 1 package.
Run "composer audit" for a full list of advisories.
./composer.json has been updated
Running composer update pestphp/pest --with-all-dependencies
Loading composer repositories with package information
Restricting packages listed in "symfony/symfony" to "8.0.*"
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires pestphp/pest * -> satisfiable by pestphp/pest[v0.1.0, ..., v0.3.19, v1.0.0, ..., v1.23.1, v2.0.1, ..., v2.36.1, v3.0.0, ..., v3.8.5, v4.0.0, ..., v4.3.2].
    - nunomaduro/collision[v5.0.0, ..., v5.0.2] require php ^7.3 -> your php version (8.4.0; overridden via config.platform, actual: 8.4.17) does not satisfy that requirement.
    - pestphp/pest[v0.1.0, ..., v0.2.4] require php ^7.3 -> your php version (8.4.0; overridden via config.platform, actual: 8.4.17) does not satisfy that requirement.
    - nunomaduro/collision[v5.1.0, ..., v5.11.0] require symfony/console ^5.0 -> found symfony/console[v5.0.0, ..., v5.4.47] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v6.0.0, ..., v6.4.0] require symfony/console ^6.0.2 -> found symfony/console[v6.0.2, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v7.9.0, ..., v7.10.0] require symfony/console ^6.3.4 -> found symfony/console[v6.3.4, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision v7.11.0 requires symfony/console ^6.4.12 -> found symfony/console[v6.4.12, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v1.16.0 requires symfony/console ^6.4.12 -> found symfony/console[v6.4.12, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision v7.12.0 requires symfony/console ^6.4.17 -> found symfony/console[v6.4.17, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v7.2.0, ..., v7.4.0] require symfony/console ^6.2.7 -> found symfony/console[v6.2.7, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v7.5.0, ..., v7.5.2] require symfony/console ^6.2.8 -> found symfony/console[v6.2.8, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v7.6.0, ..., v7.7.0] require symfony/console ^6.3.0 -> found symfony/console[v6.3.0, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v7.8.0, ..., v7.8.1] require symfony/console ^6.3.2 -> found symfony/console[v6.3.2, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v8.0.0, ..., v8.0.1] require symfony/console ^7.0.1 -> found symfony/console[v7.0.1, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v2.0.0 require symfony/console ^7.0.1 -> found symfony/console[v7.0.1, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision v8.1.0 requires symfony/console ^7.0.2 -> found symfony/console[v7.0.2, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision v8.1.1 requires symfony/console ^7.0.4 -> found symfony/console[v7.0.4, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind[v2.0.1, ..., v2.1.0] require symfony/console ^7.0.4 -> found symfony/console[v7.0.4, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision v8.3.0 requires symfony/console ^7.1.2 -> found symfony/console[v7.1.2, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision v8.4.0 requires symfony/console ^7.1.3 -> found symfony/console[v7.1.3, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision v8.5.0 requires symfony/console ^7.1.5 -> found symfony/console[v7.1.5, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v2.2.0 requires symfony/console ^7.1.5 -> found symfony/console[v7.1.5, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v8.6.0, ..., v8.7.0] require symfony/console ^7.2.1 -> found symfony/console[v7.2.1, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision v8.8.0 requires symfony/console ^7.2.5 -> found symfony/console[v7.2.5, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/collision[v8.8.1, ..., v8.8.3] require symfony/console ^7.3.0 -> found symfony/console[v7.3.0, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v1.15.1 requires symfony/console ^5.3.0|^6.0.0 -> found symfony/console[v5.3.0, ..., v5.4.47, v6.0.0, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v1.17.0 requires symfony/console ^6.4.15 -> found symfony/console[v6.4.15, ..., v6.4.32] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v2.3.0 requires symfony/console ^7.1.8 -> found symfony/console[v7.1.8, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v2.3.1 requires symfony/console ^7.2.6 -> found symfony/console[v7.2.6, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v2.3.2 requires symfony/console ^7.3.4 -> found symfony/console[v7.3.4, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - nunomaduro/termwind v2.3.3 requires symfony/console ^7.3.6 -> found symfony/console[v7.3.6, ..., v7.4.4] but it conflicts with your root composer.json require (^8).
    - pestphp/pest[v0.3.0, ..., v0.3.19, v1.0.0, ..., v1.4.0] require nunomaduro/collision ^5.0 -> satisfiable by nunomaduro/collision[v5.0.0, ..., v5.11.0].
    - pestphp/pest[v1.5.0, ..., v1.17.0] require nunomaduro/collision ^5.4.0 -> satisfiable by nunomaduro/collision[v5.4.0, ..., v5.11.0].
    - pestphp/pest[v1.18.0, ..., v1.21.1] require nunomaduro/collision ^5.4.0|^6.0 -> satisfiable by nunomaduro/collision[v5.4.0, ..., v5.11.0, v6.0.0, ..., v6.4.0].
    - pestphp/pest[v1.21.2, ..., v1.22.1] require nunomaduro/collision ^5.10.0|^6.0 -> satisfiable by nunomaduro/collision[v5.10.0, v5.11.0, v6.0.0, ..., v6.4.0].
    - pestphp/pest[v1.22.2, ..., v1.22.5] require nunomaduro/collision ^5.11.0|^6.3.0 -> satisfiable by nunomaduro/collision[v5.11.0, v6.3.0, v6.3.1, v6.3.2, v6.4.0].
    - pestphp/pest[v1.22.6, ..., v1.23.1] require nunomaduro/collision ^5.11.0|^6.4.0 -> satisfiable by nunomaduro/collision[v5.11.0, v6.4.0].
    - pestphp/pest[v2.0.1, ..., v2.0.2] require nunomaduro/collision ^7.2.0 -> satisfiable by nunomaduro/collision[v7.2.0, ..., v7.12.0].
    - pestphp/pest v2.1.0 requires nunomaduro/collision ^7.3.1 -> satisfiable by nunomaduro/collision[v7.3.1, ..., v7.12.0].
    - pestphp/pest[v2.8.2, ..., v2.12.0] require nunomaduro/collision ^7.7.0 -> satisfiable by nunomaduro/collision[v7.7.0, ..., v7.12.0].
    - pestphp/pest v2.12.1 requires nunomaduro/collision ^7.8.0 -> satisfiable by nunomaduro/collision[v7.8.0, ..., v7.12.0].
    - pestphp/pest[v2.12.2, ..., v2.19.1] require nunomaduro/collision ^7.8.1 -> satisfiable by nunomaduro/collision[v7.8.1, ..., v7.12.0].
    - pestphp/pest[v2.2.0, ..., v2.2.1] require nunomaduro/collision ^7.3.2 -> satisfiable by nunomaduro/collision[v7.3.2, ..., v7.12.0].
    - pestphp/pest[v2.2.2, ..., v2.3.0] require nunomaduro/collision ^7.3.3 -> satisfiable by nunomaduro/collision[v7.3.3, ..., v7.12.0].
    - pestphp/pest[v2.19.2, ..., v2.22.0] require nunomaduro/collision ^7.9.0 -> satisfiable by nunomaduro/collision[v7.9.0, v7.10.0, v7.11.0, v7.12.0].
    - pestphp/pest v2.22.1 requires nunomaduro/termwind ^1.15.1|^2.0.0 -> satisfiable by nunomaduro/termwind[v1.15.1, v1.16.0, v1.17.0, v2.0.0, ..., v2.3.3].
    - pestphp/pest[v2.23.0, ..., v2.23.2] require nunomaduro/collision ^7.9.0|^8.0.0 -> satisfiable by nunomaduro/collision[v7.9.0, v7.10.0, v7.11.0, v7.12.0, v8.0.0, ..., v8.8.3].
    - pestphp/pest[v2.24.0, ..., v2.28.1] require nunomaduro/collision ^7.10.0|^8.0.0 -> satisfiable by nunomaduro/collision[v7.10.0, v7.11.0, v7.12.0, v8.0.0, ..., v8.8.3].
    - pestphp/pest[v2.29.0, ..., v2.31.0] require nunomaduro/collision ^7.10.0|^8.0.1 -> satisfiable by nunomaduro/collision[v7.10.0, v7.11.0, v7.12.0, v8.0.1, ..., v8.8.3].
    - pestphp/pest[v2.32.0, ..., v2.34.1] require nunomaduro/collision ^7.10.0|^8.1.0 -> satisfiable by nunomaduro/collision[v7.10.0, v7.11.0, v7.12.0, v8.1.0, ..., v8.8.3].
    - pestphp/pest[v2.34.2, ..., v2.34.9] require nunomaduro/collision ^7.10.0|^8.1.1 -> satisfiable by nunomaduro/collision[v7.10.0, v7.11.0, v7.12.0, v8.1.1, ..., v8.8.3].
    - pestphp/pest v2.35.0 requires nunomaduro/collision ^7.10.0|^8.3.0 -> satisfiable by nunomaduro/collision[v7.10.0, v7.11.0, v7.12.0, v8.3.0, ..., v8.8.3].
    - pestphp/pest v2.35.1 requires nunomaduro/collision ^7.10.0|^8.4.0 -> satisfiable by nunomaduro/collision[v7.10.0, v7.11.0, v7.12.0, v8.4.0, ..., v8.8.3].
    - pestphp/pest v2.36.0 requires nunomaduro/collision ^7.11.0|^8.4.0 -> satisfiable by nunomaduro/collision[v7.11.0, v7.12.0, v8.4.0, ..., v8.8.3].
    - pestphp/pest v2.36.1 requires nunomaduro/collision ^7.11.0|^8.5.0 -> satisfiable by nunomaduro/collision[v7.11.0, v7.12.0, v8.5.0, ..., v8.8.3].
    - pestphp/pest[v2.4.0, ..., v2.5.0] require nunomaduro/collision ^7.4.0 -> satisfiable by nunomaduro/collision[v7.4.0, ..., v7.12.0].
    - pestphp/pest[v2.5.1, ..., v2.5.2] require nunomaduro/collision ^7.5.0 -> satisfiable by nunomaduro/collision[v7.5.0, ..., v7.12.0].
    - pestphp/pest[v2.5.3, ..., v2.6.3] require nunomaduro/collision ^7.5.2 -> satisfiable by nunomaduro/collision[v7.5.2, ..., v7.12.0].
    - pestphp/pest[v2.7.0, ..., v2.8.1] require nunomaduro/collision ^7.6.0 -> satisfiable by nunomaduro/collision[v7.6.0, ..., v7.12.0].
    - pestphp/pest[v3.0.0, ..., v3.4.0] require nunomaduro/collision ^8.4.0 -> satisfiable by nunomaduro/collision[v8.4.0, ..., v8.8.3].
    - pestphp/pest[v3.4.1, ..., v3.7.2] require nunomaduro/collision ^8.5.0 -> satisfiable by nunomaduro/collision[v8.5.0, ..., v8.8.3].
    - pestphp/pest v3.7.3 requires nunomaduro/collision ^8.6.0 -> satisfiable by nunomaduro/collision[v8.6.0, ..., v8.8.3].
    - pestphp/pest v3.7.4 requires nunomaduro/collision ^8.6.1 -> satisfiable by nunomaduro/collision[v8.6.1, ..., v8.8.3].
    - pestphp/pest[v3.7.5, ..., v3.8.0] require nunomaduro/collision ^8.7.0 -> satisfiable by nunomaduro/collision[v8.7.0, ..., v8.8.3].
    - pestphp/pest[v3.8.1, ..., v3.8.2] require nunomaduro/collision ^8.8.0 -> satisfiable by nunomaduro/collision[v8.8.0, v8.8.1, v8.8.2, v8.8.3].
    - pestphp/pest[v3.8.3, ..., v3.8.4] require nunomaduro/collision ^8.8.2 -> satisfiable by nunomaduro/collision[v8.8.2, v8.8.3].
    - pestphp/pest[v3.8.5, v4.1.6, ..., v4.3.2] require nunomaduro/collision ^8.8.3 -> satisfiable by nunomaduro/collision[v8.8.3].
    - pestphp/pest[v4.0.0, ..., v4.0.4] require symfony/process ^7.3.0 -> found symfony/process[v7.3.0, ..., v7.4.5] but these were not loaded, likely because it conflicts with another require.
    - pestphp/pest[v4.1.0, ..., v4.1.1] require symfony/process ^7.3.3 -> found symfony/process[v7.3.3, ..., v7.4.5] but these were not loaded, likely because it conflicts with another require.
    - pestphp/pest[v4.1.2, ..., v4.1.5] require symfony/process ^7.3.4 -> found symfony/process[v7.3.4, ..., v7.4.5] but these were not loaded, likely because it conflicts with another require.

You can also try re-running composer require with an explicit version constraint, e.g. "composer require pestphp/pest:*" to figure out if any version is installable, or "composer require pestphp/pest:^2.1" if you know which you need.

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

Sample Repository

No response

Pest Version

^v4.1.6

PHP Version

8.4

Operation System

macOS

Notes

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions