From fa75661e206692e3419d8c96b7fda8b700b92951 Mon Sep 17 00:00:00 2001 From: omkar podey <58183-omkar.podey@users.noreply.drupalcode.org> Date: Mon, 10 Apr 2023 12:45:31 +0000 Subject: [PATCH] Issue #3352731 by omkar.podey: Remove need for VersionPolicyValidator to know about specific core packages --- package_manager/src/InstalledPackagesList.php | 10 +++++++++- .../tests/src/Unit/InstalledPackagesListTest.php | 8 ++++++++ src/Validator/VersionPolicyValidator.php | 4 +--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/package_manager/src/InstalledPackagesList.php b/package_manager/src/InstalledPackagesList.php index abd7628cf9..499c73120f 100644 --- a/package_manager/src/InstalledPackagesList.php +++ b/package_manager/src/InstalledPackagesList.php @@ -156,10 +156,14 @@ final class InstalledPackagesList extends \ArrayObject { * * Packages returned by ::getCorePackageList() are considered core packages. * + * @param bool $include_dev + * (optional) Whether to include core packages intended for development. + * Defaults to TRUE. + * * @return static * A list of the installed core packages. */ - public function getCorePackages(): static { + public function getCorePackages(bool $include_dev = TRUE): static { $core_packages = array_intersect_key( $this->getArrayCopy(), array_flip(static::getCorePackageList()) @@ -170,6 +174,10 @@ final class InstalledPackagesList extends \ArrayObject { if (array_key_exists('drupal/core-recommended', $core_packages)) { unset($core_packages['drupal/core']); } + if (!$include_dev) { + unset($core_packages['drupal/core-dev']); + unset($core_packages['drupal/core-dev-pinned']); + } return new static($core_packages); } diff --git a/package_manager/tests/src/Unit/InstalledPackagesListTest.php b/package_manager/tests/src/Unit/InstalledPackagesListTest.php index 247bb0f065..3bd49e8ec5 100644 --- a/package_manager/tests/src/Unit/InstalledPackagesListTest.php +++ b/package_manager/tests/src/Unit/InstalledPackagesListTest.php @@ -139,6 +139,14 @@ class InstalledPackagesListTest extends UnitTestCase { $list = new InstalledPackagesList($data); $this->assertArrayNotHasKey('drupal/not-core', $list->getCorePackages()); + // Tests that we don't get core packages intended for development when + // include_dev is set to FALSE. + $core_packages_no_dev = $list->getCorePackages(FALSE); + $this->assertArrayNotHasKey('drupal/core-dev', $core_packages_no_dev); + $this->assertArrayNotHasKey('drupal/core-dev-pinned', $core_packages_no_dev); + // We still get other packages as intended. + $this->assertArrayHasKey('drupal/core', $core_packages_no_dev); + // If drupal/core-recommended is in the list, it should supersede // drupal/core. $this->assertArrayHasKey('drupal/core', $list->getCorePackages()); diff --git a/src/Validator/VersionPolicyValidator.php b/src/Validator/VersionPolicyValidator.php index bbba0577f7..197c8ea7be 100644 --- a/src/Validator/VersionPolicyValidator.php +++ b/src/Validator/VersionPolicyValidator.php @@ -277,10 +277,8 @@ final class VersionPolicyValidator implements EventSubscriberInterface { $project_root = $this->pathLocator->getProjectRoot(); $core_packages = $this->composerInspector->getInstalledPackagesList($project_root) - ->getCorePackages() + ->getCorePackages(FALSE) ->getArrayCopy(); - unset($core_packages['drupal/core-dev']); - unset($core_packages['drupal/core-dev-pinned']); return key($core_packages) ?? FALSE; } -- GitLab