function ErrorHandler::__invoke
Throws
NoTestCaseObjectOnCallStackException
File
-
vendor/
phpunit/ phpunit/ src/ Runner/ ErrorHandler.php, line 59
Class
- ErrorHandler
- @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
Namespace
PHPUnit\RunnerCode
public function __invoke(int $errorNumber, string $errorString, string $errorFile, int $errorLine) : bool {
$suppressed = (error_reporting() & ~self::INSUPPRESSIBLE_LEVELS) === 0;
if ($suppressed && (new ExcludeList())->isExcluded($errorFile)) {
return false;
}
/**
* E_STRICT is deprecated since PHP 8.4.
*
* @see https://github.com/sebastianbergmann/phpunit/issues/5956
*/
if (defined('E_STRICT') && $errorNumber === @E_STRICT) {
$errorNumber = E_NOTICE;
}
$test = Event\Code\TestMethodBuilder::fromCallStack();
$ignoredByBaseline = $this->ignoredByBaseline($errorFile, $errorLine, $errorString);
$ignoredByTest = $test->metadata()
->isIgnoreDeprecations()
->isNotEmpty();
switch ($errorNumber) {
case E_NOTICE:
Event\Facade::emitter()->testTriggeredPhpNotice($test, $errorString, $errorFile, $errorLine, $suppressed, $ignoredByBaseline);
break;
case E_USER_NOTICE:
Event\Facade::emitter()->testTriggeredNotice($test, $errorString, $errorFile, $errorLine, $suppressed, $ignoredByBaseline);
break;
case E_WARNING:
Event\Facade::emitter()->testTriggeredPhpWarning($test, $errorString, $errorFile, $errorLine, $suppressed, $ignoredByBaseline);
break;
case E_USER_WARNING:
Event\Facade::emitter()->testTriggeredWarning($test, $errorString, $errorFile, $errorLine, $suppressed, $ignoredByBaseline);
break;
case E_DEPRECATED:
Event\Facade::emitter()->testTriggeredPhpDeprecation($test, $errorString, $errorFile, $errorLine, $suppressed, $ignoredByBaseline, $ignoredByTest);
break;
case E_USER_DEPRECATED:
Event\Facade::emitter()->testTriggeredDeprecation($test, $errorString, $errorFile, $errorLine, $suppressed, $ignoredByBaseline, $ignoredByTest);
break;
case E_USER_ERROR:
Event\Facade::emitter()->testTriggeredError($test, $errorString, $errorFile, $errorLine, $suppressed);
throw new ErrorException('E_USER_ERROR was triggered');
default:
return false;
}
return false;
}