diff --git a/src/Composer/Package/Locker.php b/src/Composer/Package/Locker.php index 7aad4d318..d790837a5 100644 --- a/src/Composer/Package/Locker.php +++ b/src/Composer/Package/Locker.php @@ -171,8 +171,19 @@ class Locker } if (isset($lockedPackages[0]['name'])) { + $packageByName = array(); foreach ($lockedPackages as $info) { - $packages->addPackage($this->loader->load($info)); + $package = $this->loader->load($info); + $packages->addPackage($package); + $packageByName[$package->getName()] = $package; + } + + if (isset($lockData['aliases'])) { + foreach ($lockData['aliases'] as $alias) { + if (isset($packageByName[$alias['package']])) { + $packages->addPackage(new AliasPackage($packageByName[$alias['package']], $alias['alias_normalized'], $alias['alias'])); + } + } } return $packages; diff --git a/tests/Composer/Test/Fixtures/installer/aliased-priority-conflicting.test b/tests/Composer/Test/Fixtures/installer/aliased-priority-conflicting.test index cda5d31d3..8d928c20d 100644 --- a/tests/Composer/Test/Fixtures/installer/aliased-priority-conflicting.test +++ b/tests/Composer/Test/Fixtures/installer/aliased-priority-conflicting.test @@ -43,6 +43,45 @@ Aliases take precedence over default package even if default is selected }, "minimum-stability": "dev" } +--EXPECT-LOCK-- +{ + "packages": [ + { + "name": "a/a", "version": "dev-master", + "require": { "a/req": "dev-master" }, + "type": "library" + }, + { + "name": "a/b", "version": "dev-master", + "require": { "a/req": "dev-master" }, + "type": "library" + }, + { + "name": "a/req", "version": "dev-feature-foo", + "source": { "reference": "feat.f", "type": "git", "url": "" }, + "type": "library" + } + ], + "packages-dev": [], + "aliases": [ + { + "alias": "dev-master", + "alias_normalized": "9999999-dev", + "version": "dev-feature-foo", + "package": "a/req" + } + ], + "minimum-stability": "dev", + "stability-flags": { + "a/a": 20, + "a/b": 20, + "a/req": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} --RUN-- install --EXPECT--