From 46919be380e6bd00d8464f5db9aaafa92be59388 Mon Sep 17 00:00:00 2001
From: Dave Long <dave@longwaveconsulting.com>
Date: Wed, 7 Aug 2024 17:50:15 +0100
Subject: [PATCH] Issue #3466524 by catch: ModuleConfigureRouteTest is slow

(cherry picked from commit d3b144d302b53aad20a3ede0f68f8910740f2d6d)
---
 .../Extension/ModuleConfigureRouteTest.php    | 34 +++++++++++++------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/core/tests/Drupal/KernelTests/Core/Extension/ModuleConfigureRouteTest.php b/core/tests/Drupal/KernelTests/Core/Extension/ModuleConfigureRouteTest.php
index 0d004a2ef166..b7e5a3f6d8e2 100644
--- a/core/tests/Drupal/KernelTests/Core/Extension/ModuleConfigureRouteTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Extension/ModuleConfigureRouteTest.php
@@ -47,17 +47,24 @@ protected function setUp(): void {
 
   /**
    * Tests if the module configure routes exists.
-   *
-   * @dataProvider coreModuleListDataProvider
    */
-  public function testModuleConfigureRoutes(string $module_name): void {
+  public function testModuleConfigureRoutes(): void {
+    foreach (static::coreModuleListDataProvider() as $module_name => $info) {
+      $this->doTestModuleConfigureRoutes($module_name);
+    }
+  }
+
+  /**
+   * Checks the configure route for a single module.
+   */
+  protected function doTestModuleConfigureRoutes(string $module_name): void {
     $module_info = $this->moduleInfo[$module_name]->info;
     if (!isset($module_info['configure'])) {
-      $this->markTestSkipped("$module_name has no configure route");
+      return;
     }
     $module_lifecycle = $module_info[ExtensionLifecycle::LIFECYCLE_IDENTIFIER];
     if (isset($module_lifecycle) && $module_lifecycle === ExtensionLifecycle::DEPRECATED) {
-      $this->markTestSkipped("$module_name is $module_lifecycle");
+      return;
     }
     $this->container->get('module_installer')->install([$module_name]);
     $this->assertModuleConfigureRoutesExist($module_name, $module_info);
@@ -70,17 +77,24 @@ public function testModuleConfigureRoutes(string $module_name): void {
    * deprecated module doesn't trigger a deprecation notice.
    *
    * @group legacy
-   *
-   * @dataProvider coreModuleListDataProvider
    */
-  public function testDeprecatedModuleConfigureRoutes(string $module_name): void {
+  public function testDeprecatedModuleConfigureRoutes(): void {
+    foreach (static::coreModuleListDataProvider() as $module_name => $info) {
+      $this->doTestDeprecatedModuleConfigureRoutes($module_name);
+    }
+  }
+
+  /**
+   * Check the configure route for a single module.
+   */
+  protected function doTestDeprecatedModuleConfigureRoutes(string $module_name): void {
     $module_info = $this->moduleInfo[$module_name]->info;
     if (!isset($module_info['configure'])) {
-      $this->markTestSkipped("$module_name has no configure route");
+      return;
     }
     $module_lifecycle = $module_info[ExtensionLifecycle::LIFECYCLE_IDENTIFIER];
     if (isset($module_lifecycle) && $module_lifecycle !== ExtensionLifecycle::DEPRECATED) {
-      $this->markTestSkipped("$module_name is not $module_lifecycle");
+      return;
     }
     $this->container->get('module_installer')->install([$module_name]);
     $this->assertModuleConfigureRoutesExist($module_name, $module_info);
-- 
GitLab