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 {
@@ -341,16 +342,23 @@ private function displayDeprecations($groups, $configuration, $isFailing)
341342
342343 private static function getPhpUnitErrorHandler ()
343344 {
344- if (!isset (self ::$ isAtLeastPhpUnit83 )) {
345- self ::$ isAtLeastPhpUnit83 = class_exists (ErrorHandler::class) && method_exists (ErrorHandler::class, '__invoke ' );
345+ if (!$ eh = self ::$ errorHandler ) {
346+ if (class_exists (Handler::class)) {
347+ $ eh = self ::$ errorHandler = Handler::class;
348+ } elseif (method_exists (ErrorHandler::class, '__invoke ' )) {
349+ $ eh = self ::$ errorHandler = ErrorHandler::class;
350+ } else {
351+ return self ::$ errorHandler = 'PHPUnit\Util\ErrorHandler::handleError ' ;
352+ }
346353 }
347- if (!self ::$ isAtLeastPhpUnit83 ) {
348- return 'PHPUnit\Util\ErrorHandler::handleError ' ;
354+
355+ if ('PHPUnit\Util\ErrorHandler::handleError ' === $ eh ) {
356+ return $ eh ;
349357 }
350358
351359 foreach (debug_backtrace (\DEBUG_BACKTRACE_PROVIDE_OBJECT | \DEBUG_BACKTRACE_IGNORE_ARGS ) as $ frame ) {
352360 if (isset ($ frame ['object ' ]) && $ frame ['object ' ] instanceof TestResult) {
353- return new ErrorHandler (
361+ return new $ eh (
354362 $ frame ['object ' ]->getConvertDeprecationsToExceptions (),
355363 $ frame ['object ' ]->getConvertErrorsToExceptions (),
356364 $ frame ['object ' ]->getConvertNoticesToExceptions (),
0 commit comments