From ffdec62d3e46868ba9b01ee85af38652df754581 Mon Sep 17 00:00:00 2001
From: catch <6915-catch@users.noreply.drupalcode.org>
Date: Fri, 13 Sep 2024 16:23:26 +0100
Subject: [PATCH] Issue #3471425 by mondrake: Method getMockForAbstractClass()
 of class PHPUnit\Framework\TestCase is deprecated in PHPUnit 10 - replace in
 class LockBackendAbstractTest

---
 core/.phpstan-baseline.php                    |  6 ---
 .../Core/Lock/LockBackendAbstractTest.php     | 10 +++--
 .../Core/Lock/StubLockBackendAbstract.php     | 40 +++++++++++++++++++
 3 files changed, 46 insertions(+), 10 deletions(-)
 create mode 100644 core/tests/Drupal/Tests/Core/Lock/StubLockBackendAbstract.php

diff --git a/core/.phpstan-baseline.php b/core/.phpstan-baseline.php
index db57ef7a9c5b..2cd5515acb71 100644
--- a/core/.phpstan-baseline.php
+++ b/core/.phpstan-baseline.php
@@ -2578,12 +2578,6 @@
 	'count' => 1,
 	'path' => __DIR__ . '/tests/Drupal/Tests/Core/Http/ClientFactoryTest.php',
 ];
-$ignoreErrors[] = [
-	// identifier: method.deprecated
-	'message' => '#^Call to deprecated method getMockForAbstractClass\\(\\) of class PHPUnit\\\\Framework\\\\TestCase\\.$#',
-	'count' => 1,
-	'path' => __DIR__ . '/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php',
-];
 $ignoreErrors[] = [
 	// identifier: class.notFound
 	'message' => '#^Call to method getDefinitions\\(\\) on an unknown class Drupal\\\\Core\\\\Plugin\\\\CategorizingPluginManagerTrait\\.$#',
diff --git a/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php b/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
index 8796ed8b6a11..bdf7084e78ec 100644
--- a/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
+++ b/core/tests/Drupal/Tests/Core/Lock/LockBackendAbstractTest.php
@@ -4,7 +4,9 @@
 
 namespace Drupal\Tests\Core\Lock;
 
+use Drupal\Core\Lock\LockBackendAbstract;
 use Drupal\Tests\UnitTestCase;
+use PHPUnit\Framework\MockObject\MockObject;
 
 /**
  * @coversDefaultClass \Drupal\Tests\Core\Lock\LockBackendAbstractTest
@@ -14,10 +16,8 @@ class LockBackendAbstractTest extends UnitTestCase {
 
   /**
    * The Mocked LockBackendAbstract object.
-   *
-   * @var \Drupal\Core\Lock\LockBackendAbstract|\PHPUnit\Framework\MockObject\MockObject
    */
-  protected $lock;
+  protected LockBackendAbstract&MockObject $lock;
 
   /**
    * {@inheritdoc}
@@ -25,7 +25,9 @@ class LockBackendAbstractTest extends UnitTestCase {
   protected function setUp(): void {
     parent::setUp();
 
-    $this->lock = $this->getMockForAbstractClass('Drupal\Core\Lock\LockBackendAbstract');
+    $this->lock = $this->getMockBuilder(StubLockBackendAbstract::class)
+      ->onlyMethods(['lockMayBeAvailable'])
+      ->getMock();
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Lock/StubLockBackendAbstract.php b/core/tests/Drupal/Tests/Core/Lock/StubLockBackendAbstract.php
new file mode 100644
index 000000000000..3dc7cdb1efe7
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Lock/StubLockBackendAbstract.php
@@ -0,0 +1,40 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Drupal\Tests\Core\Lock;
+
+use Drupal\Core\Lock\LockBackendAbstract;
+
+/**
+ * A stub of the abstract LockBackendAbstract class for testing purposes.
+ */
+class StubLockBackendAbstract extends LockBackendAbstract {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function acquire($name, $timeout = 30.0): bool {
+    return TRUE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function lockMayBeAvailable($name): bool {
+    throw new \LogicException(__METHOD__ . '() is not implemented.');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function release($name): void {
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function releaseAll($lockId = NULL): void {
+  }
+
+}
-- 
GitLab