From 50a5f02e2ee0dae6512bb600a9389b2301eb0918 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ga=CC=81bor=20Hojtsy?= <gabor@hojtsy.hu>
Date: Tue, 14 May 2019 15:09:45 +0200
Subject: [PATCH] Issue #3052625 by Mile23, alexpott: DeprecationListenerTrait
 croaks on tests with no results

---
 .../Tests/Listeners/DeprecationListenerTrait.php | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php b/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php
index ef1d94d578eb..9f60b3394d7e 100644
--- a/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php
+++ b/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php
@@ -175,12 +175,16 @@ protected function registerErrorHandler($test) {
     // SymfonyTestsListenerTrait has its own error handler that needs to be
     // removed before this one.
     $test_result_object = $test->getTestResultObject();
-    $reflection_class = new \ReflectionClass($test_result_object);
-    $reflection_property = $reflection_class->getProperty('listeners');
-    $reflection_property->setAccessible(TRUE);
-    $listeners = $reflection_property->getValue($test_result_object);
-    $listeners[] = new AfterSymfonyListener();
-    $reflection_property->setValue($test_result_object, $listeners);
+    // It's possible that a test does not have a result object. This can happen
+    // when a test class does not have any test methods.
+    if ($test_result_object) {
+      $reflection_class = new \ReflectionClass($test_result_object);
+      $reflection_property = $reflection_class->getProperty('listeners');
+      $reflection_property->setAccessible(TRUE);
+      $listeners = $reflection_property->getValue($test_result_object);
+      $listeners[] = new AfterSymfonyListener();
+      $reflection_property->setValue($test_result_object, $listeners);
+    }
   }
 
 }
-- 
GitLab