Add a unit test reproducing the commit order regression
This commit is contained in:
parent
145f1f5198
commit
11a7f359d1
@ -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 {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user