From c9cff6387a874e15e191119349a4f33c488b679d Mon Sep 17 00:00:00 2001 From: Matthias Derer Date: Fri, 13 Feb 2015 00:37:18 +0100 Subject: [PATCH] removed requirements from the root package should we install from the lock file --- src/Composer/Installer.php | 3 ++ ...rements-do-not-affect-locked-versions.test | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tests/Composer/Test/Fixtures/installer/root-requirements-do-not-affect-locked-versions.test diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php index 3594336e3..e3e380f07 100644 --- a/src/Composer/Installer.php +++ b/src/Composer/Installer.php @@ -355,6 +355,9 @@ class Installer $installFromLock = false; if (!$this->update && $this->locker->isLocked()) { $installFromLock = true; + // we are removing all requirements from the root package so only the lock file is relevant for installation rules + $this->package->setRequires(array()); + $this->package->setDevRequires(array()); try { $lockedRepository = $this->locker->getLockedRepository($withDevReqs); } catch (\RuntimeException $e) { diff --git a/tests/Composer/Test/Fixtures/installer/root-requirements-do-not-affect-locked-versions.test b/tests/Composer/Test/Fixtures/installer/root-requirements-do-not-affect-locked-versions.test new file mode 100644 index 000000000..15d1b4ef5 --- /dev/null +++ b/tests/Composer/Test/Fixtures/installer/root-requirements-do-not-affect-locked-versions.test @@ -0,0 +1,41 @@ +--TEST-- +The locked version will not get overwritten by an install +--COMPOSER-- +{ + "repositories": [ + { + "type": "package", + "package": [ + { "name": "foo/bar", "version": "1.0.0" }, + { "name": "foo/baz", "version": "1.0.0" }, + { "name": "foo/baz", "version": "2.0.0" } + ] + } + ], + "require": { + "foo/bar": "2.0.0", + "foo/baz": "2.0.0" + } +} +--LOCK-- +{ + "packages": [ + { "name": "foo/bar", "version": "1.0.0" }, + { "name": "foo/baz", "version": "2.0.0" } + ], + "packages-dev": null, + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false +} +--INSTALLED-- +[ + { "name": "foo/bar", "version": "1.0.0" }, + { "name": "foo/baz", "version": "1.0.0" } +] +--RUN-- +install +--EXPECT-- +Updating foo/baz (1.0.0) to foo/baz (2.0.0)