From 6ea019e84898fe858fb9908ad2219cbd88877b6c Mon Sep 17 00:00:00 2001
From: phenaproxima <phenaproxima@205645.no-reply.drupal.org>
Date: Fri, 4 Feb 2022 17:58:33 +0000
Subject: [PATCH] Issue #3262542 by phenaproxima: Make
 AutomaticUpdatesKernelTestBase extend PackageManagerKernelTestBase

---
 .../Kernel/AutomaticUpdatesKernelTestBase.php | 30 +++++--------------
 tests/src/Kernel/CronUpdaterTest.php          |  2 --
 .../CronFrequencyValidatorTest.php            |  6 +---
 .../ReadinessValidationManagerTest.php        |  2 --
 .../SettingsValidatorTest.php                 |  6 +---
 .../StagedDatabaseUpdateValidatorTest.php     |  8 ++---
 .../StagedProjectsValidatorTest.php           |  6 +---
 .../UpdateVersionValidatorTest.php            |  6 +---
 tests/src/Kernel/UpdaterTest.php              |  3 --
 9 files changed, 13 insertions(+), 56 deletions(-)

diff --git a/tests/src/Kernel/AutomaticUpdatesKernelTestBase.php b/tests/src/Kernel/AutomaticUpdatesKernelTestBase.php
index f5a54a676d..2721388e30 100644
--- a/tests/src/Kernel/AutomaticUpdatesKernelTestBase.php
+++ b/tests/src/Kernel/AutomaticUpdatesKernelTestBase.php
@@ -4,9 +4,9 @@ namespace Drupal\Tests\automatic_updates\Kernel;
 
 use Drupal\automatic_updates\CronUpdater;
 use Drupal\Core\DependencyInjection\ContainerBuilder;
-use Drupal\KernelTests\KernelTestBase;
 use Drupal\package_manager\Exception\StageValidationException;
 use Drupal\Tests\automatic_updates\Traits\ValidationTestTrait;
+use Drupal\Tests\package_manager\Kernel\PackageManagerKernelTestBase;
 use GuzzleHttp\Client;
 use GuzzleHttp\Handler\MockHandler;
 use GuzzleHttp\HandlerStack;
@@ -16,7 +16,7 @@ use GuzzleHttp\Psr7\Utils;
 /**
  * Base class for kernel tests of the Automatic Updates module.
  */
