1212namespace Symfony \Bridge \PhpUnit ;
1313
1414use PHPUnit \Framework \TestResult ;
15+ use PHPUnit \Util \Error \Handler ;
1516use PHPUnit \Util \ErrorHandler ;
1617use Symfony \Bridge \PhpUnit \DeprecationErrorHandler \Configuration ;
1718use Symfony \Bridge \PhpUnit \DeprecationErrorHandler \Deprecation ;
@@ -38,7 +39,7 @@ class DeprecationErrorHandler
3839 private $ deprecationGroups = [];
3940
4041 private static $ isRegistered = false ;
41- private static $ isAtLeastPhpUnit83 ;
42+ private static $ errorHandler ;
4243
4344 public function __construct ()
4445 {
@@ -347,16 +348,23 @@ private function displayDeprecations($groups, $configuration, $isFailing)
347348
348349 private static function getPhpUnitErrorHandler ()
349350 {
350- if (!isset (self ::$ isAtLeastPhpUnit83 )) {
351- self ::$ isAtLeastPhpUnit83 = class_exists (ErrorHandler::class) && method_exists (ErrorHandler::class, '__invoke ' );
351+ if (!$ eh = self ::$ errorHandler ) {
352+ if (class_exists (Handler::class)) {
353+ $ eh = self ::$ errorHandler = Handler::class;
354+ } elseif (method_exists (ErrorHandler::class, '__invoke ' )) {
355+ $ eh = self ::$ errorHandler = ErrorHandler::class;
356+ } else {
357+ return self ::$ errorHandler = 'PHPUnit\Util\ErrorHandler::handleError ' ;
358+ }
352359 }
353- if (!self ::$ isAtLeastPhpUnit83 ) {
354- return 'PHPUnit\Util\ErrorHandler::handleError ' ;
360+
361+ if ('PHPUnit\Util\ErrorHandler::handleError ' === $ eh ) {
362+ return $ eh ;
355363 }
356364
357365 foreach (debug_backtrace (\DEBUG_BACKTRACE_PROVIDE_OBJECT | \DEBUG_BACKTRACE_IGNORE_ARGS ) as $ frame ) {
358366 if (isset ($ frame ['object ' ]) && $ frame ['object ' ] instanceof TestResult) {
359- return new ErrorHandler (
367+ return new $ eh (
360368 $ frame ['object ' ]->getConvertDeprecationsToExceptions (),
361369 $ frame ['object ' ]->getConvertErrorsToExceptions (),
362370 $ frame ['object ' ]->getConvertNoticesToExceptions (),
0 commit comments