bug #15647 [Debug] Ignore silencing for deprecations (nicolas-grekas)
This PR was merged into the 2.7 branch.
Discussion
----------
[Debug] Ignore silencing for deprecations
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #14425
| License | MIT
| Doc PR | -
Since the best practice is now to always silence deprecations, we should ignore the silencing level. This allows collecting the backtrace of deprecations.
Commits
-------
ccb3f56
[Debug] Ignore silencing for deprecations
This commit is contained in:
commit
ce0e99300b
@ -352,7 +352,7 @@ class ErrorHandler
|
|||||||
*/
|
*/
|
||||||
public function handleError($type, $message, $file, $line, array $context, array $backtrace = null)
|
public function handleError($type, $message, $file, $line, array $context, array $backtrace = null)
|
||||||
{
|
{
|
||||||
$level = error_reporting() | E_RECOVERABLE_ERROR | E_USER_ERROR;
|
$level = error_reporting() | E_RECOVERABLE_ERROR | E_USER_ERROR | E_DEPRECATED | E_USER_DEPRECATED;
|
||||||
$log = $this->loggedErrors & $type;
|
$log = $this->loggedErrors & $type;
|
||||||
$throw = $this->thrownErrors & $type & $level;
|
$throw = $this->thrownErrors & $type & $level;
|
||||||
$type &= $level | $this->screamedErrors;
|
$type &= $level | $this->screamedErrors;
|
||||||
|
@ -268,6 +268,28 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testHandleDeprecation()
|
||||||
|
{
|
||||||
|
$that = $this;
|
||||||
|
$logArgCheck = function ($level, $message, $context) use ($that) {
|
||||||
|
$that->assertEquals(LogLevel::INFO, $level);
|
||||||
|
$that->assertArrayHasKey('level', $context);
|
||||||
|
$that->assertEquals(E_RECOVERABLE_ERROR | E_USER_ERROR | E_DEPRECATED | E_USER_DEPRECATED, $context['level']);
|
||||||
|
$that->assertArrayHasKey('stack', $context);
|
||||||
|
};
|
||||||
|
|
||||||
|
$logger = $this->getMock('Psr\Log\LoggerInterface');
|
||||||
|
$logger
|
||||||
|
->expects($this->once())
|
||||||
|
->method('log')
|
||||||
|
->will($this->returnCallback($logArgCheck))
|
||||||
|
;
|
||||||
|
|
||||||
|
$handler = new ErrorHandler();
|
||||||
|
$handler->setDefaultLogger($logger);
|
||||||
|
@$handler->handleError(E_USER_DEPRECATED, 'Foo deprecation', __FILE__, __LINE__, array());
|
||||||
|
}
|
||||||
|
|
||||||
public function testHandleException()
|
public function testHandleException()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
|
Reference in New Issue
Block a user