From 15b39f02b3bb75b00910c458f1fd5149a71f488c Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Mon, 8 Jun 2020 12:42:38 +0100
Subject: [PATCH] Issue #3143604 by chr.fritsch, Taran2L, longwave, alexpott,
 dungahk: PhpUnitCompatibility\PhpUnit8\ClassWriter cannot detect PHPUnit
 source directory  when running PHPStan check

---
 .../PhpUnitCompatibility/PhpUnit8/ClassWriter.php      | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/ClassWriter.php b/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/ClassWriter.php
index 663a308d091b..063b9ff05bfc 100644
--- a/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/ClassWriter.php
+++ b/core/tests/Drupal/TestTools/PhpUnitCompatibility/PhpUnit8/ClassWriter.php
@@ -23,7 +23,7 @@ private function __construct() {
   /**
    * Mutates the TestCase class from PHPUnit to make it compatible with Drupal.
    *
-   * @param object $autoloader
+   * @param \Composer\Autoload\ClassLoader $autoloader
    *   The autoloader.
    *
    * @throws \ReflectionException
@@ -37,12 +37,12 @@ public static function mutateTestBase($autoloader) {
       return;
     }
     // Inspired by Symfony's simple-phpunit remove typehints from TestCase.
-    $reflector = new \ReflectionClass($autoloader);
-    $vendor_dir = dirname($reflector->getFileName(), 2);
+    $alteredFile = $autoloader->findFile('PHPUnit\Framework\TestCase');
+    $phpunit_dir = dirname($alteredFile, 3);
     // Mutate TestCase code to make it compatible with Drupal 8 and 9 tests.
-    $alteredCode = file_get_contents($alteredFile = $vendor_dir . '/phpunit/phpunit/src/Framework/TestCase.php');
+    $alteredCode = file_get_contents($alteredFile);
     $alteredCode = preg_replace('/^    ((?:protected|public)(?: static)? function \w+\(\)): void/m', '    $1', $alteredCode);
-    $alteredCode = str_replace("__DIR__ . '/../Util/", "'$vendor_dir/phpunit/phpunit/src/Util/", $alteredCode);
+    $alteredCode = str_replace("__DIR__ . '/../Util/", "'$phpunit_dir/src/Util/", $alteredCode);
     $simpletest_directory = __DIR__ . '/../../../../../../sites/simpletest';
     // Only write when necessary.
     $filename = $simpletest_directory . '/TestCase.php';
-- 
GitLab