From c02d2842b0fc43da355d9176e02e309336a5836f Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Fri, 13 Nov 2020 16:55:35 +0100 Subject: [PATCH] Test conflict with an unrequired alias does not prevent install. The alias still ends up being marked as installed as the install step reads it from the branch alias in the lock file and doesn't know a conflict required it to be skipped. --- ...-prevent-installation-if-not-required.test | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/Composer/Test/Fixtures/installer/conflict-with-alias-does-not-prevent-installation-if-not-required.test diff --git a/tests/Composer/Test/Fixtures/installer/conflict-with-alias-does-not-prevent-installation-if-not-required.test b/tests/Composer/Test/Fixtures/installer/conflict-with-alias-does-not-prevent-installation-if-not-required.test new file mode 100644 index 000000000..542a883f2 --- /dev/null +++ b/tests/Composer/Test/Fixtures/installer/conflict-with-alias-does-not-prevent-installation-if-not-required.test @@ -0,0 +1,32 @@ +--TEST-- +Test that conflict on a branch alias is ignored if the alias is not required for installation. + +The alias ends up being marked installed anyway because the install step doesn't know that the branch alias which is +present in the lock file was ignored during resolution. This is acceptable as deps were resolvable without the alias +and we don't want to modify branch alias meta data in the lock file. +--COMPOSER-- +{ + "repositories": [ + { + "type": "package", + "package": [ + { "name": "some/dep", "version": "1.0.0" }, + { "name": "some/dep", "version": "1.1.0" }, + { "name": "some/dep", "version": "1.2.0" }, + { "name": "some/dep", "version": "dev-main", "extra": {"branch-alias": {"dev-main": "1.3.x-dev"} } }, + { "name": "some/dep", "version": "1.2.x-dev" } + ] + } + ], + "require": { + "some/dep": "dev-main" + }, + "conflict": { + "some/dep": ">=1.3" + } +} +--RUN-- +update +--EXPECT-- +Installing some/dep (dev-main) +Marking some/dep (1.3.x-dev) as installed, alias of some/dep (dev-main)'