1
0
mirror of https://github.com/Seldaek/monolog.git synced 2025-08-01 10:50:21 +02:00

Avoid leaving an error handler dangling

This commit is contained in:
Jordi Boggiano
2019-09-05 14:47:40 +02:00
parent 40cce3ba0b
commit 0f39561898

View File

@@ -28,18 +28,26 @@ class ErrorHandlerTest extends \PHPUnit\Framework\TestCase
$logger = new Logger('test', [$handler = new TestHandler]);
$errHandler = new ErrorHandler($logger);
$resHandler = $errHandler->registerErrorHandler([E_USER_NOTICE => Logger::EMERGENCY], false);
$this->assertSame($errHandler, $resHandler);
trigger_error('Foo', E_USER_ERROR);
$this->assertCount(1, $handler->getRecords());
$this->assertTrue($handler->hasErrorRecords());
trigger_error('Foo', E_USER_NOTICE);
$this->assertCount(2, $handler->getRecords());
$this->assertTrue($handler->hasEmergencyRecords());
$phpunitHandler = set_error_handler($prevHandler = function() {});
$errHandler->registerErrorHandler([], true);
$prop = $this->getPrivatePropertyValue($errHandler, 'previousErrorHandler');
$this->assertTrue(is_callable($prop));
try {
$errHandler->registerErrorHandler([], true);
$prop = $this->getPrivatePropertyValue($errHandler, 'previousErrorHandler');
$this->assertTrue(is_callable($prop));
$this->assertSame($prevHandler, $prop);
$resHandler = $errHandler->registerErrorHandler([E_USER_NOTICE => Logger::EMERGENCY], false);
$this->assertSame($errHandler, $resHandler);
trigger_error('Foo', E_USER_ERROR);
$this->assertCount(1, $handler->getRecords());
$this->assertTrue($handler->hasErrorRecords());
trigger_error('Foo', E_USER_NOTICE);
$this->assertCount(2, $handler->getRecords());
$this->assertTrue($handler->hasEmergencyRecords());
} finally {
// restore previous handler
set_error_handler($phpunitHandler);
}
}
public function fatalHandlerProvider()