1
0
Fork 0

Fix loading of root aliases on path repo packages when doing partial updates, fixes #11630 (#11632)

pull/11634/head
Jordi Boggiano 2023-09-11 17:45:19 +02:00 committed by GitHub
parent 087b21d687
commit 755e89fc91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 1 deletions

View File

@ -421,7 +421,10 @@ class PoolBuilder
// if propagateUpdate is false we are loading a fixed or locked package, root aliases do not apply as they are // 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 // 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()]; $alias = $this->rootAliases[$name][$package->getVersion()];
if ($package instanceof AliasPackage) { if ($package instanceof AliasPackage) {
$basePackage = $package->getAliasOf(); $basePackage = $package->getAliasOf();

View File

@ -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)