View source
<?php
namespace Drupal\Tests\Core\Test;
use Drupal\Core\Test\PhpUnitTestRunner;
use Drupal\Core\Test\TestStatus;
use Drupal\Tests\UnitTestCase;
class PhpUnitTestRunnerTest extends UnitTestCase {
public function testRunTestsError() {
$test_id = 23;
$log_path = 'test_log_path';
$runner = $this
->getMockBuilder(PhpUnitTestRunner::class)
->disableOriginalConstructor()
->setMethods([
'xmlLogFilepath',
'runCommand',
])
->getMock();
$runner
->expects($this
->once())
->method('xmlLogFilepath')
->willReturn($log_path);
$runner
->expects($this
->once())
->method('runCommand')
->willReturnCallback(function ($unescaped_test_classnames, $phpunit_file, &$status) {
$status = TestStatus::EXCEPTION;
});
$status = -1;
$results = $runner
->runTests($test_id, [
'SomeTest',
], $status);
$this
->assertEquals(TestStatus::EXCEPTION, $status);
$row = reset($results);
$fail_row = [
'test_id' => $test_id,
'test_class' => 'SomeTest',
'status' => TestStatus::label(TestStatus::EXCEPTION),
'message' => 'PHPUnit Test failed to complete; Error: ',
'message_group' => 'Other',
'function' => 'SomeTest',
'line' => '0',
'file' => $log_path,
];
$this
->assertEquals($fail_row, $row);
}
public function testPhpUnitCommand() {
$runner = new PhpUnitTestRunner($this->root, sys_get_temp_dir());
$this
->assertMatchesRegularExpression('/phpunit/', $runner
->phpUnitCommand());
}
public function testXmlLogFilePath() {
$runner = new PhpUnitTestRunner($this->root, sys_get_temp_dir());
$this
->assertStringEndsWith('phpunit-23.xml', $runner
->xmlLogFilePath(23));
}
public function providerTestSummarizeResults() {
return [
[
[
[
'test_class' => static::class,
'status' => 'pass',
],
],
'#pass',
],
[
[
[
'test_class' => static::class,
'status' => 'fail',
],
],
'#fail',
],
[
[
[
'test_class' => static::class,
'status' => 'exception',
],
],
'#exception',
],
[
[
[
'test_class' => static::class,
'status' => 'debug',
],
],
'#debug',
],
];
}
public function testSummarizeResults($results, $has_status) {
$runner = new PhpUnitTestRunner($this->root, sys_get_temp_dir());
$summary = $runner
->summarizeResults($results);
$this
->assertArrayHasKey(static::class, $summary);
$this
->assertEquals(1, $summary[static::class][$has_status]);
foreach (array_diff([
'#pass',
'#fail',
'#exception',
'#debug',
], [
$has_status,
]) as $should_be_zero) {
$this
->assertSame(0, $summary[static::class][$should_be_zero]);
}
}
}