@@ -504,6 +504,42 @@ public function testCanSetRandomizationWithASeed(): void
504
504
$ this ->assertSame ($ expectedOrder , $ sorter ->getExecutionOrder ());
505
505
}
506
506
507
+ public function testCanSetRandomizationWithDefectsFirst (): void
508
+ {
509
+ $ cache = new DefaultResultCache ;
510
+
511
+ $ runState = [
512
+ 'testOne ' => ['state ' => TestStatus::success (), 'time ' => 1 ],
513
+ 'testTwo ' => ['state ' => TestStatus::success (), 'time ' => 1 ],
514
+ 'testThree ' => ['state ' => TestStatus::error (), 'time ' => 1 ],
515
+ 'testFour ' => ['state ' => TestStatus::success (), 'time ' => 1 ],
516
+ 'testFive ' => ['state ' => TestStatus::error (), 'time ' => 1 ],
517
+ ];
518
+
519
+ foreach ($ runState as $ testName => $ data ) {
520
+ $ cache ->setStatus (MultiDependencyTest::class . ':: ' . $ testName , $ data ['state ' ]);
521
+ $ cache ->setTime (MultiDependencyTest::class . ':: ' . $ testName , $ data ['time ' ]);
522
+ }
523
+
524
+ $ sorter = new TestSuiteSorter ($ cache );
525
+
526
+ $ suite = TestSuite::empty ('test suite name ' );
527
+ $ suite ->addTestSuite (new ReflectionClass (MultiDependencyTest::class));
528
+
529
+ mt_srand (54321 );
530
+ $ sorter ->reorderTestsInSuite ($ suite , TestSuiteSorter::ORDER_RANDOMIZED , false , TestSuiteSorter::ORDER_DEFECTS_FIRST );
531
+
532
+ $ expectedOrder = [
533
+ MultiDependencyTest::class . '::testFive ' ,
534
+ MultiDependencyTest::class . '::testThree ' ,
535
+ MultiDependencyTest::class . '::testTwo ' ,
536
+ MultiDependencyTest::class . '::testFour ' ,
537
+ MultiDependencyTest::class . '::testOne ' ,
538
+ ];
539
+
540
+ $ this ->assertSame ($ expectedOrder , $ sorter ->getExecutionOrder ());
541
+ }
542
+
507
543
public function testCanSetRandomizationWithASeedAndResolveDependencies (): void
508
544
{
509
545
$ suite = TestSuite::empty ('test suite name ' );
0 commit comments