Skip to content

Commit

Permalink
Fix loading of root aliases on path repo packages when doing partial …
Browse files Browse the repository at this point in the history
…updates, fixes #11630 (#11632)
  • Loading branch information
Seldaek committed Sep 11, 2023
1 parent 087b21d commit 755e89f
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/Composer/DependencyResolver/PoolBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,10 @@ private function loadPackage(Request $request, array $repositories, BasePackage

// if propagateUpdate is false we are loading a fixed or locked package, root aliases do not apply as they are
// manually loaded as separate packages in this case
if ($propagateUpdate && isset($this->rootAliases[$name][$package->getVersion()])) {
//
// packages in pathRepoUnlocked however need to also load root aliases, they have propagateUpdate set to
// false because their deps should not be unlocked, but that is irrelevant for root aliases
if (($propagateUpdate || isset($this->pathRepoUnlocked[$package->getName()])) && isset($this->rootAliases[$name][$package->getVersion()])) {
$alias = $this->rootAliases[$name][$package->getVersion()];
if ($package instanceof AliasPackage) {
$basePackage = $package->getAliasOf();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
--TEST--
Partial updates always load root aliases even for path repos which are symlinked but not marked as updating

--COMPOSER--
{
"repositories": [
{
"type": "path",
"url": "Fixtures/functional/installed-versions/plugin-a"
},
{
"type": "package",
"package": [
{ "name": "c/new", "version": "2.0.0", "require": { "plugin/a": "2.*" } }
]
}
],
"require": {
"plugin/a": "1.1.1 as 2.0.0",
"c/new": "*"
}
}

--LOCK--
{
"packages": [
{ "name": "plugin/a", "version": "1.0.0", "dist": { "type": "path", "url": "..." }, "transport-options": {}, "require": { "symfony/console": "1.*" } },
{ "name": "symfony/console", "version": "1.0.0" }
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}

--INSTALLED--
[
{ "name": "plugin/a", "version": "1.1.1", "require": { "symfony/console": "2.0.*" } },
{ "name": "symfony/console", "version": "1.0.0" }
]

--RUN--
update c/new -v

--EXPECT--
Upgrading plugin/a (1.1.1 => 1.1.1 b133081)
Marking plugin/a (2.0.0) as installed, alias of plugin/a (1.1.1)
Installing c/new (2.0.0)

0 comments on commit 755e89f

Please sign in to comment.