diff --git a/core/modules/update/tests/fixtures/release-history/drupal.1.0-supported.xml b/core/modules/update/tests/fixtures/release-history/drupal.1.0-supported.xml new file mode 100644 index 0000000000000000000000000000000000000000..b973332a6ede010d6470e71533c8db3f5e574633 --- /dev/null +++ b/core/modules/update/tests/fixtures/release-history/drupal.1.0-supported.xml @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +This file contains release history for '8.0','8.1', '9.0' and '10.0'. All +releases except '8.0.' are supported. +--> +<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.1.,9.0.,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</name> + <version>10.0.0</version> + <status>published</status> + <release_link>http://example.com/drupal-10-0-0-release</release_link> + <download_link>http://example.com/drupal-10-0-0.tar.gz</download_link> + <date>1584195300</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.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>1584195300</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>1584195300</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-beta1</name> + <version>8.1.0-beta1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-1-0-beta1-release</release_link> + <download_link>http://example.com/drupal-8-1-0-beta1.tar.gz</download_link> + <date>1581603300</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-alpha1</name> + <version>8.1.0-alpha1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-1-0-alpha1-release</release_link> + <download_link>http://example.com/drupal-8-1-0-alpha1.tar.gz</download_link> + <date>1579011300</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.3</name> + <version>8.0.3</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-3-release</release_link> + <download_link>http://example.com/drupal-8-0-3.tar.gz</download_link> + <date>1576419300</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + <term><name>Release type</name><value>Unsupported</value></term> + </terms> + </release> + <release> + <name>Drupal 8.0.2</name> + <version>8.0.2</version> + <status>unpublished</status> + <release_link>http://example.com/drupal-8-0-2-release</release_link> + <download_link>http://example.com/drupal-8-0-2.tar.gz</download_link> + <date>1573827300</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>1571235300</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-beta1</name> + <version>8.0.1-beta1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-1-beta1-release</release_link> + <download_link>http://example.com/drupal-8-0-1-beta1.tar.gz</download_link> + <date>1568643300</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-alpha1</name> + <version>8.0.1-alpha1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-1-alpha1-release</release_link> + <download_link>http://example.com/drupal-8-0-1-alpha1.tar.gz</download_link> + <date>1566051300</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>1563459300</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-beta1</name> + <version>8.0.0-beta1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-0-beta1-release</release_link> + <download_link>http://example.com/drupal-8-0-0-beta1.tar.gz</download_link> + <date>1560867300</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-alpha1</name> + <version>8.0.0-alpha1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-0-alpha1-release</release_link> + <download_link>http://example.com/drupal-8-0-0-alpha1.tar.gz</download_link> + <date>1558275300</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/drupal.1.1-unsupported.xml b/core/modules/update/tests/fixtures/release-history/drupal.1.1-unsupported.xml new file mode 100644 index 0000000000000000000000000000000000000000..18296e9efca18ead0a6082228bc44d791415afb5 --- /dev/null +++ b/core/modules/update/tests/fixtures/release-history/drupal.1.1-unsupported.xml @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +This file contains release history for '8.0' and '8.1'. Only '8.0' is +supported. +--> +<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.</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 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.1.0-beta1</name> + <version>8.1.0-beta1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-1-0-beta1-release</release_link> + <download_link>http://example.com/drupal-8-1-0-beta1.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-alpha1</name> + <version>8.1.0-alpha1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-1-0-alpha1-release</release_link> + <download_link>http://example.com/drupal-8-1-0-alpha1.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.3</name> + <version>8.0.3</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-3-release</release_link> + <download_link>http://example.com/drupal-8-0-3.tar.gz</download_link> + <date>1250424585</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.2</name> + <version>8.0.2</version> + <status>unpublished</status> + <release_link>http://example.com/drupal-8-0-2-release</release_link> + <download_link>http://example.com/drupal-8-0-2.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.1-beta1</name> + <version>8.0.1-beta1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-1-beta1-release</release_link> + <download_link>http://example.com/drupal-8-0-1-beta1.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.0.1-alpha1</name> + <version>8.0.1-alpha1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-1-alpha1-release</release_link> + <download_link>http://example.com/drupal-8-0-1-alpha1.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.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> + <release> + <name>Drupal 8.0.0-beta1</name> + <version>8.0.0-beta1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-0-beta1-release</release_link> + <download_link>http://example.com/drupal-8-0-0-beta1.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.0.0-alpha1</name> + <version>8.0.0-alpha1</version> + <status>published</status> + <release_link>http://example.com/drupal-8-0-0-alpha1-release</release_link> + <download_link>http://example.com/drupal-8-0-0-alpha1.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/drupal.8.1.0-unsupported.xml b/core/modules/update/tests/fixtures/release-history/drupal.8.1.0-unsupported.xml index 9ae7e60f56d604c442d91eb8a4e4f90808f9a8bb..17eee8dcacaa0c40729d8d434b8b683495835a93 100644 --- a/core/modules/update/tests/fixtures/release-history/drupal.8.1.0-unsupported.xml +++ b/core/modules/update/tests/fixtures/release-history/drupal.8.1.0-unsupported.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -This XML file is the exact same as the file drupal.1.xml except +This XML file is the exact same as the file drupal.1.0.xml except 'supported_branches' in this file does not contain the '8.0.' branch. Therefore, all the releases that start with '8.0.' are in an unsupported branch. --> diff --git a/core/modules/update/tests/fixtures/release-history/semver_test.1.0-supported.xml b/core/modules/update/tests/fixtures/release-history/semver_test.1.0-supported.xml new file mode 100644 index 0000000000000000000000000000000000000000..d2c0d326d573d76be82963e74a240bd4026adaf2 --- /dev/null +++ b/core/modules/update/tests/fixtures/release-history/semver_test.1.0-supported.xml @@ -0,0 +1,175 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +This file contains release history for '8.0','8.1', '9.0' and '10.0'. All +releases except '8.0.' are supported. +--> +<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>8.1.,9.0.,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</name> + <version>10.0.0</version> + <status>published</status> + <release_link>http://example.com/semver_test-10-0-0-release</release_link> + <download_link>http://example.com/semver_test-10-0-0.tar.gz</download_link> + <date>1584195300</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.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>1584195300</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>1584195300</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-beta1</name> + <version>8.1.0-beta1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-1-0-beta1-release</release_link> + <download_link>http://example.com/semver_test-8-1-0-beta1.tar.gz</download_link> + <date>1581603300</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-alpha1</name> + <version>8.1.0-alpha1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-1-0-alpha1-release</release_link> + <download_link>http://example.com/semver_test-8-1-0-alpha1.tar.gz</download_link> + <date>1579011300</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.3</name> + <version>8.0.3</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-3-release</release_link> + <download_link>http://example.com/semver_test-8-0-3.tar.gz</download_link> + <date>1576419300</date> + <terms> + <term><name>Release type</name><value>New features</value></term> + <term><name>Release type</name><value>Bug fixes</value></term> + <term><name>Release type</name><value>Unsupported</value></term> + </terms> + </release> + <release> + <name>Semver Test 8.0.2</name> + <version>8.0.2</version> + <status>unpublished</status> + <release_link>http://example.com/semver_test-8-0-2-release</release_link> + <download_link>http://example.com/semver_test-8-0-2.tar.gz</download_link> + <date>1573827300</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>1571235300</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-beta1</name> + <version>8.0.1-beta1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-1-beta1-release</release_link> + <download_link>http://example.com/semver_test-8-0-1-beta1.tar.gz</download_link> + <date>1568643300</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-alpha1</name> + <version>8.0.1-alpha1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-1-alpha1-release</release_link> + <download_link>http://example.com/semver_test-8-0-1-alpha1.tar.gz</download_link> + <date>1566051300</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>1563459300</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-beta1</name> + <version>8.0.0-beta1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-0-beta1-release</release_link> + <download_link>http://example.com/semver_test-8-0-0-beta1.tar.gz</download_link> + <date>1560867300</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-alpha1</name> + <version>8.0.0-alpha1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-0-alpha1-release</release_link> + <download_link>http://example.com/semver_test-8-0-0-alpha1.tar.gz</download_link> + <date>1558275300</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.1.1-unsupported.xml b/core/modules/update/tests/fixtures/release-history/semver_test.1.1-unsupported.xml new file mode 100644 index 0000000000000000000000000000000000000000..a1703238e2e2a005fe7c3e4754f8a2fcf53e115b --- /dev/null +++ b/core/modules/update/tests/fixtures/release-history/semver_test.1.1-unsupported.xml @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +This file contains release history for '8.0' and '8.1'. Only '8.0' is +supported. +--> +<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>8.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 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>1584195300</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-beta1</name> + <version>8.1.0-beta1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-1-0-beta1-release</release_link> + <download_link>http://example.com/semver_test-8-1-0-beta1.tar.gz</download_link> + <date>1581603300</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-alpha1</name> + <version>8.1.0-alpha1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-1-0-alpha1-release</release_link> + <download_link>http://example.com/semver_test-8-1-0-alpha1.tar.gz</download_link> + <date>1579011300</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.3</name> + <version>8.0.3</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-3-release</release_link> + <download_link>http://example.com/semver_test-8-0-3.tar.gz</download_link> + <date>1576419300</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.2</name> + <version>8.0.2</version> + <status>unpublished</status> + <release_link>http://example.com/semver_test-8-0-2-release</release_link> + <download_link>http://example.com/semver_test-8-0-2.tar.gz</download_link> + <date>1573827300</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>1571235300</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-beta1</name> + <version>8.0.1-beta1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-1-beta1-release</release_link> + <download_link>http://example.com/semver_test-8-0-1-beta1.tar.gz</download_link> + <date>1568643300</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-alpha1</name> + <version>8.0.1-alpha1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-1-alpha1-release</release_link> + <download_link>http://example.com/semver_test-8-0-1-alpha1.tar.gz</download_link> + <date>1566051300</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>1563459300</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-beta1</name> + <version>8.0.0-beta1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-0-beta1-release</release_link> + <download_link>http://example.com/semver_test-8-0-0-beta1.tar.gz</download_link> + <date>1560867300</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-alpha1</name> + <version>8.0.0-alpha1</version> + <status>published</status> + <release_link>http://example.com/semver_test-8-0-0-alpha1-release</release_link> + <download_link>http://example.com/semver_test-8-0-0-alpha1.tar.gz</download_link> + <date>1558275300</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.1.0-unsupported.xml b/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0-unsupported.xml index 0a2e8f3a3d78e03b269ec7833d6051d37839a61e..b2b4740ef72287e2bb637d9d4187107570624834 100644 --- a/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0-unsupported.xml +++ b/core/modules/update/tests/fixtures/release-history/semver_test.8.1.0-unsupported.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -This XML file is the exact same as the file semver_test.1.xml except +This XML file is the exact same as the file semver_test.1.0.xml except 'supported_branches' in this file does not contain the '8.0.' branch. Therefore, all the releases that start with '8.0.' are in an unsupported branch. --> diff --git a/core/modules/update/tests/src/Functional/UpdateSemverTestBaselineTrait.php b/core/modules/update/tests/src/Functional/UpdateSemverTestBaselineTrait.php index 57af2d1cc90daaeeffd2d0db209e3652d8c9ac48..407d23cee222bc21c5a24116f79a342dc40f7a1b 100644 --- a/core/modules/update/tests/src/Functional/UpdateSemverTestBaselineTrait.php +++ b/core/modules/update/tests/src/Functional/UpdateSemverTestBaselineTrait.php @@ -198,8 +198,12 @@ public function testRevokedRelease() { * value: * - [::$updateProject].8.1.0.xml * 'supported_branches' is '8.0.,8.1.'. + * - [::$updateProject].8.1.0-supported.xml + * 'supported_branches' is '8.1.,9.0.,10.0.' * - [::$updateProject].8.1.0-unsupported.xml - * 'supported_branches' is '8.1.'. + * 'supported_branches' is '8.0.'. + * - [::$updateProject].8.1.0-unsupported.xml + * 'supported_branches' is '8.1.'. * They both have an '8.0.3' release that has the 'Release type' value of * 'unsupported' and an '8.1.0' release that has the 'Release type' value of * 'supported' and is the expected update. @@ -211,6 +215,22 @@ public function testUnsupportedRelease() { $this->standardTests(); $this->confirmUnsupportedStatus('8.0.3', '8.1.0', 'Recommended version:'); } + + // Test when the newest branch is unsupported and no update is available. + foreach (['8.1.0', '8.1.0-beta1'] as $version) { + $this->setProjectInstalledVersion($version); + $this->refreshUpdateStatus([$this->updateProject => '1.1-unsupported']); + $this->standardTests(); + $this->confirmUnsupportedStatus($version); + } + + // Test when the newest branch is supported. + $this->setProjectInstalledVersion('8.0.3'); + $this->refreshUpdateStatus([$this->updateProject => '1.0-supported']); + $this->standardTests(); + $this->confirmUnsupportedStatus('8.0.3', '8.1.0', 'Recommended version:'); + $this->assertVersionUpdateLinks('Also available', '10.0.0'); + $this->assertVersionUpdateLinks('Also available', '9.0.0', 1); } } diff --git a/core/modules/update/tests/src/Functional/UpdateTestBase.php b/core/modules/update/tests/src/Functional/UpdateTestBase.php index fc40b5ed10f3862cc5b244f8ad140e8cda0e765d..98d36f0828c989f859c5a8c1e23cdb229418c04c 100644 --- a/core/modules/update/tests/src/Functional/UpdateTestBase.php +++ b/core/modules/update/tests/src/Functional/UpdateTestBase.php @@ -169,9 +169,11 @@ protected function assertSecurityUpdates($project_path_part, array $expected_sec * The label for the update. * @param string $version * The project version. + * @param int $index + * (optional) The index of the link. */ - protected function assertVersionUpdateLinks($label, $version) { - $update_element = $this->findUpdateElementByLabel($label); + protected function assertVersionUpdateLinks($label, $version, int $index = 0) { + $update_element = $this->findUpdateElementByLabel($label, $index); // In the release notes URL the periods are replaced with dashes. $url_version = str_replace('.', '-', $version); @@ -207,21 +209,28 @@ protected function confirmRevokedStatus($revoked_version, $newer_version, $new_v * * @param string $unsupported_version * The unsupported version that is currently installed. - * @param string $newer_version - * The expected newer version to recommend. - * @param string $new_version_label - * The expected label for the newer version (for example 'Recommended - * version:' or 'Also available:'). + * @param string|null $newer_version + * (optional) The expected newer version to recommend. + * @param string|null $new_version_label + * (optional) The expected label for the newer version. For example + * 'Recommended version:' or 'Also available:'. */ - protected function confirmUnsupportedStatus($unsupported_version, $newer_version, $new_version_label) { + protected function confirmUnsupportedStatus(string $unsupported_version, string $newer_version = NULL, string $new_version_label = NULL) { $this->drupalGet('admin/reports/updates'); $this->clickLink('Check manually'); $this->checkForMetaRefresh(); $this->assertUpdateTableTextContains('Not supported!'); $this->assertUpdateTableTextContains($unsupported_version); $this->assertUpdateTableElementContains('error.svg'); - $this->assertUpdateTableTextContains('Release not supported: Your currently installed release is now unsupported, and is no longer available for download. Uninstalling everything included in this release or upgrading is strongly recommended!'); - $this->assertVersionUpdateLinks($new_version_label, $newer_version); + if ($newer_version === NULL) { + $this->assertUpdateTableTextContains('Release not supported: Your currently installed release is now unsupported, is no longer available for download and no update is available. Uninstalling everything included in this release is strongly recommended!'); + $this->assertUpdateTableTextNotContains('Recommended version'); + } + else { + $this->assertNotEmpty($newer_version); + $this->assertUpdateTableTextContains('Release not supported: Your currently installed release is now unsupported, and is no longer available for download. Uninstalling everything included in this release or upgrading is strongly recommended!'); + $this->assertVersionUpdateLinks($new_version_label, $newer_version); + } } /** @@ -279,15 +288,17 @@ protected function assertUpdateTableElementNotContains($text) { * @param string $label * The label for the update, for example "Recommended version:" or * "Latest version:". + * @param int $index + * (optional) The index of the element. * * @return \Behat\Mink\Element\NodeElement * The update element. */ - protected function findUpdateElementByLabel($label) { + protected function findUpdateElementByLabel($label, int $index = 0) { $update_elements = $this->getSession()->getPage() ->findAll('css', $this->updateTableLocator . " .project-update__version:contains(\"$label\")"); - $this->assertCount(1, $update_elements); - return $update_elements[0]; + $this->assertGreaterThanOrEqual($index, count($update_elements)); + return $update_elements[$index]; } } diff --git a/core/modules/update/update.compare.inc b/core/modules/update/update.compare.inc index 466ca09f68030916eb4a32769b84df18e4327f7c..c9d1877c19228d4afe091b6be03ab661bde1c32a 100644 --- a/core/modules/update/update.compare.inc +++ b/core/modules/update/update.compare.inc @@ -310,7 +310,7 @@ function update_calculate_project_update_status(&$project_data, $available) { foreach ($supported_branches as $supported_branch) { try { $target_major = ExtensionVersion::createFromSupportBranch($supported_branch)->getMajorVersion(); - + break; } catch (UnexpectedValueException $exception) { continue; @@ -356,7 +356,7 @@ function update_calculate_project_update_status(&$project_data, $available) { $recommended_version_without_extra = ''; $recommended_release = NULL; - + $release_is_supported = FALSE; foreach ($available['releases'] as $version => $release_info) { try { $release = ProjectRelease::createFromArray($release_info); @@ -374,6 +374,9 @@ function update_calculate_project_update_status(&$project_data, $available) { catch (UnexpectedValueException $exception) { continue; } + // This release is supported only if it is in a supported branch and is + // not unsupported. + $release_is_supported = $is_in_supported_branch($release->getVersion()) && !$release->isUnsupported(); // First, if this is the existing release, check a few conditions. if ($project_data['existing_version'] === $version) { if ($release->isInsecure()) { @@ -390,23 +393,28 @@ function update_calculate_project_update_status(&$project_data, $available) { 'data' => t('Your currently installed release has been revoked, and is no longer available for download. Uninstalling everything included in this release or upgrading is strongly recommended!'), ]; } - elseif ($release->isUnsupported()) { + elseif (!$release_is_supported) { $project_data['status'] = UpdateManagerInterface::NOT_SUPPORTED; if (empty($project_data['extra'])) { $project_data['extra'] = []; } + if (empty($project_data['recommended']) && empty($project_data['also'])) { + $unsupported_message = t('Your currently installed release is now unsupported, is no longer available for download and no update is available. Uninstalling everything included in this release is strongly recommended!'); + } + else { + $unsupported_message = t('Your currently installed release is now unsupported, and is no longer available for download. Uninstalling everything included in this release or upgrading is strongly recommended!'); + } $project_data['extra'][] = [ 'class' => ['release-not-supported'], 'label' => t('Release not supported'), - 'data' => t('Your currently installed release is now unsupported, and is no longer available for download. Uninstalling everything included in this release or upgrading is strongly recommended!'), + 'data' => $unsupported_message, ]; } } // Other than the currently installed release, ignore unpublished, insecure, // or unsupported updates. elseif (!$release->isPublished() || - !$is_in_supported_branch($release->getVersion()) || - $release->isUnsupported() || + !$release_is_supported || $release->isInsecure() ) { continue; @@ -464,7 +472,7 @@ function update_calculate_project_update_status(&$project_data, $available) { // Look for the 'recommended' version if we haven't found it yet (see // PHPDoc at the top of this function for the definition). if (!isset($project_data['recommended']) - && $release_major_version == $target_major) { + && $release_major_version == $target_major && $release_is_supported) { if ($recommended_version_without_extra !== $release_version_without_extra) { $recommended_version_without_extra = $release_version_without_extra; $recommended_release = $release_info; @@ -504,7 +512,7 @@ function update_calculate_project_update_status(&$project_data, $available) { // If we were unable to find a recommended version, then make the latest // version the recommended version if possible. - if (!isset($project_data['recommended']) && isset($project_data['latest_version'])) { + if (!isset($project_data['recommended']) && isset($project_data['latest_version']) && $release_is_supported) { $project_data['recommended'] = $project_data['latest_version']; }