diff --git a/src/Composer/Repository/ArrayRepository.php b/src/Composer/Repository/ArrayRepository.php index 4f0409a60..7a4251084 100644 --- a/src/Composer/Repository/ArrayRepository.php +++ b/src/Composer/Repository/ArrayRepository.php @@ -167,6 +167,13 @@ class ArrayRepository extends BaseRepository { $packageId = $package->getUniqueName(); + if ($package instanceof AliasPackage) { + $aliasedPackage = $package->getAliasOf(); + if ($this === $aliasedPackage->getRepository()) { + $this->removePackage($aliasedPackage); + } + } + foreach ($this->getPackages() as $key => $repoPackage) { if ($packageId === $repoPackage->getUniqueName()) { array_splice($this->packages, $key, 1); diff --git a/tests/Composer/Test/Repository/ArrayRepositoryTest.php b/tests/Composer/Test/Repository/ArrayRepositoryTest.php index 799e76a5b..5927325ee 100644 --- a/tests/Composer/Test/Repository/ArrayRepositoryTest.php +++ b/tests/Composer/Test/Repository/ArrayRepositoryTest.php @@ -68,7 +68,7 @@ class ArrayRepositoryTest extends TestCase $this->assertEquals('bar', $bar[0]->getName()); } - public function testAutomaticallyAddAliasedPackage() + public function testAutomaticallyAddAndRemoveAliasedPackage() { $repo = new ArrayRepository(); @@ -80,6 +80,10 @@ class ArrayRepositoryTest extends TestCase $this->assertCount(2, $repo); $this->assertTrue($repo->hasPackage($this->getPackage('foo', '1'))); $this->assertTrue($repo->hasPackage($this->getPackage('foo', '2'))); + + $repo->removePackage($alias); + + $this->assertCount(0, $repo); } public function testSearch()