-abstract class AutomaticUpdatesKernelTestBase extends KernelTestBase {
+abstract class AutomaticUpdatesKernelTestBase extends PackageManagerKernelTestBase {
 
   use ValidationTestTrait;
 
@@ -25,21 +25,6 @@ abstract class AutomaticUpdatesKernelTestBase extends KernelTestBase {
    */
   protected static $modules = ['system', 'update', 'update_test'];
 
-  /**
-   * The service IDs of any validators to disable.
-   *
-   * @var string[]
-   */
-  protected $disableValidators = [
-    // Disable the filesystem permissions validator, since we cannot guarantee
-    // that the current code base will be writable in all testing situations.
-    // We test this validator functionally in our build tests, since those do
-    // give us control over the filesystem permissions.
-    // @see \Drupal\Tests\automatic_updates\Build\CoreUpdateTest::assertReadOnlyFileSystemError()
-    'automatic_updates.validator.file_system_permissions',
-    'package_manager.validator.file_system',
-  ];
-
   /**
    * The mocked HTTP client that returns metadata about available updates.
    *
@@ -56,6 +41,11 @@ abstract class AutomaticUpdatesKernelTestBase extends KernelTestBase {
    * {@inheritdoc}
    */
   protected function setUp(): void {
+    // If Package Manager's file system permissions validator is disabled, also
+    // disable the Automatic Updates validator which wraps it.
+    if (in_array('package_manager.validator.file_system', $this->disableValidators, TRUE)) {
+      $this->disableValidators[] = 'automatic_updates.validator.file_system_permissions';
+    }
     parent::setUp();
 
     // The Update module's default configuration must be installed for our
@@ -107,12 +97,6 @@ abstract class AutomaticUpdatesKernelTestBase extends KernelTestBase {
     if ($this->client) {
       $container->set('http_client', $this->client);
     }
-
-    foreach ($this->disableValidators as $service_id) {
-      if ($container->hasDefinition($service_id)) {
-        $container->getDefinition($service_id)->clearTag('event_subscriber');
-      }
-    }
   }
 
   /**
diff --git a/tests/src/Kernel/CronUpdaterTest.php b/tests/src/Kernel/CronUpdaterTest.php
index 4166e7ba5d..9dd1e07cce 100644
--- a/tests/src/Kernel/CronUpdaterTest.php
+++ b/tests/src/Kernel/CronUpdaterTest.php
@@ -28,8 +28,6 @@ class CronUpdaterTest extends AutomaticUpdatesKernelTestBase {
    */
   protected static $modules = [
     'automatic_updates',
-    'package_manager',
-    'package_manager_bypass',
     'automatic_updates_test',
   ];
 
diff --git a/tests/src/Kernel/ReadinessValidation/CronFrequencyValidatorTest.php b/tests/src/Kernel/ReadinessValidation/CronFrequencyValidatorTest.php
index 25026fba17..e44cc77e34 100644
--- a/tests/src/Kernel/ReadinessValidation/CronFrequencyValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/CronFrequencyValidatorTest.php
@@ -19,11 +19,7 @@ class CronFrequencyValidatorTest extends AutomaticUpdatesKernelTestBase {
   /**
    * {@inheritdoc}
    */
-  protected static $modules = [
-    'automatic_updates',
-    'package_manager',
-    'package_manager_bypass',
-  ];
+  protected static $modules = ['automatic_updates'];
 
   /**
    * Tests that nothing is validated if updates are disabled during cron.
diff --git a/tests/src/Kernel/ReadinessValidation/ReadinessValidationManagerTest.php b/tests/src/Kernel/ReadinessValidation/ReadinessValidationManagerTest.php
index 9957919234..dc86408949 100644
--- a/tests/src/Kernel/ReadinessValidation/ReadinessValidationManagerTest.php
+++ b/tests/src/Kernel/ReadinessValidation/ReadinessValidationManagerTest.php
@@ -22,8 +22,6 @@ class ReadinessValidationManagerTest extends AutomaticUpdatesKernelTestBase {
    */
   protected static $modules = [
     'automatic_updates_test',
-    'package_manager',
-    'package_manager_bypass',
     'user',
   ];
 
diff --git a/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php b/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php
index 90612a6b8b..5358fbdc9c 100644
--- a/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/SettingsValidatorTest.php
@@ -16,11 +16,7 @@ class SettingsValidatorTest extends AutomaticUpdatesKernelTestBase {
   /**
    * {@inheritdoc}
    */
-  protected static $modules = [
-    'automatic_updates',
-    'package_manager',
-    'package_manager_bypass',
-  ];
+  protected static $modules = ['automatic_updates'];
 
   /**
    * Data provider for ::testSettingsValidation().
diff --git a/tests/src/Kernel/ReadinessValidation/StagedDatabaseUpdateValidatorTest.php b/tests/src/Kernel/ReadinessValidation/StagedDatabaseUpdateValidatorTest.php
index 80ae5fb602..248dbca5e1 100644
--- a/tests/src/Kernel/ReadinessValidation/StagedDatabaseUpdateValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/StagedDatabaseUpdateValidatorTest.php
@@ -18,11 +18,7 @@ class StagedDatabaseUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
   /**
    * {@inheritdoc}
    */
-  protected static $modules = [
-    'automatic_updates',
-    'package_manager',
-    'package_manager_bypass',
-  ];
+  protected static $modules = ['automatic_updates'];
 
   /**
    * The suffixes of the files that can contain database updates.
@@ -60,7 +56,7 @@ class StagedDatabaseUpdateValidatorTest extends AutomaticUpdatesKernelTestBase {
     $module_list = $this->container->get('module_handler')->getModuleList();
     foreach ($module_list as $name => $module) {
       $path = $module->getPath();
-      mkdir("$stage_dir/$path", 0777, TRUE);
+      @mkdir("$stage_dir/$path", 0777, TRUE);
 
       foreach (static::SUFFIXES as $suffix) {
         // If the source file doesn't exist, silence the warning it raises.
diff --git a/tests/src/Kernel/ReadinessValidation/StagedProjectsValidatorTest.php b/tests/src/Kernel/ReadinessValidation/StagedProjectsValidatorTest.php
index 1298f45791..8390b8294a 100644
--- a/tests/src/Kernel/ReadinessValidation/StagedProjectsValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/StagedProjectsValidatorTest.php
@@ -21,11 +21,7 @@ class StagedProjectsValidatorTest extends AutomaticUpdatesKernelTestBase {
   /**
    * {@inheritdoc}
    */
-  protected static $modules = [
-    'automatic_updates',
-    'package_manager',
-    'package_manager_bypass',
-  ];
+  protected static $modules = ['automatic_updates'];
 
   /**
    * {@inheritdoc}
diff --git a/tests/src/Kernel/ReadinessValidation/UpdateVersionValidatorTest.php b/tests/src/Kernel/ReadinessValidation/UpdateVersionValidatorTest.php
index 625799b9ca..45cabcfb6b 100644
--- a/tests/src/Kernel/ReadinessValidation/UpdateVersionValidatorTest.php
+++ b/tests/src/Kernel/ReadinessValidation/UpdateVersionValidatorTest.php
@@ -23,11 +23,7 @@ class UpdateVersionValidatorTest extends AutomaticUpdatesKernelTestBase {
   /**
    * {@inheritdoc}
    */
-  protected static $modules = [
-    'automatic_updates',
-    'package_manager',
-    'package_manager_bypass',
-  ];
+  protected static $modules = ['automatic_updates'];
 
   /**
    * The logger for cron updates.
diff --git a/tests/src/Kernel/UpdaterTest.php b/tests/src/Kernel/UpdaterTest.php
index 70fc49e42e..aabf82e587 100644
--- a/tests/src/Kernel/UpdaterTest.php
+++ b/tests/src/Kernel/UpdaterTest.php
@@ -20,9 +20,6 @@ class UpdaterTest extends AutomaticUpdatesKernelTestBase {
   protected static $modules = [
     'automatic_updates',
     'automatic_updates_test',
-    'package_manager',
-    'package_manager_bypass',
-    'system',
     'user',
   ];
 
-- 
GitLab