From 3cc3fe36dcc9eaa2e6bc957685ecebdec56028fb Mon Sep 17 00:00:00 2001
From: Oliver Klee <typo3-coding@oliverklee.de>
Date: Fri, 11 Aug 2023 16:08:13 +0200
Subject: [PATCH] [TASK] Migrate `getMockForAbstractClass()` calls in
 `EXT:core`

`getMockForAbstractClass` has been (soft-)deprecated in PHPUnit 10.1:
https://github.com/sebastianbergmann/phpunit/issues/5241

Hence, we should replace its usages to follow best practices and
avoid deprecation warnings later with PHPUnit 11.

We do this by creating dedicated fixture subclasses of the affected
abstract classes.

Resolves: #101666
Related: #101601
Releases: main, 12.4
Change-Id: I0263ff7b0639d72ba1d4f30e3bee12276d364591
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80946
Tested-by: Benjamin Franzke <ben@bnf.dev>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Benjamin Franzke <ben@bnf.dev>
---
 .../Collection/FileCollectionRegistryTest.php |  6 ++--
 .../Fixtures/OtherTestingFileCollection.php   | 33 +++++++++++++++++++
 2 files changed, 36 insertions(+), 3 deletions(-)
 create mode 100644 typo3/sysext/core/Tests/Unit/Resource/Collection/Fixtures/OtherTestingFileCollection.php

diff --git a/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php
index 2b5739c728bf..46deb0860e98 100644
--- a/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php
+++ b/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php
@@ -18,7 +18,7 @@ declare(strict_types=1);
 namespace TYPO3\CMS\Core\Tests\Unit\Resource\Collection;
 
 use TYPO3\CMS\Core\Resource\Collection\FileCollectionRegistry;
-use TYPO3\CMS\Core\Resource\Collection\StaticFileCollection;
+use TYPO3\CMS\Core\Tests\Unit\Resource\Collection\Fixtures\OtherTestingFileCollection;
 use TYPO3\CMS\Core\Tests\Unit\Resource\Collection\Fixtures\TestingFileCollection;
 use TYPO3\CMS\Core\Utility\StringUtility;
 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
@@ -70,7 +70,7 @@ final class FileCollectionRegistryTest extends UnitTestCase
         $this->expectExceptionCode(1391295643);
         $subject = new FileCollectionRegistry();
         $className = TestingFileCollection::class;
-        $className2 = get_class($this->getMockForAbstractClass(StaticFileCollection::class));
+        $className2 = OtherTestingFileCollection::class;
         $subject->registerFileCollectionClass($className, 'foobar');
         $subject->registerFileCollectionClass($className2, 'foobar');
     }
@@ -81,7 +81,7 @@ final class FileCollectionRegistryTest extends UnitTestCase
     public function registerFileCollectionClassOverridesExistingRegisteredFileCollectionClass(): void
     {
         $className = TestingFileCollection::class;
-        $className2 = get_class($this->getMockForAbstractClass(StaticFileCollection::class));
+        $className2 = OtherTestingFileCollection::class;
         $subject = new FileCollectionRegistry();
         $subject->registerFileCollectionClass($className, 'foobar');
         $subject->registerFileCollectionClass($className2, 'foobar', true);
diff --git a/typo3/sysext/core/Tests/Unit/Resource/Collection/Fixtures/OtherTestingFileCollection.php b/typo3/sysext/core/Tests/Unit/Resource/Collection/Fixtures/OtherTestingFileCollection.php
new file mode 100644
index 000000000000..95a2db1731f7
--- /dev/null
+++ b/typo3/sysext/core/Tests/Unit/Resource/Collection/Fixtures/OtherTestingFileCollection.php
@@ -0,0 +1,33 @@
+<?php
+
+declare(strict_types=1);
+
+/*
+ * This file is part of the TYPO3 CMS project.
+ *
+ * It is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, either version 2
+ * of the License, or any later version.
+ *
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ *
+ * The TYPO3 project - inspiring people to share!
+ */
+
+namespace TYPO3\CMS\Core\Tests\Unit\Resource\Collection\Fixtures;
+
+use TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection;
+
+/**
+ * Testing subclass of the abstract class.
+ *
+ * This class exists because some tests need instances of different file collection classes.
+ */
+final class OtherTestingFileCollection extends AbstractFileCollection
+{
+    public function loadContents(): void
+    {
+        // stub
+    }
+}
-- 
GitLab