Merge pull request #313 from naderman/fix-assert

Add a test for the off by one error in solver conflict resolution
main
Jordi Boggiano 13 years ago
commit 43ce9ab14f

@ -414,6 +414,42 @@ class SolverTest extends TestCase
));
}
/**
* If a replacer D replaces B and C with C not otherwise available,
* D must be installed instead of the original B.
*/
public function testUseReplacerIfNecessary()
{
$this->repo->addPackage($packageA = $this->getPackage('A', '1.0'));
$this->repo->addPackage($packageB = $this->getPackage('B', '1.0'));
$this->repo->addPackage($packageD = $this->getPackage('D', '1.0'));
$this->repo->addPackage($packageD2 = $this->getPackage('D', '1.1'));
$packageA->setRequires(array(
new Link('A', 'B', new VersionConstraint('>=', '1.0'), 'requires'),
new Link('A', 'C', new VersionConstraint('>=', '1.0'), 'requires'),
));
$packageD->setReplaces(array(
new Link('D', 'B', new VersionConstraint('>=', '1.0'), 'replaces'),
new Link('D', 'C', new VersionConstraint('>=', '1.0'), 'replaces'),
));
$packageD2->setReplaces(array(
new Link('D', 'B', new VersionConstraint('>=', '1.0'), 'replaces'),
new Link('D', 'C', new VersionConstraint('>=', '1.0'), 'replaces'),
));
$this->reposComplete();
$this->request->install('A');
$this->checkSolverResult(array(
array('job' => 'install', 'package' => $packageD2),
array('job' => 'install', 'package' => $packageA),
));
}
protected function reposComplete()
{
$this->pool->addRepository($this->repoInstalled);

Loading…
Cancel
Save