Skip to content

Commit 505fed7

Browse files
staabmsebastianbergmann
authored andcommitted
Test defects,random executionOrder
1 parent 50fd97b commit 505fed7

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

phpunit.xsd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@
116116
<xs:restriction base="xs:string">
117117
<xs:enumeration value="default"/>
118118
<xs:enumeration value="defects"/>
119+
<xs:enumeration value="defects,random"/>
119120
<xs:enumeration value="depends"/>
120121
<xs:enumeration value="depends,defects"/>
121122
<xs:enumeration value="depends,duration"/>

tests/unit/Runner/TestSuiteSorterTest.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,42 @@ public function testCanSetRandomizationWithASeed(): void
504504
$this->assertSame($expectedOrder, $sorter->getExecutionOrder());
505505
}
506506

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+
507543
public function testCanSetRandomizationWithASeedAndResolveDependencies(): void
508544
{
509545
$suite = TestSuite::empty('test suite name');

0 commit comments

Comments
 (0)