--TEST-- Update with a package allow list only updates those packages and their dependencies matching the pattern --COMPOSER-- { "repositories": [ { "type": "package", "package": [ { "name": "fixed/pkg", "version": "1.1.0" }, { "name": "fixed/pkg", "version": "1.0.0" }, { "name": "allowed/pkg-component1", "version": "1.1.0", "require": { "allowed/pkg-component2": "1.1.0" } }, { "name": "allowed/pkg-component1", "version": "1.0.0", "require": { "allowed/pkg-component2": "1.0.0" } }, { "name": "allowed/pkg-component2", "version": "1.1.0", "require": { "dependency/pkg": "1.1.0", "allowed/pkg-component5": "1.0.0" } }, { "name": "allowed/pkg-component2", "version": "1.0.0", "require": { "dependency/pkg": "1.0.0" } }, { "name": "allowed/pkg-component3", "version": "1.1.0", "require": { "allowed/pkg-component4": "1.1.0" } }, { "name": "allowed/pkg-component3", "version": "1.0.0", "require": { "allowed/pkg-component4": "1.0.0" } }, { "name": "allowed/pkg-component4", "version": "1.1.0" }, { "name": "allowed/pkg-component4", "version": "1.0.0" }, { "name": "allowed/pkg-component5", "version": "1.1.0" }, { "name": "allowed/pkg-component5", "version": "1.0.0" }, { "name": "dependency/pkg", "version": "1.1.0" }, { "name": "dependency/pkg", "version": "1.0.0" }, { "name": "unrelated/pkg", "version": "1.1.0", "require": { "unrelated/pkg-dependency": "1.*" } }, { "name": "unrelated/pkg", "version": "1.0.0", "require": { "unrelated/pkg-dependency": "1.*" } }, { "name": "unrelated/pkg-dependency", "version": "1.1.0" }, { "name": "unrelated/pkg-dependency", "version": "1.0.0" } ] } ], "require": { "fixed/pkg": "1.*", "allowed/pkg-component1": "1.*", "allowed/pkg-component2": "1.*", "allowed/pkg-component3": "1.0.0", "unrelated/pkg": "1.*" } } --INSTALLED-- [ { "name": "fixed/pkg", "version": "1.0.0" }, { "name": "allowed/pkg-component1", "version": "1.0.0", "require": { "allowed/pkg-component2": "1.0.0" } }, { "name": "allowed/pkg-component2", "version": "1.0.0", "require": { "dependency/pkg": "1.0.0" } }, { "name": "allowed/pkg-component3", "version": "1.0.0", "require": { "allowed/pkg-component4": "1.0.0" } }, { "name": "allowed/pkg-component4", "version": "1.0.0" }, { "name": "allowed/pkg-component5", "version": "1.0.0" }, { "name": "dependency/pkg", "version": "1.0.0" }, { "name": "unrelated/pkg", "version": "1.0.0", "require": { "unrelated/pkg-dependency": "1.*" } }, { "name": "unrelated/pkg-dependency", "version": "1.0.0" } ] --LOCK-- { "packages": [ { "name": "fixed/pkg", "version": "1.0.0" }, { "name": "allowed/pkg-component1", "version": "1.0.0", "require": { "allowed/pkg-component2": "1.0.0" } }, { "name": "allowed/pkg-component2", "version": "1.0.0", "require": { "dependency/pkg": "1.0.0" } }, { "name": "allowed/pkg-component3", "version": "1.0.0", "require": { "allowed/pkg-component4": "1.0.0" } }, { "name": "allowed/pkg-component4", "version": "1.0.0" }, { "name": "allowed/pkg-component5", "version": "1.0.0" }, { "name": "dependency/pkg", "version": "1.0.0" }, { "name": "unrelated/pkg", "version": "1.0.0", "require": { "unrelated/pkg-dependency": "1.*" } }, { "name": "unrelated/pkg-dependency", "version": "1.0.0" } ], "packages-dev": [], "aliases": [], "minimum-stability": "dev", "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": [], "platform-dev": [] } --RUN-- update allowed/pkg-* foobar --with-dependencies --EXPECT-- Upgrading dependency/pkg (1.0.0 => 1.1.0) Upgrading allowed/pkg-component2 (1.0.0 => 1.1.0) Upgrading allowed/pkg-component1 (1.0.0 => 1.1.0)