Lock file should not contain new aliases for packages which were not updated

main
Nils Adermann 4 years ago
parent 5ad93959cf
commit f7b5cbd1fc

@ -112,4 +112,22 @@ class LockTransaction extends Transaction
return $packages; return $packages;
} }
/**
* Checks which of the given aliases from composer.json are actually in use for the lock file
*/
public function getAliases($aliases)
{
$usedAliases = array();
foreach ($this->resultPackages['all'] as $package) {
if ($package instanceof AliasPackage) {
if (isset($aliases[$package->getName()])) {
$usedAliases[$package->getName()] = $aliases[$package->getName()];
}
}
}
return $usedAliases;
}
} }

@ -497,7 +497,7 @@ class Installer
$lockTransaction->getNewLockPackages(true, $this->updateMirrors), $lockTransaction->getNewLockPackages(true, $this->updateMirrors),
$platformReqs, $platformReqs,
$platformDevReqs, $platformDevReqs,
$aliases, $lockTransaction->getAliases($aliases),
$this->package->getMinimumStability(), $this->package->getMinimumStability(),
$this->package->getStabilityFlags(), $this->package->getStabilityFlags(),
$this->preferStable || $this->package->getPreferStable(), $this->preferStable || $this->package->getPreferStable(),

@ -1,5 +1,5 @@
--TEST-- --TEST--
Require a new package in the composer.json and updating with its name as an argument and with-dependencies should update locked dependencies as far as possible Verify that a partial update with deps correctly keeps track of all aliases.
--COMPOSER-- --COMPOSER--
{ {
"repositories": [ "repositories": [
@ -11,15 +11,16 @@ Require a new package in the composer.json and updating with its name as an argu
{ "name": "current/dep", "version": "1.0.0" }, { "name": "current/dep", "version": "1.0.0" },
{ "name": "current/dep", "version": "1.1.0", "require": {"current/dep2": "*"} }, { "name": "current/dep", "version": "1.1.0", "require": {"current/dep2": "*"} },
{ "name": "current/dep", "version": "1.2.0" }, { "name": "current/dep", "version": "1.2.0" },
{ "name": "current/dep2", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}}, { "name": "current/dep2", "version": "dev-foo", "extra": {"branch-alias": {"dev-foo": "1.0.x-dev"}}},
{ "name": "new/pkg", "version": "1.0.0", "require": { "current/dep": "^1.1", "current/dep2": "*"} }, { "name": "current/dep2", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "2.x-dev"}}},
{ "name": "new/pkg", "version": "1.0.0", "require": { "current/dep": "^1.1", "current/dep2": "^1.1"} },
{ "name": "new/pkg", "version": "1.1.0", "require": { "current/dep": "^1.2" } } { "name": "new/pkg", "version": "1.1.0", "require": { "current/dep": "^1.2" } }
] ]
} }
], ],
"require": { "require": {
"current/dep": "dev-master as 1.1.0", "current/dep": "dev-master as 1.1.0",
"current/dep2": "dev-master as 1.1.0", "current/dep2": "dev-master as 1.1.2",
"current/pkg": "1.0.0 as 2.0.0", "current/pkg": "1.0.0 as 2.0.0",
"new/pkg": "1.*" "new/pkg": "1.*"
}, },
@ -28,14 +29,14 @@ Require a new package in the composer.json and updating with its name as an argu
--INSTALLED-- --INSTALLED--
[ [
{ "name": "current/dep", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}}, { "name": "current/dep", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}},
{ "name": "current/dep2", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}}, { "name": "current/dep2", "version": "dev-foo", "extra": {"branch-alias": {"dev-foo": "1.0.x-dev"}}},
{ "name": "current/pkg", "version": "1.0.0", "require": { "current/dep": "<1.2.0" } } { "name": "current/pkg", "version": "1.0.0", "require": { "current/dep": "<1.2.0" } }
] ]
--LOCK-- --LOCK--
{ {
"packages": [ "packages": [
{ "name": "current/dep", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}, "type": "library"}, { "name": "current/dep", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}, "type": "library"},
{ "name": "current/dep2", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}, "type": "library"}, { "name": "current/dep2", "version": "dev-foo", "extra": {"branch-alias": {"dev-foo": "1.0.x-dev"}}, "type": "library"},
{ "name": "current/pkg", "version": "1.0.0", "require": { "current/dep": "<1.2.0" } } { "name": "current/pkg", "version": "1.0.0", "require": { "current/dep": "<1.2.0" } }
], ],
"packages-dev": [], "packages-dev": [],
@ -45,12 +46,6 @@ Require a new package in the composer.json and updating with its name as an argu
"alias_normalized": "1.1.0.0", "alias_normalized": "1.1.0.0",
"version": "dev-master", "version": "dev-master",
"package": "current/dep" "package": "current/dep"
},
{
"alias": "1.1.0",
"alias_normalized": "1.1.0.0",
"version": "dev-master",
"package": "current/dep2"
} }
], ],
"minimum-stability": "dev", "minimum-stability": "dev",
@ -66,9 +61,9 @@ update new/pkg --with-all-dependencies
{ {
"packages": [ "packages": [
{ "name": "current/dep", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}, "type": "library"}, { "name": "current/dep", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}, "type": "library"},
{ "name": "current/dep2", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "1.0.x-dev"}}, "type": "library"}, { "name": "current/dep2", "version": "dev-master", "extra": {"branch-alias": {"dev-master": "2.x-dev"}}, "type": "library"},
{ "name": "current/pkg", "version": "1.0.0", "require": { "current/dep": "<1.2.0" }, "type": "library"}, { "name": "current/pkg", "version": "1.0.0", "require": { "current/dep": "<1.2.0" }, "type": "library"},
{ "name": "new/pkg", "version": "1.0.0", "require": { "current/dep": "^1.1", "current/dep2": "*"}, "type": "library"} { "name": "new/pkg", "version": "1.0.0", "require": { "current/dep": "^1.1", "current/dep2": "^1.1"}, "type": "library"}
], ],
"packages-dev": [], "packages-dev": [],
"aliases": [ "aliases": [
@ -79,16 +74,10 @@ update new/pkg --with-all-dependencies
"package": "current/dep" "package": "current/dep"
}, },
{ {
"alias": "1.1.0", "alias": "1.1.2",
"alias_normalized": "1.1.0.0", "alias_normalized": "1.1.2.0",
"version": "dev-master", "version": "dev-master",
"package": "current/dep2" "package": "current/dep2"
},
{
"alias": "2.0.0",
"alias_normalized": "2.0.0.0",
"version": "1.0.0.0",
"package": "current/pkg"
} }
], ],
"minimum-stability": "dev", "minimum-stability": "dev",
@ -103,6 +92,8 @@ update new/pkg --with-all-dependencies
} }
--EXPECT-- --EXPECT--
Marking current/dep (1.1.0) as installed, alias of current/dep (dev-master) Marking current/dep (1.1.0) as installed, alias of current/dep (dev-master)
Marking current/pkg (2.0.0) as installed, alias of current/pkg (1.0.0) Upgrading current/dep2 (dev-foo => dev-master)
Marking current/dep2 (1.1.0) as installed, alias of current/dep2 (dev-master) Marking current/dep2 (1.1.2) as installed, alias of current/dep2 (dev-master)
Marking current/dep2 (2.x-dev) as installed, alias of current/dep2 (dev-master)
Installing new/pkg (1.0.0) Installing new/pkg (1.0.0)
Marking current/dep2 (1.0.x-dev) as uninstalled, alias of current/dep2 (dev-foo)

Loading…
Cancel
Save