diff --git a/src/Composer/Repository/ArrayRepository.php b/src/Composer/Repository/ArrayRepository.php index 8d3898f3d..36ed56b0b 100644 --- a/src/Composer/Repository/ArrayRepository.php +++ b/src/Composer/Repository/ArrayRepository.php @@ -48,10 +48,15 @@ class ArrayRepository implements RepositoryInterface { // normalize name $name = strtolower($name); + $packages = array(); - return array_filter($this->getPackages(), function (PackageInterface $package) use ($name) { - return $package->getName() === $name; - }); + foreach ($this->getPackages() as $package) { + if ($package->getName() === $name) { + $packages[] = $package; + } + } + + return $packages; } /** diff --git a/tests/Composer/Test/Repository/ArrayRepositoryTest.php b/tests/Composer/Test/Repository/ArrayRepositoryTest.php index def78e36e..5e29f5ed6 100644 --- a/tests/Composer/Test/Repository/ArrayRepositoryTest.php +++ b/tests/Composer/Test/Repository/ArrayRepositoryTest.php @@ -50,4 +50,20 @@ class ArrayRepositoryTest extends TestCase $this->assertTrue($repo->hasPackage($this->getPackage('foo', '1'))); $this->assertFalse($repo->hasPackage($this->getPackage('bar', '1'))); } + + public function testFindPackagesByName() + { + $repo = new ArrayRepository(); + $repo->addPackage($this->getPackage('foo', '1')); + $repo->addPackage($this->getPackage('bar', '2')); + $repo->addPackage($this->getPackage('bar', '3')); + + $foo = $repo->findPackagesByName('foo'); + $this->assertCount(1, $foo); + $this->assertEquals('foo', $foo[0]->getName()); + + $bar = $repo->findPackagesByName('bar'); + $this->assertCount(2, $bar); + $this->assertEquals('bar', $bar[0]->getName()); + } }