From 6bf619d5f18be92037f394c20ff5e2566d37387e Mon Sep 17 00:00:00 2001
From: "kunal.sachdev" <kunal.sachdev@3685163.no-reply.drupal.org>
Date: Tue, 15 Nov 2022 02:01:15 +0000
Subject: [PATCH] Issue #3318313 by kunal.sachdev, tedbow: Make
 OverwriteExistingPackagesValidatorTest fixture-less

---
 .../active/vendor/composer/installed.json     |  6 --
 .../active/vendor/composer/installed.php      | 12 ----
 .../modules/module_1/module_1.info.yml.hide   |  1 -
 .../modules/module_2/module_2.info.yml.hide   |  1 -
 .../modules/module_3/module_3.info.yml.hide   |  1 -
 .../module_5_different_path.info.yml.hide     |  1 -
 .../staged/vendor/composer/installed.json     | 32 ---------
 .../staged/vendor/composer/installed.php      | 35 ----------
 ...OverwriteExistingPackagesValidatorTest.php | 68 ++++++++++++++-----
 9 files changed, 50 insertions(+), 107 deletions(-)
 delete mode 100644 package_manager/tests/fixtures/overwrite_existing_validation/active/vendor/composer/installed.json
 delete mode 100644 package_manager/tests/fixtures/overwrite_existing_validation/active/vendor/composer/installed.php
 delete mode 100644 package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_1/module_1.info.yml.hide
 delete mode 100644 package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_2/module_2.info.yml.hide
 delete mode 100644 package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_3/module_3.info.yml.hide
 delete mode 100644 package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_5_different_path/module_5_different_path.info.yml.hide
 delete mode 100644 package_manager/tests/fixtures/overwrite_existing_validation/staged/vendor/composer/installed.json
 delete mode 100644 package_manager/tests/fixtures/overwrite_existing_validation/staged/vendor/composer/installed.php

diff --git a/package_manager/tests/fixtures/overwrite_existing_validation/active/vendor/composer/installed.json b/package_manager/tests/fixtures/overwrite_existing_validation/active/vendor/composer/installed.json
deleted file mode 100644
index 8c0d9b4f68..0000000000
--- a/package_manager/tests/fixtures/overwrite_existing_validation/active/vendor/composer/installed.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "_readme": [
-    "See \\Drupal\\Tests\\package_manager\\Kernel\\OverwriteExistingPackagesValidatorTest::testNewPackagesOverwriteExisting()."
-  ],
-  "packages": []
-}
diff --git a/package_manager/tests/fixtures/overwrite_existing_validation/active/vendor/composer/installed.php b/package_manager/tests/fixtures/overwrite_existing_validation/active/vendor/composer/installed.php
deleted file mode 100644
index 7c0185fa90..0000000000
--- a/package_manager/tests/fixtures/overwrite_existing_validation/active/vendor/composer/installed.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-
-/**
- * @file
- * Simulates that no packages are installed by Composer.
- *
- * @see \Drupal\Tests\package_manager\Kernel\OverwriteExistingPackagesValidatorTest::testNewPackagesOverwriteExisting()
- */
-
-return [
-  'versions' => [],
-];
diff --git a/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_1/module_1.info.yml.hide b/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_1/module_1.info.yml.hide
deleted file mode 100644
index ab706bde15..0000000000
--- a/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_1/module_1.info.yml.hide
+++ /dev/null
@@ -1 +0,0 @@
-project: module_1
diff --git a/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_2/module_2.info.yml.hide b/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_2/module_2.info.yml.hide
deleted file mode 100644
index e6bd53b3dc..0000000000
--- a/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_2/module_2.info.yml.hide
+++ /dev/null
@@ -1 +0,0 @@
-project: module_2
diff --git a/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_3/module_3.info.yml.hide b/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_3/module_3.info.yml.hide
deleted file mode 100644
index 6bdc02f113..0000000000
--- a/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_3/module_3.info.yml.hide
+++ /dev/null
@@ -1 +0,0 @@
-project: module_3
diff --git a/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_5_different_path/module_5_different_path.info.yml.hide b/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_5_different_path/module_5_different_path.info.yml.hide
deleted file mode 100644
index f0d0718218..0000000000
--- a/package_manager/tests/fixtures/overwrite_existing_validation/staged/modules/module_5_different_path/module_5_different_path.info.yml.hide
+++ /dev/null
@@ -1 +0,0 @@
-project: module_5_different_path
diff --git a/package_manager/tests/fixtures/overwrite_existing_validation/staged/vendor/composer/installed.json b/package_manager/tests/fixtures/overwrite_existing_validation/staged/vendor/composer/installed.json
deleted file mode 100644
index 258a6d5745..0000000000
--- a/package_manager/tests/fixtures/overwrite_existing_validation/staged/vendor/composer/installed.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "_readme": [
-    "See \\Drupal\\Tests\\package_manager\\Kernel\\OverwriteExistingPackagesValidatorTest::testNewPackagesOverwriteExisting()."
-  ],
-  "packages": [
-    {
-      "name": "drupal/module_1",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "drupal/module_2",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "drupal/module_3",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "drupal/module_4",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    },
-    {
-      "name": "drupal/module_5",
-      "version": "1.3.0",
-      "type": "drupal-module"
-    }
-  ]
-}
diff --git a/package_manager/tests/fixtures/overwrite_existing_validation/staged/vendor/composer/installed.php b/package_manager/tests/fixtures/overwrite_existing_validation/staged/vendor/composer/installed.php
deleted file mode 100644
index 04afd79ef3..0000000000
--- a/package_manager/tests/fixtures/overwrite_existing_validation/staged/vendor/composer/installed.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * @file
- * Simulates several modules installed by Composer.
- *
- * @see \Drupal\Tests\package_manager\Kernel\OverwriteExistingPackagesValidatorTest::testNewPackagesOverwriteExisting()
- */
-
-$modules_dir = __DIR__ . '/../../modules';
-
-return [
-  'versions' => [
-    'drupal/module_1' => [
-      'type' => 'drupal-module',
-      'install_path' => $modules_dir . '/module_1',
-    ],
-    'drupal/module_2' => [
-      'type' => 'drupal-module',
-      'install_path' => $modules_dir . '/module_2',
-    ],
-    'drupal/module_3' => [
-      'type' => 'drupal-module',
-      'install_path' => $modules_dir . '/module_3',
-    ],
-    'drupal/module_4' => [
-      'type' => 'drupal-module',
-      'install_path' => $modules_dir . '/module_1',
-    ],
-    'drupal/module_5' => [
-      'type' => 'drupal-module',
-      'install_path' => $modules_dir . '/module_5_different_path',
-    ],
-  ],
-];
diff --git a/package_manager/tests/src/Kernel/OverwriteExistingPackagesValidatorTest.php b/package_manager/tests/src/Kernel/OverwriteExistingPackagesValidatorTest.php
index b8ba5daa15..39dc274cfb 100644
--- a/package_manager/tests/src/Kernel/OverwriteExistingPackagesValidatorTest.php
+++ b/package_manager/tests/src/Kernel/OverwriteExistingPackagesValidatorTest.php
@@ -4,6 +4,7 @@ namespace Drupal\Tests\package_manager\Kernel;
 
 use Drupal\package_manager\Exception\StageValidationException;
 use Drupal\package_manager\ValidationResult;
