From 2969b3f174ea1aef419a496ed371f9db1a92e951 Mon Sep 17 00:00:00 2001 From: catch <catch@35733.no-reply.drupal.org> Date: Thu, 4 Apr 2024 07:09:17 +0100 Subject: [PATCH] Issue #3099825 by quietone, kunal.sachdev, smustgrave, tedbow: Test available updates when the current major and next major of core are supported --- .../release-history/drupal.8.0.0-9.0.0.xml | 74 +++++++++++++++++++ .../semver_test.8.0.0-9.0.0.xml | 74 +++++++++++++++++++ .../UpdateSemverTestBaselineTrait.php | 61 +++++++++++---- 3 files changed, 194 insertions(+), 15 deletions(-) create mode 100644 core/modules/update/tests/fixtures/release-history/drupal.8.0.0-9.0.0.xml create mode 100644 core/modules/update/tests/fixtures/release-history/semver_test.8.0.0-9.0.0.xml diff --git a/core/modules/update/tests/fixtures/release-history/drupal.8.0.0-9.0.0.xml b/core/modules/update/tests/fixtures/release-history/drupal.8.0.0-9.0.0.xml new file mode 100644 index 000000000000..ff364f19429a --- /dev/null +++ b/core/modules/update/tests/fixtures/release-history/drupal.8.0.0-9.0.0.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="utf-8"?> +<project xmlns:dc="http://purl.org/dc/elements/1.1/"> +<title>Drupal</title> +<short_name>drupal</short_name> +<dc:creator>Drupal</dc:creator> +<supported_branches>8.0.,8.1.,9.0.</supported_branches> +<project_status>published</project_status> +<link>http://example.com/project/drupal</link> + <terms> + <term><name>Projects</name><value>Drupal project</value></term> + </terms> +<releases> + <release> + <name>Drupal 9.0.0</name> + <version>9.0.0</version> + <status>published</status> + <release_link>http://example.com/drupal-9-0-0-release</release_link> + <download_link>http://example.com/drupal-9-0-0.tar.gz</download_link> + <date>1250424521</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Drupal 8.1.1</name> + <version>8.1.1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-1-1-release</release_link> + <download_link>http://example.com/drupal-8-1-1.tar.gz</download_link> + <date>1250424581</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Drupal 8.1.0</name> + <version>8.1.0</version> + <status>published</status> + <release_link>http://example.com/drupal-8-1-0-release</release_link> + <download_link>http://example.com/drupal-8-1-0.tar.gz</download_link> + <date>1250424581</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Drupal 8.0.1</name> + <version>8.0.1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-1-release</release_link> + <download_link>http://example.com/drupal-8-0-1.tar.gz</download_link> + <date>1250424581</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Drupal 8.0.0</name> + <version>8.0.0</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-0-release</release_link> + <download_link>http://example.com/drupal-8-0-0.tar.gz</download_link> + <date>1250424521</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> +</releases> +</project> diff --git a/core/modules/update/tests/fixtures/release-history/semver_test.8.0.0-9.0.0.xml b/core/modules/update/tests/fixtures/release-history/semver_test.8.0.0-9.0.0.xml new file mode 100644 index 000000000000..10909e9e41fb --- /dev/null +++ b/core/modules/update/tests/fixtures/release-history/semver_test.8.0.0-9.0.0.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="utf-8"?> +<project xmlns:dc="http://purl.org/dc/elements/1.1/"> +<title>Semver Test</title> +<short_name>semver_test</short_name> +<dc:creator>Semver Test</dc:creator> +<supported_branches>8.0.,8.1.,9.0.</supported_branches> +<project_status>published</project_status> +<link>http://example.com/project/semver_test</link> + <terms> + <term><name>Projects</name><value>Semver Test project</value></term> + </terms> +<releases> + <release> + <name>Semver Test 9.0.0</name> + <version>9.0.0</version> + <status>published</status> + <release_link>http://example.com/semver_test-9-0-0-release</release_link> + <download_link>http://example.com/semver_test-9-0-0.tar.gz</download_link> + <date>1250424521</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Semver Test 8.1.1</name> + <version>8.1.1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-1-1-release</release_link> + <download_link>http://example.com/semver_test-8-1-1.tar.gz</download_link> + <date>1250424581</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Semver Test 8.1.0</name> + <version>8.1.0</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-1-0-release</release_link> + <download_link>http://example.com/semver_test-8-1-0.tar.gz</download_link> + <date>1250424581</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Semver Test 8.0.1</name> + <version>8.0.1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-1-release</release_link> + <download_link>http://example.com/semver_test-8-0-1.tar.gz</download_link> + <date>1250424581</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> + <release> + <name>Semver Test 8.0.0</name> + <version>8.0.0</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-0-release</release_link> + <download_link>http://example.com/semver_test-8-0-0.tar.gz</download_link> + <date>1250424521</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + </terms> + </release> +</releases> +</project> diff --git a/core/modules/update/tests/src/Functional/UpdateSemverTestBaselineTrait.php b/core/modules/update/tests/src/Functional/UpdateSemverTestBaselineTrait.php index 722df46bd9e9..d2e8f2a56412 100644 --- a/core/modules/update/tests/src/Functional/UpdateSemverTestBaselineTrait.php +++ b/core/modules/update/tests/src/Functional/UpdateSemverTestBaselineTrait.php @@ -113,23 +113,54 @@ public function testNormalUpdateAvailable() { } /** - * Tests the Update Manager module when a major update is available. + * Tests the Update Manager module when major updates are available. + * + * This includes testing when the next major is available as well as when both + * the current major version and the next major version are supported. There + * are two release history files to support this. + * - drupal.9.xml and semver_test.9.xml: These declare one major release + * supported, 9. + * - drupal.current.xml and semver_test.current.xml: These declare major + * releases supported, 8 and 9. */ public function testMajorUpdateAvailable() { - foreach ([0, 1] as $minor_version) { - foreach ([0, 1] as $patch_version) { - foreach (['-alpha1', '-beta1', ''] as $extra_version) { - $this->setProjectInstalledVersion("8.$minor_version.$patch_version" . $extra_version); - $this->refreshUpdateStatus([$this->updateProject => '9']); - $this->standardTests(); - $this->assertUpdateTableTextNotContains('Security update required!'); - $this->assertUpdateTableElementContains((string) Link::fromTextAndUrl('9.0.0', Url::fromUri("http://example.com/{$this->updateProject}-9-0-0-release"))->toString()); - $this->assertUpdateTableElementContains((string) Link::fromTextAndUrl('Release notes', Url::fromUri("http://example.com/{$this->updateProject}-9-0-0-release"))->toString()); - $this->assertUpdateTableTextNotContains('Up to date'); - $this->assertUpdateTableTextContains('Not supported!'); - $this->assertUpdateTableTextContains('Recommended version:'); - $this->assertUpdateTableTextNotContains('Latest version:'); - $this->assertUpdateTableElementContains('error.svg'); + foreach (['9', '8.0.0-9.0.0'] as $release_history) { + foreach ([0, 1] as $minor_version) { + foreach ([0, 1] as $patch_version) { + foreach (['-alpha1', '-beta1', ''] as $extra_version) { + $installed_version = "8.$minor_version.$patch_version$extra_version"; + $this->setProjectInstalledVersion($installed_version); + $this->refreshUpdateStatus([$this->updateProject => $release_history]); + $this->standardTests(); + $this->drupalGet('admin/reports/updates'); + $this->clickLink('Check manually'); + $this->checkForMetaRefresh(); + $this->assertUpdateTableTextNotContains('Security update required!'); + $this->assertUpdateTableElementContains((string) Link::fromTextAndUrl('9.0.0', Url::fromUri("http://example.com/{$this->updateProject}-9-0-0-release")) + ->toString()); + $this->assertUpdateTableElementContains((string) Link::fromTextAndUrl('Release notes', Url::fromUri("http://example.com/{$this->updateProject}-9-0-0-release")) + ->toString()); + $this->assertUpdateTableTextNotContains('Latest version:'); + + if ($release_history === '9') { + $this->assertUpdateTableTextNotContains('Up to date'); + $this->assertUpdateTableTextContains('Not supported!'); + $this->assertVersionUpdateLinks('Recommended version:', '9.0.0'); + $this->assertUpdateTableElementContains('error.svg'); + } + else { + if ($installed_version === '8.1.1') { + $this->assertUpdateTableTextContains('Up to date'); + } + else { + $this->assertUpdateTableTextNotContains('Up to date'); + $this->assertVersionUpdateLinks('Recommended version:', '8.1.1'); + } + $this->assertUpdateTableTextNotContains('Not supported!'); + $this->assertVersionUpdateLinks('Also available:', '9.0.0'); + $this->assertUpdateTableElementNotContains('error.svg'); + } + } } } } -- GitLab