/**
* Makes the processChildResult inherited method public.
*
* @param \PHPUnit_Framework_Test $test
* @param \PHPUnit_Framework_TestResult $result
* @param string $stdout
* @param string $stderr
* @return void
*/
public 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 {
if (strpos($stdout, "#!/usr/bin/env php\n") === 0) {
$stdout = substr($stdout, 19);
}
$childResult = unserialize(str_replace("#!/usr/bin/env php\n", '', $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();
$risky = $childResult->risky();
$skipped = $childResult->skipped();
$errors = $childResult->errors();
$failures = $childResult->failures();
if (!empty($notImplemented)) {
$result->addError($test, $this->getException($notImplemented[0]), $time);
} elseif (!empty($risky)) {
$result->addError($test, $this->getException($risky[0]), $time);
} elseif (!empty($skipped)) {
$result->addError($test, $this->getException($skipped[0]), $time);
} elseif (!empty($errors)) {
foreach ($errors as $error) {
$result->addError($test, $this->getException($error), $time);
}
} elseif (!empty($failures)) {
foreach ($failures as $failure) {
$result->addFailure($test, $this->getException($failure), $time);
}
}
}
}
$result->endTest($test, $time);
}