diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php index 6c1761134..d14662518 100644 --- a/src/Composer/Installer.php +++ b/src/Composer/Installer.php @@ -404,6 +404,11 @@ class Installer continue; } + // skip providers/replacers + if ($match->getName() !== $package->getName()) { + continue; + } + $newPackage = $match; break; } diff --git a/tests/Composer/Test/Fixtures/installer/update-dev-ignores-providers.test b/tests/Composer/Test/Fixtures/installer/update-dev-ignores-providers.test new file mode 100644 index 000000000..e0858e054 --- /dev/null +++ b/tests/Composer/Test/Fixtures/installer/update-dev-ignores-providers.test @@ -0,0 +1,38 @@ +--TEST-- +Updating a dev package selects its newest version but no providers +--COMPOSER-- +{ + "repositories": [ + { + "type": "package", + "package": [ + { + "name": "a/replacer", "version": "dev-master", + "source": { "reference": "wrong", "url": "", "type": "git" }, + "replace": { + "a/installed": "dev-master" + } + }, + { + "name": "a/installed", "version": "dev-master", + "source": { "reference": "newref", "url": "", "type": "git" } + } + ] + } + ], + "require": { + "a/installed": "dev-master" + }, + "minimum-stability": "dev" +} +--INSTALLED-- +[ + { + "name": "a/installed", "version": "dev-master", + "source": { "reference": "oldref", "url": "", "type": "git" } + } +] +--RUN-- +update +--EXPECT-- +Updating a/installed (dev-master oldref) to a/installed (dev-master newref)