diff --git a/automatic_updates_extensions/src/ExtensionUpdater.php b/automatic_updates_extensions/src/ExtensionUpdater.php index e88a5693255b06daaedbcce9b53771b8539734bd..c40d4b7c0f1719ab18360f78a0076d983755e1b7 100644 --- a/automatic_updates_extensions/src/ExtensionUpdater.php +++ b/automatic_updates_extensions/src/ExtensionUpdater.php @@ -37,7 +37,7 @@ class ExtensionUpdater extends Stage { foreach ($project_versions as $project_name => $version) { $package = "drupal/$project_name"; $group = array_key_exists($package, $require_dev) ? 'dev' : 'production'; - $package_versions[$group][$package] = $version; + $package_versions[$group][$package] = static::convertToSemanticVersion($version); } // Ensure that package versions are available to pre-create event @@ -92,4 +92,28 @@ class ExtensionUpdater extends Stage { } } + /** + * Converts version numbers to semantic versions if needed. + * + * @param string $project_version + * The version number. + * + * @return string + * The version number, converted if needed. + */ + private static function convertToSemanticVersion(string $project_version): string { + if (stripos($project_version, '8.x-') === 0) { + $project_version = substr($project_version, 4); + $version_parts = explode('-', $project_version); + $project_version = $version_parts[0] . '.0'; + if (count($version_parts) === 2) { + $project_version .= '-' . $version_parts[1]; + } + return $project_version; + } + else { + return $project_version; + } + } + } diff --git a/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php b/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php index abfd48db7537c947aef5c8671f3349ce38ba583e..fd5cc781e88148719ed78d52c2f67d2f8992b19c 100644 --- a/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php +++ b/automatic_updates_extensions/tests/src/Kernel/ExtensionUpdaterTest.php @@ -47,7 +47,9 @@ class ExtensionUpdaterTest extends AutomaticUpdatesKernelTestBase { $id = $this->container->get('automatic_updates_extensions.updater')->begin([ 'my_module' => '9.8.1', - 'my_dev_module' => '9.8.2', + // Use a legacy version number to ensure they are converted to semantic + // version numbers which will work with the drupal.org Composer facade. + 'my_dev_module' => '8.x-1.2-alpha1', ]); // Rebuild the container to ensure the package versions are persisted. /** @var \Drupal\Core\DrupalKernel $kernel */ @@ -66,7 +68,7 @@ class ExtensionUpdaterTest extends AutomaticUpdatesKernelTestBase { 'drupal/my_module' => '9.8.1', ], 'dev' => [ - 'drupal/my_dev_module' => '9.8.2', + 'drupal/my_dev_module' => '1.2.0-alpha1', ], ]; $this->assertSame($expected_versions, $extension_updater->claim($id)->getPackageVersions()); @@ -90,13 +92,13 @@ class ExtensionUpdaterTest extends AutomaticUpdatesKernelTestBase { 'require', '--dev', '--no-update', - 'drupal/my_dev_module:9.8.2', + 'drupal/my_dev_module:1.2.0-alpha1', ], [ 'update', '--with-all-dependencies', 'drupal/my_module:9.8.1', - 'drupal/my_dev_module:9.8.2', + 'drupal/my_dev_module:1.2.0-alpha1', ], ]; $extension_updater->stage();