+use Drupal\Tests\package_manager\Traits\FixtureUtilityTrait;
 
 /**
  * @covers \Drupal\package_manager\Validator\OverwriteExistingPackagesValidator
@@ -12,6 +13,8 @@ use Drupal\package_manager\ValidationResult;
  */
 class OverwriteExistingPackagesValidatorTest extends PackageManagerKernelTestBase {
 
+  use FixtureUtilityTrait;
+
   /**
    * {@inheritdoc}
    */
@@ -27,32 +30,60 @@ class OverwriteExistingPackagesValidatorTest extends PackageManagerKernelTestBas
    *
    * The fixture simulates a scenario where the active directory has three
    * modules installed: module_1, module_2, and module_5. None of them are
-   * managed by Composer.
-   *
-   * The staging area has four modules: module_1, module_2, module_3, and
-   * module_5_different_path. All of them are managed by Composer. We expect the
-   * following outcomes:
-   *
-   * - module_1 and module_2 will raise errors because they would overwrite
-   *   non-Composer managed paths in the active directory.
-   * - module_3 will cause no problems, since it doesn't exist in the active
-   *   directory at all.
-   * - module_4, which is defined only in the staged installed.json and
-   *   installed.php, will cause an error because its path collides with
-   *   module_1.
-   * - module_5_different_path will not cause a problem, even though its package
-   *   name is drupal/module_5, because its project name and path in the staging
-   *   area differ from the active directory.
+   * managed by Composer. These modules will be moved into the staging directory
+   * by the 'package_manager_bypass' module.
    */
   public function testNewPackagesOverwriteExisting(): void {
     $fixtures_dir = __DIR__ . '/../../fixtures/overwrite_existing_validation';
     $this->copyFixtureFolderToActiveDirectory("$fixtures_dir/active");
-    $this->copyFixtureFolderToStageDirectoryOnApply("$fixtures_dir/staged");
 
     $stage = $this->createStage();
     $stage->create();
-    $stage->require(['drupal/core:9.8.1']);
+    $stage_dir = $stage->getStageDirectory();
 
+    // module_1 and module_2 will raise errors because they would overwrite
+    // non-Composer managed paths in the active directory.
+    $this->addPackage($stage_dir, [
+      'name' => 'drupal/module_1',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+      'install_path' => '../../modules/module_1',
+    ]);
+    $this->addPackage($stage_dir, [
+      'name' => 'drupal/module_2',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+      'install_path' => '../../modules/module_2',
+    ]);
+
+    // module_3 will cause no problems, since it doesn't exist in the active
+    // directory at all.
+    $this->addPackage($stage_dir, [
+      'name' => 'drupal/module_3',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+      'install_path' => '../../modules/module_3',
+    ]);
+
+    // module_4 doesn't exist in the active directory but the 'install_path' as
+    // known to Composer in the staged directory collides with module_1 in the
+    // active directory which will cause an error.
+    $this->addPackage($stage_dir, [
+      'name' => 'drupal/module_4',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+      'install_path' => '../../modules/module_1',
+    ]);
+
+    // module_5_different_path will not cause a problem, even though its package
+    // name is drupal/module_5, because its project name and path in the staging
+    // area differ from the active directory.
+    $this->addPackage($stage_dir, [
+      'name' => 'drupal/module_5',
+      'version' => '1.3.0',
+      'type' => 'drupal-module',
+      'install_path' => '../../modules/module_5_different_path',
+    ]);
     $expected_results = [
       ValidationResult::createError([
         'The new package drupal/module_1 will be installed in the directory /vendor/composer/../../modules/module_1, which already exists but is not managed by Composer.',
@@ -65,6 +96,7 @@ class OverwriteExistingPackagesValidatorTest extends PackageManagerKernelTestBas
       ]),
     ];
 
+    $stage->require(['drupal/core:9.8.1']);
     try {
       $stage->apply();
       // If no exception occurs, ensure we weren't expecting any errors.
-- 
GitLab