1
0
mirror of synced 2025-02-02 21:41:45 +03:00

Add a unit test reproducing the commit order regression

This commit is contained in:
Christophe Coevoet 2018-09-20 11:52:35 +02:00
parent 145f1f5198
commit 11a7f359d1

View File

@ -67,6 +67,39 @@ class CommitOrderCalculatorTest extends OrmTestCase
$this->assertSame($correctOrder, $sorted); $this->assertSame($correctOrder, $sorted);
} }
public function testCommitOrdering3()
{
// this test corresponds to the GH7259Test::testPersistFileBeforeVersion functional test
$class1 = new ClassMetadata(NodeClass1::class);
$class2 = new ClassMetadata(NodeClass2::class);
$class3 = new ClassMetadata(NodeClass3::class);
$class4 = new ClassMetadata(NodeClass4::class);
$this->_calc->addNode($class1->name, $class1);
$this->_calc->addNode($class2->name, $class2);
$this->_calc->addNode($class3->name, $class3);
$this->_calc->addNode($class4->name, $class4);
$this->_calc->addDependency($class4->name, $class1->name, 1);
$this->_calc->addDependency($class1->name, $class2->name, 1);
$this->_calc->addDependency($class4->name, $class3->name, 1);
$this->_calc->addDependency($class1->name, $class4->name, 0);
$sorted = $this->_calc->sort();
// There is only multiple valid ordering for this constellation, but
// the class4, class1, class2 ordering is important to break the cycle
// on the nullable link.
$correctOrders = [
[$class4, $class1, $class2, $class3],
[$class4, $class1, $class3, $class2],
[$class4, $class3, $class1, $class2],
];
// We want to perform a strict comparison of the array
$this->assertContains($sorted, $correctOrders, '', false, true, true);
}
} }
class NodeClass1 {} class NodeClass1 {}