Processes the TestResult object from an isolated process.
@since Method available since Release 3.5.0
PHPUnit_Framework_TestCase $test:
PHPUnit_Framework_TestResult $result:
string $stdout:
string $stderr:
protected function processChildResult(PHPUnit_Framework_Test $test, PHPUnit_Framework_TestResult $result, $stdout, $stderr) {
$time = 0;
if (!empty($stderr)) {
$result
->addError($test, new PHPUnit_Framework_Exception(trim($stderr)), $time);
}
else {
set_error_handler(function ($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, $errno, $errno, $errfile, $errline);
});
try {
$childResult = unserialize($stdout);
restore_error_handler();
} catch (ErrorException $e) {
restore_error_handler();
$childResult = FALSE;
$result
->addError($test, new PHPUnit_Framework_Exception(trim($stdout), 0, $e), $time);
}
if ($childResult !== FALSE) {
if (!empty($childResult['output'])) {
print $childResult['output'];
}
$test
->setResult($childResult['testResult']);
$test
->addToAssertionCount($childResult['numAssertions']);
$childResult = $childResult['result'];
if ($result
->getCollectCodeCoverageInformation()) {
$result
->getCodeCoverage()
->merge($childResult
->getCodeCoverage());
}
$time = $childResult
->time();
$notImplemented = $childResult
->notImplemented();
$skipped = $childResult
->skipped();
$errors = $childResult
->errors();
$failures = $childResult
->failures();
if (!empty($notImplemented)) {
$result
->addError($test, $this
->getException($notImplemented[0]), $time);
}
else {
if (!empty($skipped)) {
$result
->addError($test, $this
->getException($skipped[0]), $time);
}
else {
if (!empty($errors)) {
$result
->addError($test, $this
->getException($errors[0]), $time);
}
else {
if (!empty($failures)) {
$result
->addFailure($test, $this
->getException($failures[0]), $time);
}
}
}
}
}
}
$result
->endTest($test, $time);
}