--TEST-- Root-defined aliases end up in lock file only if required to solve deps --COMPOSER-- { "repositories": [ { "type": "package", "package": [ { "name": "a/aliased", "version": "3.0.2" }, { "name": "a/aliased2", "version": "3.0.2" }, { "name": "b/requirer", "version": "1.0.0", "require": { "a/aliased": "^3.0.3", "a/aliased2": "^3.0.0" } } ] } ], "require": { "a/aliased": "3.0.2 as 3.0.3", "a/aliased2": "3.0.2 as 3.0.3", "b/requirer": "*" } } --RUN-- update --EXPECT-LOCK-- { "packages": [ { "name": "a/aliased", "version": "3.0.2", "type": "library" }, { "name": "a/aliased2", "version": "3.0.2", "type": "library" }, { "name": "b/requirer", "version": "1.0.0", "require": { "a/aliased": "^3.0.3", "a/aliased2": "^3.0.0" }, "type": "library" } ], "packages-dev": [], "aliases": [{ "package": "a/aliased", "version": "3.0.2.0", "alias": "3.0.3", "alias_normalized": "3.0.3.0" }], "minimum-stability": "stable", "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": [], "platform-dev": [] } --EXPECT-- Installing a/aliased2 (3.0.2) Installing a/aliased (3.0.2) Marking a/aliased (3.0.3) as installed, alias of a/aliased (3.0.2) Installing b/requirer (1.0.0)