diff --git a/src/Composer/DependencyResolver/PoolBuilder.php b/src/Composer/DependencyResolver/PoolBuilder.php index ea49f7eca..5766f25c1 100644 --- a/src/Composer/DependencyResolver/PoolBuilder.php +++ b/src/Composer/DependencyResolver/PoolBuilder.php @@ -272,7 +272,8 @@ class PoolBuilder // Make sure we empty the packagesToLoad here as it would result // in an endless loop with non-existent packages for example - $this->packagesToLoad = array(); + // TODO: fixme, this should only happen if it's not a new package + // $this->packagesToLoad = array(); } private function loadPackage(Request $request, PackageInterface $package, $propagateUpdate = true) diff --git a/tests/Composer/Test/DependencyResolver/Fixtures/poolbuilder/package-versions-are-not-loaded-if-not-required-recursive.test b/tests/Composer/Test/DependencyResolver/Fixtures/poolbuilder/package-versions-are-not-loaded-if-not-required-recursive.test new file mode 100644 index 000000000..efae34752 --- /dev/null +++ b/tests/Composer/Test/DependencyResolver/Fixtures/poolbuilder/package-versions-are-not-loaded-if-not-required-recursive.test @@ -0,0 +1,29 @@ +--TEST-- +Test irrelevant package versions are not loaded + +--REQUEST-- +{ + "require": { + "root/req": "*" + } +} + +--FIXED-- +[ +] + +--PACKAGES-- +[ + {"name": "root/req", "version": "1.0.0", "require": {"dep/dep": "2.*"}}, + {"name": "dep/dep", "version": "2.3.4", "require": {"dep/dep2": "2.*"}}, + {"name": "dep/dep", "version": "3.0.1"}, + {"name": "dep/dep2", "version": "2.3.4"}, + {"name": "dep/dep2", "version": "3.0.1"} +] + +--EXPECT-- +[ + "root/req-1.0.0.0", + "dep/dep-2.3.4.0", + "dep/dep2-2.3.4.0" +] diff --git a/tests/Composer/Test/DependencyResolver/Fixtures/poolbuilder/package-versions-are-not-loaded-if-not-required-simple.test b/tests/Composer/Test/DependencyResolver/Fixtures/poolbuilder/package-versions-are-not-loaded-if-not-required-simple.test new file mode 100644 index 000000000..b17fb3228 --- /dev/null +++ b/tests/Composer/Test/DependencyResolver/Fixtures/poolbuilder/package-versions-are-not-loaded-if-not-required-simple.test @@ -0,0 +1,26 @@ +--TEST-- +Test irrelevant package versions are not loaded + +--REQUEST-- +{ + "require": { + "root/req": "*" + } +} + +--FIXED-- +[ +] + +--PACKAGES-- +[ + {"name": "root/req", "version": "1.0.0", "require": {"dep/dep": "2.*"}}, + {"name": "dep/dep", "version": "2.3.4"}, + {"name": "dep/dep", "version": "3.0.1"} +] + +--EXPECT-- +[ + "root/req-1.0.0.0", + "dep/dep-2.3.4.0" +]