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