--TEST-- Circular dependencies errors uses helpful message --COMPOSER-- { "name": "root/pkg", "version": "dev-master", "require": { "requires/root": "1.0.0", "requires/root2": "1.0.0" }, "repositories": [ { "type": "package", "package": [ { "name": "requires/root", "version": "1.0.0", "source": { "reference": "some.branch", "type": "git", "url": "" }, "require": { "root/pkg": "^1.0" } }, { "name": "requires/root2", "version": "1.0.0", "source": { "reference": "some.branch", "type": "git", "url": "" }, "require": { "root/pkg": "^2.0" } }, { "name": "root/pkg", "version": "1.0.0" } ] } ] } --RUN-- update -v --EXPECT-EXIT-CODE-- 2 --EXPECT-OUTPUT-- Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires requires/root 1.0.0 -> satisfiable by requires/root[1.0.0]. - requires/root 1.0.0 requires root/pkg ^1.0 -> satisfiable by root/pkg[1.0.0] from package repo (defining 3 packages) but root/pkg is the root package and cannot be modified. See https://getcomposer.org/dep-on-root for details and assistance. Problem 2 - Root composer.json requires requires/root2 1.0.0 -> satisfiable by requires/root2[1.0.0]. - requires/root2 1.0.0 requires root/pkg ^2.0 -> found root/pkg[dev-master] but it does not match the constraint. See https://getcomposer.org/dep-on-root for details and assistance. --EXPECT--