|
@@ -213,6 +213,62 @@ class SolverTest extends \PHPUnit_Framework_TestCase
|
|
|
));
|
|
|
}
|
|
|
|
|
|
+ public function testInstallProvider()
|
|
|
+ {
|
|
|
+ $this->repo->addPackage($packageA = new MemoryPackage('A', '1.0'));
|
|
|
+ $this->repo->addPackage($packageQ = new MemoryPackage('Q', '1.0'));
|
|
|
+ $this->repo->addPackage($packageB = new MemoryPackage('B', '0.8'));
|
|
|
+ $packageA->setRequires(array(new Link('A', 'B', new VersionConstraint('>=', '1.0'), 'requires')));
|
|
|
+ $packageQ->setProvides(array(new Link('Q', 'B', new VersionConstraint('=', '1.0'), 'provides')));
|
|
|
+
|
|
|
+ $this->reposComplete();
|
|
|
+
|
|
|
+ $this->request->install('A');
|
|
|
+
|
|
|
+ $this->checkSolverResult(array(
|
|
|
+ array('job' => 'install', 'package' => $packageQ),
|
|
|
+ array('job' => 'install', 'package' => $packageA),
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testInstallCircularRequire()
|
|
|
+ {
|
|
|
+ $this->repo->addPackage($packageA = new MemoryPackage('A', '1.0'));
|
|
|
+ $this->repo->addPackage($packageB1 = new MemoryPackage('B', '0.9'));
|
|
|
+ $this->repo->addPackage($packageB2 = new MemoryPackage('B', '1.1'));
|
|
|
+ $packageA->setRequires(array(new Link('A', 'B', new VersionConstraint('>=', '1.0'), 'requires')));
|
|
|
+ $packageB2->setRequires(array(new Link('B', 'A', new VersionConstraint('>=', '1.0'), 'requires')));
|
|
|
+
|
|
|
+ $this->reposComplete();
|
|
|
+
|
|
|
+ $this->request->install('A');
|
|
|
+
|
|
|
+ $this->checkSolverResult(array(
|
|
|
+ array('job' => 'install', 'package' => $packageB2),
|
|
|
+ array('job' => 'install', 'package' => $packageA),
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+/*
|
|
|
+ public function testSolverWithComposerRepo()
|
|
|
+ {
|
|
|
+ $this->repoInstalled = new PlatformRepository;
|
|
|
+
|
|
|
+ // overwrite solver with custom installed repo
|
|
|
+ $this->solver = new Solver($this->policy, $this->pool, $this->repoInstalled);
|
|
|
+
|
|
|
+ $this->repo = new ComposerRepository('http://packagist.org');
|
|
|
+ list($monolog) = $this->repo->getPackages();
|
|
|
+
|
|
|
+ $this->reposComplete();
|
|
|
+
|
|
|
+ $this->request->install('Monolog');
|
|
|
+
|
|
|
+ $this->checkSolverResult(array(
|
|
|
+ array('job' => 'install', 'package' => $monolog),
|
|
|
+ ));
|
|
|
+ }*/
|
|
|
+
|
|
|
protected function reposComplete()
|
|
|
{
|
|
|
$this->pool->addRepository($this->repoInstalled);
|