Commit 153fe548 authored by catch's avatar catch
Browse files

Issue #3461690 by quietone, dww, longwave: Add tests for updates should not...

Issue #3461690 by quietone, dww, longwave: Add tests for updates should not recommend a new branch if there are no stable releases

(cherry picked from commit 44740961)
parent 24168f0a
Loading
Loading
Loading
Loading
Loading
+66 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
This XML file has supported branches for two major releases. The earlier major
has stable releases but the later major release does not.
-->
<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>9.2.,10.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 10.0.0-beta1</name>
    <version>10.0.0-beta1</version>
    <status>published</status>
    <release_link>http://example.com/drupal-10-0-0-beta1-release</release_link>
    <download_link>http://example.com/drupal-10-0-0.tar.gz</download_link>
    <date>1663358020</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 10.0.0-alpha1</name>
    <version>10.0.0-alpha1</version>
    <status>published</status>
    <release_link>http://example.com/drupal-10-0-0-alpha1-release</release_link>
    <download_link>http://example.com/drupal-10-0-0.tar.gz</download_link>
    <date>1643404041</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 9.2.2</name>
    <version>9.2.2</version>
    <status>published</status>
    <release_link>http://example.com/drupal-9-2-2-release</release_link>
    <download_link>http://example.com/drupal-9-2-2.tar.gz</download_link>
   <date>1674066112</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 9.2.0</name>
    <version>9.2.0</version>
    <status>published</status>
    <release_link>http://example.com/drupal-9-2-0-release</release_link>
    <download_link>http://example.com/drupal-9-2-0.tar.gz</download_link>
    <date>1671115839</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>
+66 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
This XML file has supported branches for two major releases. The earlier major
has stable releases but the later major release does not.
-->
<project xmlns:dc="http://purl.org/dc/elements/1.1/">
<title>Semver Test</title>
<short_name>semver_test</short_name>
<dc:creator>Drupal</dc:creator>
<supported_branches>9.2.,10.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 10.0.0-beta1</name>
    <version>10.0.0-beta1</version>
    <status>published</status>
    <release_link>http://example.com/semver_test-10-0-0-beta1-release</release_link>
    <download_link>http://example.com/semver_test-10-0-0.tar.gz</download_link>
    <date>1663358020</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 10.0.0-alpha1</name>
    <version>10.0.0-alpha1</version>
    <status>published</status>
    <release_link>http://example.com/semver_test-10-0-0-alpha1-release</release_link>
    <download_link>http://example.com/semver_test-10-0-0.tar.gz</download_link>
    <date>1643404041</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 9.2.2</name>
    <version>9.2.2</version>
    <status>published</status>
    <release_link>http://example.com/semver_test-9-2-2-release</release_link>
    <download_link>http://example.com/semver_test-9-2-2.tar.gz</download_link>
   <date>1674066112</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 9.2.0</name>
    <version>9.2.0</version>
    <status>published</status>
    <release_link>http://example.com/semver_test-9-2-0-release</release_link>
    <download_link>http://example.com/semver_test-9-2-0.tar.gz</download_link>
    <date>1671115839</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>
+44 −0
Original line number Diff line number Diff line
@@ -174,6 +174,50 @@ public function testMajorUpdateAvailable(): void {
    }
  }

  /**
   * Tests when the major+1 is supported but not stable.
   *
   * This tests when the next major has stable supported releases and the
   * the major after that has just an alpha and beta release.
   *
   * This tests when the latest major has an alpha and beta release.
   * - drupal-10.0.0-11.0.0 and semver_test.9.0.0-10.0.0: This declares two
   *   major releases supported and the latest major only has unstable releases.
   */
  public function testMajorExtraUpdateAvailable(): void {
    foreach (['9.0.0-10.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.2.2', Url::fromUri("http://example.com/{$this->updateProject}-9-2-2-release"))
              ->toString());
            $this->assertUpdateTableElementContains((string) Link::fromTextAndUrl('Release notes', Url::fromUri("http://example.com/{$this->updateProject}-9-2-2-release"))
              ->toString());
            $this->assertUpdateTableElementContains((string) Link::fromTextAndUrl('10.0.0-beta1', Url::fromUri("http://example.com/{$this->updateProject}-10-0-0-beta1-release"))
              ->toString());
            $this->assertUpdateTableElementContains((string) Link::fromTextAndUrl('Release notes', Url::fromUri("http://example.com/{$this->updateProject}-10-0-0-beta1-release"))
              ->toString());
            $this->assertUpdateTableTextNotContains('Latest version:');

            $this->assertUpdateTableTextNotContains('Up to date');
            $this->assertUpdateTableTextContains('Not supported!');
            $this->assertVersionUpdateLinks('Recommended version:', '9.2.2');
            $this->assertUpdateTableElementContains('error.svg');
          }
        }
      }
    }
  }

  /**
   * Tests messages when a project release is unpublished.
   *