Add test for HHVM FatalErrors
This commit is contained in:
parent
445de5e828
commit
9f346a5a8d
@ -64,6 +64,9 @@ class DebugClassLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
if (PHP_VERSION_ID >= 70000) {
|
if (PHP_VERSION_ID >= 70000) {
|
||||||
$this->markTestSkipped('PHP7 throws exceptions, unsilencing is not required anymore.');
|
$this->markTestSkipped('PHP7 throws exceptions, unsilencing is not required anymore.');
|
||||||
}
|
}
|
||||||
|
if (defined('HHVM_VERSION')) {
|
||||||
|
$this->markTestSkipped('HHVM is not handled in this test case.');
|
||||||
|
}
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@ -86,6 +89,9 @@ class DebugClassLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
if (class_exists('Symfony\Component\Debug\Exception\ContextErrorException', false)) {
|
if (class_exists('Symfony\Component\Debug\Exception\ContextErrorException', false)) {
|
||||||
$this->markTestSkipped('The ContextErrorException class is already loaded.');
|
$this->markTestSkipped('The ContextErrorException class is already loaded.');
|
||||||
}
|
}
|
||||||
|
if (defined('HHVM_VERSION')) {
|
||||||
|
$this->markTestSkipped('HHVM is not handled in this test case.');
|
||||||
|
}
|
||||||
|
|
||||||
ErrorHandler::register();
|
ErrorHandler::register();
|
||||||
|
|
||||||
|
@ -393,6 +393,52 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testHandleFatalErrorOnHHVM()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$handler = ErrorHandler::register();
|
||||||
|
|
||||||
|
$logger = $this->getMock('Psr\Log\LoggerInterface');
|
||||||
|
$logger
|
||||||
|
->expects($this->once())
|
||||||
|
->method('log')
|
||||||
|
->with(
|
||||||
|
$this->equalTo(LogLevel::EMERGENCY),
|
||||||
|
$this->equalTo('Fatal Error: foo'),
|
||||||
|
$this->equalTo(array(
|
||||||
|
'type' => 1,
|
||||||
|
'file' => 'bar',
|
||||||
|
'line' => 123,
|
||||||
|
'level' => -1,
|
||||||
|
'stack' => array(456),
|
||||||
|
))
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
$handler->setDefaultLogger($logger, E_ERROR);
|
||||||
|
|
||||||
|
$error = array(
|
||||||
|
'type' => E_ERROR + 0x1000000, // This error level is used by HHVM for fatal errors
|
||||||
|
'message' => 'foo',
|
||||||
|
'file' => 'bar',
|
||||||
|
'line' => 123,
|
||||||
|
'context' => array(123),
|
||||||
|
'backtrace' => array(456),
|
||||||
|
);
|
||||||
|
|
||||||
|
call_user_func_array(array($handler, 'handleError'), $error);
|
||||||
|
$handler->handleFatalError($error);
|
||||||
|
|
||||||
|
restore_error_handler();
|
||||||
|
restore_exception_handler();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
restore_error_handler();
|
||||||
|
restore_exception_handler();
|
||||||
|
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group legacy
|
* @group legacy
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user