mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-02 03:10:15 +02:00
Avoid leaving an error handler dangling
This commit is contained in:
@@ -28,18 +28,26 @@ class ErrorHandlerTest extends \PHPUnit\Framework\TestCase
|
|||||||
$logger = new Logger('test', [$handler = new TestHandler]);
|
$logger = new Logger('test', [$handler = new TestHandler]);
|
||||||
$errHandler = new ErrorHandler($logger);
|
$errHandler = new ErrorHandler($logger);
|
||||||
|
|
||||||
$resHandler = $errHandler->registerErrorHandler([E_USER_NOTICE => Logger::EMERGENCY], false);
|
$phpunitHandler = set_error_handler($prevHandler = function() {});
|
||||||
$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());
|
|
||||||
|
|
||||||
$errHandler->registerErrorHandler([], true);
|
try {
|
||||||
$prop = $this->getPrivatePropertyValue($errHandler, 'previousErrorHandler');
|
$errHandler->registerErrorHandler([], true);
|
||||||
$this->assertTrue(is_callable($prop));
|
$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()
|
public function fatalHandlerProvider()
|
||||||
|
Reference in New Issue
Block a user