Skip to content

Commit

Permalink
Issue #3134648 by alexpott, dww, greg.1.anderson, hussainweb, catch, …
Browse files Browse the repository at this point in the history
…xjm, Mixologic: [backport, needs scheduling] Don't pin the composer/installers version in drupal/core-recommended
  • Loading branch information
xjm committed Jun 3, 2020
1 parent 4721e10 commit c0e24bd
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
10 changes: 10 additions & 0 deletions tests/Drupal/Tests/Composer/Generator/Fixtures.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ protected function composerJson() {
'license' => 'GPL-2.0-or-later',
'require' =>
[
'composer/installers' => '^1.9',
'php' => '>=7.0.8',
'symfony/yaml' => '~3.4.5',
],
Expand All @@ -59,6 +60,15 @@ protected function composerLock() {
'content-hash' => 'da9910627bab73a256b39ceda83d7167',
'packages' =>
[
[
'name' => "composer/installers",
'version' => 'v1.9.0',
'source' => [
'type' => 'git',
'url' => 'https://github.com/composer/installers.git',
'reference' => 'b93bcf0fa1fccb0b7d176b0967d969691cd74cca',
],
],
[
'name' => 'symfony/polyfill-ctype',
'version' => 'v1.12.0',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

namespace Drupal\Tests\Composer\Generator;

use PHPUnit\Framework\TestCase;

/**
* Tests DrupalCoreRecommendedBuilder.
*
* @group Metapackage
*/
class OverlapWithTopLevelDependenciesTest extends TestCase {

/**
* Provides data for testOverlapWithTemplateProject().
*/
public function templateProjectPathProvider() {
return [
[
'composer/Template/RecommendedProject',
],
[
'composer/Template/LegacyProject',
],
];
}

/**
* Tests top level and core-recommended dependencies do not overlap.
*
* @dataProvider templateProjectPathProvider
*
* @param string $template_project_path
* The path of the project template to test.
*/
public function testOverlapWithTemplateProject($template_project_path) {
$root = dirname(__DIR__, 6);
// Read template project composer.json.
$top_level_composer_json = json_decode(file_get_contents("$root/$template_project_path/composer.json"), TRUE);

// Read drupal/core-recommended composer.json.
$core_recommended_composer_json = json_decode(file_get_contents("$root/composer/Metapackage/CoreRecommended/composer.json"), TRUE);

// Fail if any required project in the require section of the template
// project also exists in core/recommended.
foreach ($top_level_composer_json['require'] as $project => $version_constraint) {
$this->assertArrayNotHasKey($project, $core_recommended_composer_json['require'], "Pinned project $project is also a top-level dependency of $template_project_path. This can expose a Composer bug. See https://www.drupal.org/project/drupal/issues/3134648 and https://github.com/composer/composer/issues/8882");
}
}

}

0 comments on commit c0e24bd

Please sign in to comment.