--TEST-- Limited update takes rules from lock if available, and not from the installed repo + composer.json --COMPOSER-- { "repositories": [ { "type": "package", "package": [ { "name": "toupdate/installed", "version": "1.1.0" }, { "name": "toupdate/installed", "version": "1.0.0" }, { "name": "toupdate/notinstalled", "version": "1.1.0" }, { "name": "toupdate/notinstalled", "version": "1.0.0" }, { "name": "old/installed", "version": "0.9.0" }, { "name": "old/installed", "version": "1.0.0" } ] } ], "require": { "toupdate/installed": "1.*", "toupdate/notinstalled": "1.*", "old/installed": "*" } } --LOCK-- { "packages": [ { "name": "old/installed", "version": "1.0.0" }, { "name": "toupdate/installed", "version": "1.0.0" }, { "name": "toupdate/notinstalled", "version": "1.0.0" } ], "packages-dev": [], "aliases": [], "minimum-stability": "stable", "stability-flags": [], "prefer-stable": false, "prefer-lowest": false } --INSTALLED-- [ { "name": "toupdate/installed", "version": "1.0.0" }, { "name": "old/installed", "version": "0.9.0" } ] --RUN-- update toupdate/installed --EXPECT-- Upgrading old/installed (0.9.0 => 1.0.0) Upgrading toupdate/installed (1.0.0 => 1.1.0) Installing toupdate/notinstalled (1.0.0)