--TEST-- Aliases are loaded when splitting require-dev from require (https://github.com/composer/composer/issues/8954) --COMPOSER-- { "repositories": [ { "type": "package", "package": [ { "name": "a/aliased", "version": "dev-next", "replace": { "a/aliased-replaced": "self.version" } }, { "name": "b/requirer", "version": "2.3.0", "require": { "a/aliased-replaced": "^4.0" } }, { "name": "a/aliased2", "version": "dev-next", "replace": { "a/aliased-replaced2": "self.version" } }, { "name": "b/requirer2", "version": "2.3.0", "require": { "a/aliased-replaced": "^4.0", "a/aliased-replaced2": "^4.0" } } ] } ], "require": { "a/aliased": "dev-next as 4.1.0-RC2", "b/requirer": "2.3.0" }, "require-dev": { "a/aliased2": "dev-next as 4.1.0-RC2", "b/requirer2": "2.3.0" } } --RUN-- update --EXPECT-LOCK-- { "packages": [ { "name": "a/aliased", "version": "dev-next", "type": "library", "replace": { "a/aliased-replaced": "self.version" } }, { "name": "b/requirer", "version": "2.3.0", "require": { "a/aliased-replaced": "^4.0" }, "type": "library" } ], "packages-dev": [ { "name": "a/aliased2", "version": "dev-next", "type": "library", "replace": { "a/aliased-replaced2": "self.version" } }, { "name": "b/requirer2", "version": "2.3.0", "require": { "a/aliased-replaced": "^4.0", "a/aliased-replaced2": "^4.0" }, "type": "library" } ], "aliases": [{ "package": "a/aliased2", "version": "dev-next", "alias": "4.1.0-RC2", "alias_normalized": "4.1.0.0-RC2" }, { "package": "a/aliased", "version": "dev-next", "alias": "4.1.0-RC2", "alias_normalized": "4.1.0.0-RC2" }], "minimum-stability": "stable", "stability-flags": { "a/aliased": 20, "a/aliased2": 20 }, "prefer-stable": false, "prefer-lowest": false, "platform": [], "platform-dev": [] } --EXPECT-- Installing a/aliased (dev-next) Marking a/aliased (4.1.0-RC2) as installed, alias of a/aliased (dev-next) Installing b/requirer (2.3.0) Installing a/aliased2 (dev-next) Marking a/aliased2 (4.1.0-RC2) as installed, alias of a/aliased2 (dev-next) Installing b/requirer2 (2.3.0)