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 {
*
* 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);
}
......
......@@ -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());
......
......@@ -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;
}
......
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