[ErrorHandler] Apply php8 fixes from Debug component.

This commit is contained in:
Alexander M. Turek 2020-05-22 21:58:53 +02:00
parent 6d7c696742
commit 54f18698af
2 changed files with 33 additions and 11 deletions

View File

@ -91,9 +91,14 @@ class ErrorHandlerTest extends TestCase
$this->fail('ErrorException expected'); $this->fail('ErrorException expected');
} catch (\ErrorException $exception) { } catch (\ErrorException $exception) {
// if an exception is thrown, the test passed // if an exception is thrown, the test passed
$this->assertEquals(E_NOTICE, $exception->getSeverity()); if (\PHP_VERSION_ID < 80000) {
$this->assertEquals(E_NOTICE, $exception->getSeverity());
$this->assertRegExp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage());
} else {
$this->assertEquals(E_WARNING, $exception->getSeverity());
$this->assertRegExp('/^Warning: Undefined variable \$(foo|bar)/', $exception->getMessage());
}
$this->assertEquals(__FILE__, $exception->getFile()); $this->assertEquals(__FILE__, $exception->getFile());
$this->assertRegExp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage());
$trace = $exception->getTrace(); $trace = $exception->getTrace();
@ -121,7 +126,7 @@ class ErrorHandlerTest extends TestCase
public function testFailureCall() public function testFailureCall()
{ {
$this->expectException(\ErrorException::class); $this->expectException(\ErrorException::class);
$this->expectExceptionMessage('fopen(unknown.txt): failed to open stream: No such file or directory'); $this->expectExceptionMessageMatches('/^fopen\(unknown\.txt\): [Ff]ailed to open stream: No such file or directory$/');
ErrorHandler::call('fopen', 'unknown.txt', 'r'); ErrorHandler::call('fopen', 'unknown.txt', 'r');
} }
@ -149,9 +154,14 @@ class ErrorHandlerTest extends TestCase
$this->fail('An \ErrorException should have been raised'); $this->fail('An \ErrorException should have been raised');
} catch (\ErrorException $e) { } catch (\ErrorException $e) {
$trace = $e->getTrace(); $trace = $e->getTrace();
$this->assertSame(E_NOTICE, $e->getSeverity()); if (\PHP_VERSION_ID < 80000) {
$this->assertEquals(E_NOTICE, $e->getSeverity());
$this->assertSame('Undefined variable: foo', $e->getMessage());
} else {
$this->assertEquals(E_WARNING, $e->getSeverity());
$this->assertSame('Undefined variable $foo', $e->getMessage());
}
$this->assertSame(__FILE__, $e->getFile()); $this->assertSame(__FILE__, $e->getFile());
$this->assertSame('Undefined variable: foo', $e->getMessage());
$this->assertSame(0, $e->getCode()); $this->assertSame(0, $e->getCode());
$this->assertSame('Symfony\Component\ErrorHandler\{closure}', $trace[0]['function']); $this->assertSame('Symfony\Component\ErrorHandler\{closure}', $trace[0]['function']);
$this->assertSame(ErrorHandler::class, $trace[0]['class']); $this->assertSame(ErrorHandler::class, $trace[0]['class']);
@ -288,11 +298,18 @@ class ErrorHandlerTest extends TestCase
$line = null; $line = null;
$logArgCheck = function ($level, $message, $context) use (&$line) { $logArgCheck = function ($level, $message, $context) use (&$line) {
$this->assertEquals('Notice: Undefined variable: undefVar', $message);
$this->assertArrayHasKey('exception', $context); $this->assertArrayHasKey('exception', $context);
$exception = $context['exception']; $exception = $context['exception'];
if (\PHP_VERSION_ID < 80000) {
$this->assertEquals('Notice: Undefined variable: undefVar', $message);
$this->assertSame(E_NOTICE, $exception->getSeverity());
} else {
$this->assertEquals('Warning: Undefined variable $undefVar', $message);
$this->assertSame(E_WARNING, $exception->getSeverity());
}
$this->assertInstanceOf(SilencedErrorContext::class, $exception); $this->assertInstanceOf(SilencedErrorContext::class, $exception);
$this->assertSame(E_NOTICE, $exception->getSeverity());
$this->assertSame(__FILE__, $exception->getFile()); $this->assertSame(__FILE__, $exception->getFile());
$this->assertSame($line, $exception->getLine()); $this->assertSame($line, $exception->getLine());
$this->assertNotEmpty($exception->getTrace()); $this->assertNotEmpty($exception->getTrace());
@ -306,8 +323,13 @@ class ErrorHandlerTest extends TestCase
; ;
$handler = ErrorHandler::register(); $handler = ErrorHandler::register();
$handler->setDefaultLogger($logger, E_NOTICE); if (\PHP_VERSION_ID < 80000) {
$handler->screamAt(E_NOTICE); $handler->setDefaultLogger($logger, E_NOTICE);
$handler->screamAt(E_NOTICE);
} else {
$handler->setDefaultLogger($logger, E_WARNING);
$handler->screamAt(E_WARNING);
}
unset($undefVar); unset($undefVar);
$line = __LINE__ + 1; $line = __LINE__ + 1;
@$undefVar++; @$undefVar++;

View File

@ -15,8 +15,8 @@ class ErrorHandlerThatUsesThePreviousOne
return $handler; return $handler;
} }
public function handleError($type, $message, $file, $line, $context) public function handleError()
{ {
return \call_user_func(self::$previous, $type, $message, $file, $line, $context); return \call_user_func_array(self::$previous, \func_get_args());
} }
} }