From 6313a810fb23ce1317fd8cacb0e5e285a7480965 Mon Sep 17 00:00:00 2001 From: Dave Long Date: Tue, 16 Apr 2024 17:02:34 +0100 Subject: [PATCH] Issue #3127168 by quietone, tedbow, dww: Create contrib Update test for legacy to semver releases (cherry picked from commit 6c1d6a5b5e8eb27b379804a75d9c9878f92198dc) --- .../semver_test.8.1.0-legacy-unsupported.xml | 238 ++++++++++++++++++ .../release-history/semver_test.8.1.0.xml | 80 +++++- .../release-history/semver_test.9.1.0.xml | 237 +++++++++++++++++ .../UpdateSemverContribTestBase.php | 65 +++++ 4 files changed, 619 insertions(+), 1 deletion(-) create mode 100644 core/modules/update/tests/fixtures/release-history/semver_test.8.1.0-legacy-unsupported.xml create mode 100644 core/modules/update/tests/fixtures/release-history/semver_test.9.1.0.xml diff --git a/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0-legacy-unsupported.xml b/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0-legacy-unsupported.xml new file mode 100644 index 00000000000..34982e963d4 --- /dev/null +++ b/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0-legacy-unsupported.xml @@ -0,0 +1,238 @@ + + + +Semver Test +semver_test +Drupal +8.0.,8.1. +published +http://example.com/project/semver_test + + ProjectsSemver Test project + + + + + Semver Test 8.2.0 + 8.2.0 + published + http://example.com/semver_test-8-2-0-release + http://example.com/semver_test-8-2-0.tar.gz + 1584195300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.1.0 + 8.1.0 + published + http://example.com/semver_test-8-1-0-release + http://example.com/semver_test-8-1-0.tar.gz + 1581603300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.1.0-beta1 + 8.1.0-beta1 + published + http://example.com/semver_test-8-1-0-beta1-release + http://example.com/semver_test-8-1-0-beta1.tar.gz + 1579011300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.1.0-alpha1 + 8.1.0-alpha1 + published + http://example.com/semver_test-8-1-0-alpha1-release + http://example.com/semver_test-8-1-0-alpha1.tar.gz + 1576419300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.0.3 + 8.0.3 + published + http://example.com/semver_test-8-0-3-release + http://example.com/semver_test-8-0-3.tar.gz + 1573827300 + + Release typeNew features + Release typeBug fixes + Release typeUnsupported + + + + Semver Test 8.0.2 + 8.0.2 + unpublished + http://example.com/semver_test-8-0-2-release + http://example.com/semver_test-8-0-2.tar.gz + 1571235300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.0.1 + 8.0.1 + published + http://example.com/semver_test-8-0-1-release + http://example.com/semver_test-8-0-1.tar.gz + 1568643300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.0.1-beta1 + 8.0.1-beta1 + published + http://example.com/semver_test-8-0-1-beta1-release + http://example.com/semver_test-8-0-1-beta1.tar.gz + 1566051300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.0.1-alpha1 + 8.0.1-alpha1 + published + http://example.com/semver_test-8-0-1-alpha1-release + http://example.com/semver_test-8-0-1-alpha1.tar.gz + 1563459300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.0.0 + 8.0.0 + published + http://example.com/semver_test-8-0-0-release + http://example.com/semver_test-8-0-0.tar.gz + 1560867300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.0.0-beta1 + 8.0.0-beta1 + published + http://example.com/semver_test-8-0-0-beta1-release + http://example.com/semver_test-8-0-0-beta1.tar.gz + 1558275300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.0.0-alpha1 + 8.0.0-alpha1 + published + http://example.com/semver_test-8-0-0-alpha1-release + http://example.com/semver_test-8-0-0-alpha1.tar.gz + 1555683300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.1 + 8.x-7.1 + published + http://example.com/semver_test-8-x-7-1-release + http://example.com/semver_test-8-x-7-1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.1-beta1 + 8.x-7.1-beta1 + published + http://example.com/semver_test-8-x-7-1-beta1-release + http://example.com/semver_test-8-x-7-1-beta1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.1-alpha1 + 8.x-7.1-alpha1 + published + http://example.com/semver_test-8-x-7-1-alpha1-release + http://example.com/semver_test-8-x-7-1-alpha1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.0 + 8.x-7.0 + published + http://example.com/semver_test-8-x-7-0-release + http://example.com/semver_test-8-x-7-0.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.0-beta1 + 8.x-7.0-beta1 + published + http://example.com/semver_test-8-x-7-0-beta1-release + http://example.com/semver_test-8-x-7-0-beta1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.0-alpha1 + 8.x-7.0-alpha1 + published + http://example.com/semver_test-8-x-7-0-alpha1-release + http://example.com/semver_test-8-x-7-0-alpha1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + diff --git a/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0.xml b/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0.xml index 7f29b0428a1..f9e3c159a35 100644 --- a/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0.xml +++ b/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0.xml @@ -3,7 +3,7 @@ Semver Test semver_test Drupal -8.0.,8.1. +8.x-7.,8.0.,8.1. published http://example.com/project/semver_test @@ -168,5 +168,83 @@ Release typeBug fixes + + Semver Test 8.x-7.1 + 8.x-7.1 + SEMVER_TEST-8-x-7-1 + published + http://example.com/semver_test-8-x-7-1-release + http://example.com/semver_test-8-x-7-1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.1-beta1 + 8.x-7.1-beta1 + SEMVER_TEST-8-x-7-1-beta1 + published + http://example.com/semver_test-8-x-7-1-beta1-release + http://example.com/semver_test-8-x-7-1-beta1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.1-alpha1 + 8.x-7.1-alpha1 + SEMVER_TEST-8-x-7-1-alpha1 + published + http://example.com/semver_test-8-x-7-1-alpha1-release + http://example.com/semver_test-8-x-7-1-alpha1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.0 + 8.x-7.0 + SEMVER_TEST-8-x-7-0 + published + http://example.com/semver_test-8-x-7-0-release + http://example.com/semver_test-8-x-7-0.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.0-beta1 + 8.x-7.0-beta1 + SEMVER_TEST-8-x-7-0-beta1 + published + http://example.com/semver_test-8-x-7-0-beta1-release + http://example.com/semver_test-8-x-7-0-beta1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-7.0-alpha1 + 8.x-7.0-alpha1 + SEMVER_TEST-8-x-7-0-alpha1 + published + http://example.com/semver_test-8-x-7-0-alpha1-release + http://example.com/semver_test-8-x-7-0-alpha1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + diff --git a/core/modules/update/tests/fixtures/release-history/semver_test.9.1.0.xml b/core/modules/update/tests/fixtures/release-history/semver_test.9.1.0.xml new file mode 100644 index 00000000000..c234cb292e0 --- /dev/null +++ b/core/modules/update/tests/fixtures/release-history/semver_test.9.1.0.xml @@ -0,0 +1,237 @@ + + + +Semver Test +semver_test +Drupal +8.x-8.,9.0.,9.1. +published +http://example.com/project/semver_test + + ProjectsSemver Test project + + + + + Semver Test 9.2.0 + 9.2.0 + published + http://example.com/semver_test-9-2-0-release + http://example.com/semver_test-9-2-0.tar.gz + 1584195300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.1.0 + 9.1.0 + published + http://example.com/semver_test-9-1-0-release + http://example.com/semver_test-9-1-0.tar.gz + 1581603300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.1.0-beta1 + 9.1.0-beta1 + published + http://example.com/semver_test-9-1-0-beta1-release + http://example.com/semver_test-9-1-0-beta1.tar.gz + 1579011300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.1.0-alpha1 + 9.1.0-alpha1 + published + http://example.com/semver_test-9-1-0-alpha1-release + http://example.com/semver_test-9-1-0-alpha1.tar.gz + 1576419300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.0.3 + 9.0.3 + published + http://example.com/semver_test-9-0-3-release + http://example.com/semver_test-9-0-3.tar.gz + 1573827300 + + Release typeNew features + Release typeBug fixes + Release typeUnsupported + + + + Semver Test 9.0.2 + 9.0.2 + unpublished + http://example.com/semver_test-9-0-2-release + http://example.com/semver_test-9-0-2.tar.gz + 1571235300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.0.1 + 9.0.1 + published + http://example.com/semver_test-9-0-1-release + http://example.com/semver_test-9-0-1.tar.gz + 1568643300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.0.1-beta1 + 9.0.1-beta1 + published + http://example.com/semver_test-9-0-1-beta1-release + http://example.com/semver_test-9-0-1-beta1.tar.gz + 1566051300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.0.1-alpha1 + 9.0.1-alpha1 + published + http://example.com/semver_test-9-0-1-alpha1-release + http://example.com/semver_test-9-0-1-alpha1.tar.gz + 1563459300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.0.0 + 9.0.0 + published + http://example.com/semver_test-9-0-0-release + http://example.com/semver_test-9-0-0.tar.gz + 1560867300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.0.0-beta1 + 9.0.0-beta1 + published + http://example.com/semver_test-9-0-0-beta1-release + http://example.com/semver_test-9-0-0-beta1.tar.gz + 1558275300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 9.0.0-alpha1 + 9.0.0-alpha1 + published + http://example.com/semver_test-9-0-0-alpha1-release + http://example.com/semver_test-9-0-0-alpha1.tar.gz + 1555683300 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-8.1 + 8.x-8.1 + published + http://example.com/semver_test-8-x-8-1-release + http://example.com/semver_test-8-x-8-1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-8.1-beta1 + 8.x-8.1-beta1 + published + http://example.com/semver_test-8-x-8-1-beta1-release + http://example.com/semver_test-8-x-8-1-beta1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-8.1-alpha1 + 8.x-8.1-alpha1 + published + http://example.com/semver_test-8-x-8-1-alpha1-release + http://example.com/semver_test-8-x-8-1-alpha1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-8.0 + 8.x-8.0 + published + http://example.com/semver_test-8-x-8-0-release + http://example.com/semver_test-8-x-8-0.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-8.0-beta1 + 8.x-8.0-beta1 + published + http://example.com/semver_test-8-x-8-0-beta1-release + http://example.com/semver_test-8-x-8-0-beta1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + Semver Test 8.x-8.0-alpha1 + 8.x-8.0-alpha1 + published + http://example.com/semver_test-8-x-8-0-alpha1-release + http://example.com/semver_test-8-x-8-0-alpha1.tar.gz + 1250424521 + + Release typeNew features + Release typeBug fixes + + + + diff --git a/core/modules/update/tests/src/Functional/UpdateSemverContribTestBase.php b/core/modules/update/tests/src/Functional/UpdateSemverContribTestBase.php index 2b8b257543d..032daf3ae9d 100644 --- a/core/modules/update/tests/src/Functional/UpdateSemverContribTestBase.php +++ b/core/modules/update/tests/src/Functional/UpdateSemverContribTestBase.php @@ -52,4 +52,69 @@ class UpdateSemverContribTestBase extends UpdateSemverTestBase { $this->mockDefaultExtensionsInfo(['version' => '8.0.0']); } + /** + * Tests updates from legacy versions to the semver versions. + */ + public function testUpdatesLegacyToSemver(): void { + // Test cases where the legacy branch is in the XML 'supported_branches' and + // when it is not. + foreach ([TRUE, FALSE] as $legacy_supported) { + // Test 2 legacy majors. + foreach ([7, 8] as $legacy_major) { + $semver_major = $legacy_major + 1; + $installed_versions = [ + "8.x-$legacy_major.0-alpha1", + "8.x-$legacy_major.0-beta1", + "8.x-$legacy_major.0", + "8.x-$legacy_major.1-alpha1", + "8.x-$legacy_major.1-beta1", + "8.x-$legacy_major.1", + ]; + foreach ($installed_versions as $installed_version) { + $this->setProjectInstalledVersion($installed_version); + if ($legacy_supported) { + $fixture = $legacy_major === 7 ? '8.1.0' : '9.1.0'; + } + else { + if ($legacy_major === 8) { + continue; + } + $fixture = '8.1.0-legacy-unsupported'; + } + + $this->refreshUpdateStatus([$this->updateProject => $fixture]); + $this->assertUpdateTableTextNotContains('Security update required!'); + $this->assertSession()->elementTextContains('css', $this->updateTableLocator . " .project-update__title", $installed_version); + if ($legacy_supported) { + // All installed versions should indicate that there is an update + // available for the next major version of the module. + // '$legacy_major.1.0' is shown for the next major version because + // it is the latest full release for that major. + // @todo Determine if both 8.0.0 and 8.0.1 should be expected as + // "Also available" releases in + // https://www.drupal.org/project/node/3100115. + $this->assertVersionUpdateLinks('Also available:', "$semver_major.1.0"); + if ($installed_version === "8.x-$legacy_major.1") { + $this->assertUpdateTableTextContains('Up to date'); + $this->assertUpdateTableTextNotContains('Update available'); + } + else { + $this->assertUpdateTableTextNotContains('Up to date'); + $this->assertUpdateTableTextContains('Update available'); + // All installed versions besides 8.x-$legacy_major.1 should + // recommend 8.x-$legacy_major.1 because it is the latest full + // release for the major. + $this->assertVersionUpdateLinks('Recommended version:', "8.x-$legacy_major.1"); + } + } + else { + // If '8.x-7.' is not in the XML 'supported_branches' value then the + // latest release for the next major should always be recommended. + $this->assertVersionUpdateLinks('Recommended version:', "$semver_major.1.0"); + } + } + } + } + } + }