diff --git a/core/lib/Drupal/Component/Extension/VersionChecker.php b/core/lib/Drupal/Component/Extension/VersionChecker.php index e1839b60ad..c01be869de 100644 --- a/core/lib/Drupal/Component/Extension/VersionChecker.php +++ b/core/lib/Drupal/Component/Extension/VersionChecker.php @@ -54,6 +54,8 @@ public static function checkIncompatibility(array $version_info, $current_versio * - 'name' includes the name of the thing to depend on (e.g. 'foo'). * - 'original_version' contains the original version string (which can be * used in the UI for reporting incompatibilities). + * = 'project' is the project for the dependency. This will be provided if + * it's present in $dependency. * - 'versions' is a list of associative arrays, each containing the keys * 'op' and 'version'. 'op' can be one of: '=', '==', '!=', '<>', '<', * '<=', '>', or '>='. 'version' is one piece like '4.5-beta3'. diff --git a/core/tests/Drupal/Tests/Component/Extension/VersionCheckerTest.php b/core/tests/Drupal/Tests/Component/Extension/VersionCheckerTest.php index 6e60e0d1e0..4f2e5ab42d 100644 --- a/core/tests/Drupal/Tests/Component/Extension/VersionCheckerTest.php +++ b/core/tests/Drupal/Tests/Component/Extension/VersionCheckerTest.php @@ -70,22 +70,146 @@ public function testParseDependency($dependency, $expected) { */ public function dependencyProvider() { return [ - 'system' => ['system', ['name' => 'system']], - 'taxonomy' => ['taxonomy', ['name' => 'taxonomy']], - 'views' => ['views', ['name' => 'views']], - 'views_ui(8.x-1.0)' => ['views_ui(8.x-1.0)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.0)', 'versions' => [['op' => '=', 'version' => '1.0']]]], - // Not supported?. - // array('views_ui(8.x-1.1-beta)', array('name' => 'views_ui', 'original_version' => ' (8.x-1.1-beta)', 'versions' => array(array('op' => '=', 'version' => '1.1-beta')))), - 'views_ui(8.x-1.1-alpha12)' => ['views_ui(8.x-1.1-alpha12)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.1-alpha12)', 'versions' => [['op' => '=', 'version' => '1.1-alpha12']]]], - 'views_ui(8.x-1.1-beta8)' => ['views_ui(8.x-1.1-beta8)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.1-beta8)', 'versions' => [['op' => '=', 'version' => '1.1-beta8']]]], - 'views_ui(8.x-1.1-rc11)' => ['views_ui(8.x-1.1-rc11)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.1-rc11)', 'versions' => [['op' => '=', 'version' => '1.1-rc11']]]], - 'views_ui(8.x-1.12)' => ['views_ui(8.x-1.12)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.12)', 'versions' => [['op' => '=', 'version' => '1.12']]]], - 'views_ui(8.x-1.x)' => ['views_ui(8.x-1.x)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.x)', 'versions' => [['op' => '<', 'version' => '2.x'], ['op' => '>=', 'version' => '1.x']]]], - 'views_ui( <= 8.x-1.x)' => ['views_ui( <= 8.x-1.x)', ['name' => 'views_ui', 'original_version' => ' ( <= 8.x-1.x)', 'versions' => [['op' => '<=', 'version' => '2.x']]]], - 'views_ui(<= 8.x-1.x)' => ['views_ui(<= 8.x-1.x)', ['name' => 'views_ui', 'original_version' => ' (<= 8.x-1.x)', 'versions' => [['op' => '<=', 'version' => '2.x']]]], - 'views_ui( <=8.x-1.x)' => ['views_ui( <=8.x-1.x)', ['name' => 'views_ui', 'original_version' => ' ( <=8.x-1.x)', 'versions' => [['op' => '<=', 'version' => '2.x']]]], - 'views_ui(>8.x-1.x)' => ['views_ui(>8.x-1.x)', ['name' => 'views_ui', 'original_version' => ' (>8.x-1.x)', 'versions' => [['op' => '>', 'version' => '2.x']]]], - 'drupal:views_ui(>8.x-1.x)' => ['drupal:views_ui(>8.x-1.x)', ['project' => 'drupal', 'name' => 'views_ui', 'original_version' => ' (>8.x-1.x)', 'versions' => [['op' => '>', 'version' => '2.x']]]], + 'system' => [ + 'system', + ['name' => 'system'], + ], + 'taxonomy' => [ + 'taxonomy', + ['name' => 'taxonomy'], + ], + 'views' => [ + 'views', + ['name' => 'views'], + ], + 'views_ui(8.x-1.0)' => [ + 'views_ui(8.x-1.0)', + [ + 'name' => 'views_ui', + 'original_version' => ' (8.x-1.0)', + 'versions' => [ + ['op' => '=', 'version' => '1.0'], + ], + ], + ], + + // This data set is currently unsupported. Fix it in + // https://www.drupal.org/project/drupal/issues/3001344. + /* + 'views_ui(8.x-1.1-beta)' => [ + 'views_ui(8.x-1.1-beta)', + [ + 'name' => 'views_ui', + 'original_version' => ' (8.x-1.1-beta)', + 'versions' => [ + ['op' => '=', 'version' => '1.1-beta'], + ], + ], + ], + */ + + 'views_ui(8.x-1.1-alpha12)' => [ + 'views_ui(8.x-1.1-alpha12)', + [ + 'name' => 'views_ui', + 'original_version' => ' (8.x-1.1-alpha12)', + 'versions' => [ + ['op' => '=', 'version' => '1.1-alpha12'], + ], + ], + ], + 'views_ui(8.x-1.1-beta8)' => [ + 'views_ui(8.x-1.1-beta8)', + [ + 'name' => 'views_ui', + 'original_version' => ' (8.x-1.1-beta8)', + 'versions' => [ + ['op' => '=', 'version' => '1.1-beta8'], + ], + ], + ], + 'views_ui(8.x-1.1-rc11)' => [ + 'views_ui(8.x-1.1-rc11)', + [ + 'name' => 'views_ui', + 'original_version' => ' (8.x-1.1-rc11)', + 'versions' => [ + ['op' => '=', 'version' => '1.1-rc11'], + ], + ], + ], + 'views_ui(8.x-1.12)' => [ + 'views_ui(8.x-1.12)', + [ + 'name' => 'views_ui', + 'original_version' => ' (8.x-1.12)', + 'versions' => [ + ['op' => '=', 'version' => '1.12'], + ], + ], + ], + 'views_ui(8.x-1.x)' => [ + 'views_ui(8.x-1.x)', + [ + 'name' => 'views_ui', + 'original_version' => ' (8.x-1.x)', + 'versions' => [ + ['op' => '<', 'version' => '2.x'], + ['op' => '>=', 'version' => '1.x'], + ], + ], + ], + 'views_ui( <= 8.x-1.x)' => [ + 'views_ui( <= 8.x-1.x)', + [ + 'name' => 'views_ui', + 'original_version' => ' ( <= 8.x-1.x)', + 'versions' => [ + ['op' => '<=', 'version' => '2.x'], + ], + ], + ], + 'views_ui(<= 8.x-1.x)' => [ + 'views_ui(<= 8.x-1.x)', + [ + 'name' => 'views_ui', + 'original_version' => ' (<= 8.x-1.x)', + 'versions' => [ + ['op' => '<=', 'version' => '2.x'], + ], + ], + ], + 'views_ui( <=8.x-1.x)' => [ + 'views_ui( <=8.x-1.x)', + [ + 'name' => 'views_ui', + 'original_version' => ' ( <=8.x-1.x)', + 'versions' => [ + ['op' => '<=', 'version' => '2.x'], + ], + ], + ], + 'views_ui(>8.x-1.x)' => [ + 'views_ui(>8.x-1.x)', + [ + 'name' => 'views_ui', + 'original_version' => ' (>8.x-1.x)', + 'versions' => [ + ['op' => '>', 'version' => '2.x'], + ], + ], + ], + 'drupal:views_ui(>8.x-1.x)' => [ + 'drupal:views_ui(>8.x-1.x)', + [ + 'project' => 'drupal', + 'name' => 'views_ui', + 'original_version' => ' (>8.x-1.x)', + 'versions' => [ + ['op' => '>', 'version' => '2.x'], + ], + ], + ], ]; } diff --git a/core/tests/Drupal/Tests/Core/Extension/DeprecatedModuleHandlerTest.php b/core/tests/Drupal/Tests/Core/Extension/DeprecatedModuleHandlerTest.php index 9a89688dc5..03c9006a45 100644 --- a/core/tests/Drupal/Tests/Core/Extension/DeprecatedModuleHandlerTest.php +++ b/core/tests/Drupal/Tests/Core/Extension/DeprecatedModuleHandlerTest.php @@ -33,7 +33,8 @@ public function dependencyProvider() { ['taxonomy', ['name' => 'taxonomy']], ['views', ['name' => 'views']], ['views_ui(8.x-1.0)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.0)', 'versions' => [['op' => '=', 'version' => '1.0']]]], - // Not supported?. + // Not supported? Fix this in + // https://www.drupal.org/project/drupal/issues/3001344. // array('views_ui(8.x-1.1-beta)', array('name' => 'views_ui', 'original_version' => ' (8.x-1.1-beta)', 'versions' => array(array('op' => '=', 'version' => '1.1-beta')))), ['views_ui(8.x-1.1-alpha12)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.1-alpha12)', 'versions' => [['op' => '=', 'version' => '1.1-alpha12']]]], ['views_ui(8.x-1.1-beta8)', ['name' => 'views_ui', 'original_version' => ' (8.x-1.1-beta8)', 'versions' => [['op' => '=', 'version' => '1.1-beta8']]]],