1
0
Fork 0

Update all whitelist matching root dependencies

The update command can receive a pattern like `vendor/prefix-*`
to update all matching packages.
This has not worked if multiple packages, depending on each other,
where matched to the given pattern. No package has been updated
in this case as only the first package matching the pattern was
added to the whitelist.
pull/7927/head
Sascha Egerer 2018-12-12 16:21:15 +01:00 committed by Jordi Boggiano
parent 386382503d
commit 50cb5fe3da
2 changed files with 46 additions and 1 deletions

View File

@ -1332,8 +1332,8 @@ class Installer
$whitelistPatternRegexp = BasePackage::packageNameToRegexp($packageName);
foreach ($rootRequiredPackageNames as $rootRequiredPackageName) {
if (preg_match($whitelistPatternRegexp, $rootRequiredPackageName)) {
$depPackages = array_merge($pool->whatProvides($rootRequiredPackageName));
$nameMatchesRequiredPackage = true;
break;
}
}
}

View File

@ -0,0 +1,45 @@
--TEST--
Update with a package whitelist only updates those packages and their dependencies matching the pattern
--COMPOSER--
{
"repositories": [
{
"type": "package",
"package": [
{ "name": "fixed", "version": "1.1.0" },
{ "name": "fixed", "version": "1.0.0" },
{ "name": "whitelisted-component1", "version": "1.1.0", "require": { "whitelisted-component2": "1.1.0" } },
{ "name": "whitelisted-component1", "version": "1.0.0", "require": { "whitelisted-component2": "1.0.0" } },
{ "name": "whitelisted-component2", "version": "1.1.0", "require": { "dependency": "1.1.0" } },
{ "name": "whitelisted-component2", "version": "1.0.0", "require": { "dependency": "1.0.0" } },
{ "name": "dependency", "version": "1.1.0" },
{ "name": "dependency", "version": "1.0.0" },
{ "name": "unrelated", "version": "1.1.0", "require": { "unrelated-dependency": "1.*" } },
{ "name": "unrelated", "version": "1.0.0", "require": { "unrelated-dependency": "1.*" } },
{ "name": "unrelated-dependency", "version": "1.1.0" },
{ "name": "unrelated-dependency", "version": "1.0.0" }
]
}
],
"require": {
"fixed": "1.*",
"whitelisted-component1": "1.*",
"whitelisted-component2": "1.*",
"unrelated": "1.*"
}
}
--INSTALLED--
[
{ "name": "fixed", "version": "1.0.0" },
{ "name": "whitelisted-component1", "version": "1.0.0", "require": { "whitelisted-component2": "1.0.0" } },
{ "name": "whitelisted-component2", "version": "1.0.0", "require": { "dependency": "1.0.0" } },
{ "name": "dependency", "version": "1.0.0" },
{ "name": "unrelated", "version": "1.0.0", "require": { "unrelated-dependency": "1.*" } },
{ "name": "unrelated-dependency", "version": "1.0.0" }
]
--RUN--
update whitelisted-* --with-dependencies
--EXPECT--
Updating dependency (1.0.0) to dependency (1.1.0)
Updating whitelisted-component2 (1.0.0) to whitelisted-component2 (1.1.0)
Updating whitelisted-component1 (1.0.0) to whitelisted-component1 (1.1.0)