--TEST-- Partially updating one root requirement with transitive deps without root requirements keeps the other root requirement fixed. --REQUEST-- { "require": { "root/update": "*", "root/fix": "*" }, "locked": [ {"name": "root/update", "version": "1.0.1", "require": {"dep/dep": "1.*", "dep2/dep2": "1.*"}, "id": 1}, {"name": "dep/dep", "version": "1.0.2", "require": {"root/fix": "1.*"}, "id": 2}, {"name": "dep2/dep2", "version": "1.0.2", "require": {"dep/dep": "1.*"}, "id": 3}, {"name": "root/fix", "version": "1.0.3", "id": 4} ], "allowList": [ "root/update" ], "allowTransitiveDepsNoRootRequire": true } --FIXED-- [ ] --PACKAGES-- [ {"name": "root/update", "version": "1.0.4", "require": {"dep/dep": "1.*", "dep2/dep2": "1.*"}}, {"name": "root/update", "version": "1.0.5", "require": {"dep/dep": "2.*", "dep2/dep2": "2.*"}}, {"name": "root/fix", "version": "1.0.6"}, {"name": "root/fix", "version": "2.0.7"}, {"name": "dep/dep", "version": "1.0.8", "require": {"root/fix": "1.*"}}, {"name": "dep/dep", "version": "2.0.9", "require": {"root/fix": "2.*"}}, {"name": "dep2/dep2", "version": "1.0.8", "require": {"dep/dep": "1.*"}}, {"name": "dep2/dep2", "version": "2.0.9", "require": {"dep/dep": "2.*"}} ] --EXPECT-- [ 4, "root/update-1.0.4.0", "root/update-1.0.5.0", "dep/dep-1.0.8.0", "dep/dep-2.0.9.0", "dep2/dep2-1.0.8.0", "dep2/dep2-2.0.9.0" ]