mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-02-26 02:32:52 +00:00
The test verifies that `WP_Http::handle_redirects()` uses the last specified URL as the redirect location if multiple `Location` headers are specified in the response. It appears that the redirection script on api.wordpress.org no longer sends the expected two `Location` headers, causing the test to fail. While the exact cause is being investigated and confirmed, this commit disables the affected test for now, so that other commits and PRs are not blocked by these failures. Follow-up to [342/tests], [874/tests], [1329/tests], [24846]. Props costdev, SergeyBiryukov. See #57306. git-svn-id: https://develop.svn.wordpress.org/trunk@54955 602fd350-edb4-49c9-b593-d223f7449a82 |
||
|---|---|---|
| .. | ||
| admin | ||
| ajax | ||
| attachment | ||
| block-supports | ||
| block-templates | ||
| blocks | ||
| bookmark | ||
| canonical | ||
| category | ||
| comment | ||
| compat | ||
| cron | ||
| customize | ||
| date | ||
| db | ||
| dependencies | ||
| editor | ||
| error-protection | ||
| feed | ||
| filesystem | ||
| formatting | ||
| functions | ||
| general | ||
| hooks | ||
| http | ||
| image | ||
| import | ||
| includes | ||
| kses | ||
| l10n | ||
| link | ||
| load | ||
| media | ||
| menu | ||
| meta | ||
| multisite | ||
| oembed | ||
| option | ||
| pluggable | ||
| pomo | ||
| post | ||
| privacy | ||
| query | ||
| rest-api | ||
| rewrite | ||
| sitemaps | ||
| style-engine | ||
| taxonomy | ||
| term | ||
| theme | ||
| url | ||
| user | ||
| webfonts | ||
| widgets | ||
| wp | ||
| xmlrpc | ||
| actions.php | ||
| adminbar.php | ||
| auth.php | ||
| avatar.php | ||
| basic.php | ||
| block-template-utils.php | ||
| block-template.php | ||
| cache.php | ||
| canonical.php | ||
| comment.php | ||
| cron.php | ||
| db.php | ||
| dependencies.php | ||
| file.php | ||
| filters.php | ||
| functions.php | ||
| https-detection.php | ||
| https-migration.php | ||
| kses.php | ||
| l10n.php | ||
| link.php | ||
| locale.php | ||
| media.php | ||
| meta.php | ||
| post.php | ||
| query.php | ||
| readme.php | ||
| rest-api.php | ||
| rewrite.php | ||
| robots.php | ||
| shortcode.php | ||
| taxonomy.php | ||
| template.php | ||
| term.php | ||
| theme.php | ||
| upload.php | ||
| url.php | ||
| user.php | ||
| utils.php | ||
| walker.php | ||
| widgets.php | ||
<?php
/**
* Validate recommended versions for dependencies referenced in `readme.html`,
* based on external site support pages.
*
* @group external-http
*/
class Tests_Readme extends WP_UnitTestCase {
/**
* @coversNothing
*/
public function test_readme_php_version() {
$this->markTestSkipped(
'Temporarily disabled. Test should be re-enabled once WordPress is fully compatible with PHP 8.0+.'
);
// This test is designed to only run on trunk.
$this->skipOnAutomatedBranches();
$readme = file_get_contents( ABSPATH . 'readme.html' );
preg_match( '#Recommendations.*PHP</a> version <strong>([0-9.]*)#s', $readme, $matches );
$response_body = $this->get_response_body( 'https://www.php.net/supported-versions.php' );
preg_match_all( '#<tr class="stable">\s*<td>\s*<a [^>]*>\s*([0-9.]*)#s', $response_body, $php_matches );
$this->assertContains( $matches[1], $php_matches[1], "readme.html's Recommended PHP version is too old. Remember to update the WordPress.org Requirements page, too." );
}
/**
* @coversNothing
*/
public function test_readme_mysql_version() {
// This test is designed to only run on trunk.
$this->skipOnAutomatedBranches();
$readme = file_get_contents( ABSPATH . 'readme.html' );
preg_match( '#Recommendations.*MySQL</a> version <strong>([0-9.]*)#s', $readme, $matches );
$response_body = $this->get_response_body( "https://dev.mysql.com/doc/relnotes/mysql/{$matches[1]}/en/" );
// Retrieve the date of the first GA release for the recommended branch.
preg_match( '#.*(\d{4}-\d{2}-\d{2}), General Availability#s', $response_body, $mysql_matches );
/*
* Per https://www.mysql.com/support/, Oracle actively supports MySQL releases for 5 years from GA release.
*
* The currently recommended MySQL 5.7 branch moved from active support to extended support on 2020-10-21.
* As WordPress core is not fully compatible with MySQL 8.0 at this time, the "supported" period here
* is increased to 8 years to include extended support.
*
* TODO: Reduce this back to 5 years once MySQL 8.0 compatibility is achieved.
*/
$mysql_eol = gmdate( 'Y-m-d', strtotime( $mysql_matches[1] . ' +8 years' ) );
$current_date = gmdate( 'Y-m-d' );
$this->assertLessThan( $mysql_eol, $current_date, "readme.html's Recommended MySQL version is too old. Remember to update the WordPress.org Requirements page, too." );
}
/**
* @coversNothing
*/
public function test_readme_mariadb_version() {
// This test is designed to only run on trunk.
$this->skipOnAutomatedBranches();
$readme = file_get_contents( ABSPATH . 'readme.html' );
preg_match( '#Recommendations.*MariaDB</a> version <strong>([0-9.]*)#s', $readme, $matches );
$matches[1] = str_replace( '.', '', $matches[1] );
$response_body = $this->get_response_body( "https://mariadb.com/kb/en/release-notes-mariadb-{$matches[1]}-series/" );
// Retrieve the date of the first stable release for the recommended branch.
preg_match( '#.*Stable.*?(\d{2} [A-Za-z]{3} \d{4})#s', $response_body, $mariadb_matches );
// Per https://mariadb.org/about/#maintenance-policy, MariaDB releases are supported for 5 years.
$mariadb_eol = gmdate( 'Y-m-d', strtotime( $mariadb_matches[1] . ' +5 years' ) );
$current_date = gmdate( 'Y-m-d' );
$this->assertLessThan( $mariadb_eol, $current_date, "readme.html's Recommended MariaDB version is too old. Remember to update the WordPress.org Requirements page, too." );
}
/**
* Helper function to retrieve the response body or skip the test on HTTP timeout.
*
* @param string $url The URL to retrieve the response from.
* @return string The response body.
*/
public function get_response_body( $url ) {
$response = wp_remote_get( $url );
$this->skipTestOnTimeout( $response );
$response_code = wp_remote_retrieve_response_code( $response );
$response_body = wp_remote_retrieve_body( $response );
if ( 200 !== $response_code ) {
$parsed_url = parse_url( $url );
$error_message = sprintf(
'Could not contact %1$s to check versions. Response code: %2$s. Response body: %3$s',
$parsed_url['host'],
$response_code,
$response_body
);
if ( 503 === $response_code ) {
$this->markTestSkipped( $error_message );
}
$this->fail( $error_message );
}
return $response_body;
}
}