From 38a5f04ea024c28429d583b2eb18e5cbac54d43f Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Mon, 16 Jan 2012 22:29:22 +0100 Subject: [PATCH 1/2] Added a test for the new findPackagesByName method --- .../Test/Repository/ArrayRepositoryTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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()); + } } From bca786d5c33eaeb9242b1273a279146ec5f3bbbe Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Mon, 16 Jan 2012 22:40:14 +0100 Subject: [PATCH 2/2] Fixed the tests array_filter preserves the keys even when filtering an array indexed numerically. --- src/Composer/Repository/ArrayRepository.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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; } /**