Skip to content
Snippets Groups Projects
Commit fa75661e authored by omkar podey's avatar omkar podey Committed by Adam G-H
Browse files

Issue #3352731 by omkar.podey: Remove need for VersionPolicyValidator to know...

Issue #3352731 by omkar.podey: Remove need for VersionPolicyValidator to know about specific core packages
parent 74e2380b
No related branches found
No related tags found
No related merge requests found
...@@ -156,10 +156,14 @@ final class InstalledPackagesList extends \ArrayObject { ...@@ -156,10 +156,14 @@ final class InstalledPackagesList extends \ArrayObject {
* *
* Packages returned by ::getCorePackageList() are considered core packages. * 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 * @return static
* A list of the installed core packages. * A list of the installed core packages.
*/ */
public function getCorePackages(): static { public function getCorePackages(bool $include_dev = TRUE): static {
$core_packages = array_intersect_key( $core_packages = array_intersect_key(
$this->getArrayCopy(), $this->getArrayCopy(),
array_flip(static::getCorePackageList()) array_flip(static::getCorePackageList())
...@@ -170,6 +174,10 @@ final class InstalledPackagesList extends \ArrayObject { ...@@ -170,6 +174,10 @@ final class InstalledPackagesList extends \ArrayObject {
if (array_key_exists('drupal/core-recommended', $core_packages)) { if (array_key_exists('drupal/core-recommended', $core_packages)) {
unset($core_packages['drupal/core']); 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); return new static($core_packages);
} }
......
...@@ -139,6 +139,14 @@ class InstalledPackagesListTest extends UnitTestCase { ...@@ -139,6 +139,14 @@ class InstalledPackagesListTest extends UnitTestCase {
$list = new InstalledPackagesList($data); $list = new InstalledPackagesList($data);
$this->assertArrayNotHasKey('drupal/not-core', $list->getCorePackages()); $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 // If drupal/core-recommended is in the list, it should supersede
// drupal/core. // drupal/core.
$this->assertArrayHasKey('drupal/core', $list->getCorePackages()); $this->assertArrayHasKey('drupal/core', $list->getCorePackages());
......
...@@ -277,10 +277,8 @@ final class VersionPolicyValidator implements EventSubscriberInterface { ...@@ -277,10 +277,8 @@ final class VersionPolicyValidator implements EventSubscriberInterface {
$project_root = $this->pathLocator->getProjectRoot(); $project_root = $this->pathLocator->getProjectRoot();
$core_packages = $this->composerInspector->getInstalledPackagesList($project_root) $core_packages = $this->composerInspector->getInstalledPackagesList($project_root)
->getCorePackages() ->getCorePackages(FALSE)
->getArrayCopy(); ->getArrayCopy();
unset($core_packages['drupal/core-dev']);
unset($core_packages['drupal/core-dev-pinned']);
return key($core_packages) ?? FALSE; return key($core_packages) ?? FALSE;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment