diff --git a/src/Composer/DependencyResolver/Request.php b/src/Composer/DependencyResolver/Request.php index 201caa1d3..3d1b28448 100644 --- a/src/Composer/DependencyResolver/Request.php +++ b/src/Composer/DependencyResolver/Request.php @@ -55,6 +55,11 @@ class Request ); } + public function updateAll() + { + $this->jobs[] = array('cmd' => 'update-all', 'packages' => array()); + } + public function getJobs() { return $this->jobs; diff --git a/src/Composer/DependencyResolver/Solver.php b/src/Composer/DependencyResolver/Solver.php index b5bc5cac2..1268a0040 100644 --- a/src/Composer/DependencyResolver/Solver.php +++ b/src/Composer/DependencyResolver/Solver.php @@ -952,6 +952,14 @@ class Solver break; } } + + switch ($job['cmd']) { + case 'update-all': + foreach ($installedPackages as $package) { + $this->updateMap[$package->getId()] = true; + } + break; + } } foreach ($installedPackages as $package) { diff --git a/tests/Composer/Test/DependencyResolver/RequestTest.php b/tests/Composer/Test/DependencyResolver/RequestTest.php index da186edb2..e5010e0e4 100644 --- a/tests/Composer/Test/DependencyResolver/RequestTest.php +++ b/tests/Composer/Test/DependencyResolver/RequestTest.php @@ -46,4 +46,16 @@ class RequestTest extends TestCase ), $request->getJobs()); } + + public function testUpdateAll() + { + $pool = new Pool; + $request = new Request($pool); + + $request->updateAll(); + + $this->assertEquals( + array(array('cmd' => 'update-all', 'packages' => array())), + $request->getJobs()); + } } diff --git a/tests/Composer/Test/DependencyResolver/SolverTest.php b/tests/Composer/Test/DependencyResolver/SolverTest.php index e913dc2a8..28ab91851 100644 --- a/tests/Composer/Test/DependencyResolver/SolverTest.php +++ b/tests/Composer/Test/DependencyResolver/SolverTest.php @@ -165,6 +165,26 @@ class SolverTest extends TestCase )); } + public function testSolverUpdateAll() + { + $this->repoInstalled->addPackage($packageA = $this->getPackage('A', '1.0')); + $this->repoInstalled->addPackage($packageB = $this->getPackage('B', '1.0')); + $this->repo->addPackage($newPackageA = $this->getPackage('A', '1.1')); + $this->repo->addPackage($newPackageB = $this->getPackage('B', '1.1')); + + $packageA->setRequires(array(new Link('A', 'B', null, 'requires'))); + + $this->reposComplete(); + + $this->request->install('A'); + $this->request->updateAll(); + + $this->checkSolverResult(array( + array('job' => 'update', 'from' => $packageB, 'to' => $newPackageB), + array('job' => 'update', 'from' => $packageA, 'to' => $newPackageA), + )); + } + public function testSolverUpdateCurrent() { $this->repoInstalled->addPackage($this->getPackage('A', '1.0'));