function AbstractPhpProcess::processChildResult
Throws
MoreThanOneDataSetFromDataProviderException
1 call to AbstractPhpProcess::processChildResult()
- AbstractPhpProcess::runTestJob in vendor/
phpunit/ phpunit/ src/ Util/ PHP/ AbstractPhpProcess.php - Runs a single test in a separate PHP process.
File
-
vendor/
phpunit/ phpunit/ src/ Util/ PHP/ AbstractPhpProcess.php, line 238
Class
- AbstractPhpProcess
- @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
Namespace
PHPUnit\Util\PHPCode
private function processChildResult(Test $test, string $stdout, string $stderr) : void {
if (!empty($stderr)) {
$exception = new Exception(trim($stderr));
assert($test instanceof TestCase);
Facade::emitter()->testErrored(TestMethodBuilder::fromTestCase($test), ThrowableBuilder::from($exception));
return;
}
set_error_handler(static function (int $errno, string $errstr, string $errfile, int $errline) : never {
throw new ErrorException($errstr, $errno, $errno, $errfile, $errline);
});
try {
$childResult = unserialize($stdout);
restore_error_handler();
if ($childResult === false) {
$exception = new AssertionFailedError('Test was run in child process and ended unexpectedly');
assert($test instanceof TestCase);
Facade::emitter()->testErrored(TestMethodBuilder::fromTestCase($test), ThrowableBuilder::from($exception));
Facade::emitter()->testFinished(TestMethodBuilder::fromTestCase($test), 0);
}
} catch (ErrorException $e) {
restore_error_handler();
$childResult = false;
$exception = new Exception(trim($stdout), 0, $e);
assert($test instanceof TestCase);
Facade::emitter()->testErrored(TestMethodBuilder::fromTestCase($test), ThrowableBuilder::from($exception));
}
if ($childResult !== false) {
if (!empty($childResult['output'])) {
$output = $childResult['output'];
}
Facade::instance()->forward($childResult['events']);
PassedTests::instance()->import($childResult['passedTests']);
assert($test instanceof TestCase);
$test->setResult($childResult['testResult']);
$test->addToAssertionCount($childResult['numAssertions']);
if (CodeCoverage::instance()->isActive() && $childResult['codeCoverage'] instanceof \SebastianBergmann\CodeCoverage\CodeCoverage) {
CodeCoverage::instance()->codeCoverage()
->merge($childResult['codeCoverage']);
}
}
if (!empty($output)) {
print $output;
}
}