diff --git a/tests/phpunit/includes/testcase.php b/tests/phpunit/includes/testcase.php index 4b47ddca0a..dc51945ed9 100644 --- a/tests/phpunit/includes/testcase.php +++ b/tests/phpunit/includes/testcase.php @@ -182,7 +182,7 @@ class WP_UnitTestCase extends PHPUnit_Framework_TestCase { } /** - * Allow tests to be skipped on some automated runs + * Allow tests to be skipped on some automated runs. * * For test runs on Travis for something other than trunk/master * we want to skip tests that only need to run for master. @@ -224,6 +224,29 @@ class WP_UnitTestCase extends PHPUnit_Framework_TestCase { } } + /** + * Allow tests to be skipped if the HTTP request times out. + * + * @param array|WP_Error $response HTTP response. + */ + public function skipTestOnTimeout( $response ) { + if ( ! is_wp_error( $response ) ) { + return; + } + if ( 'connect() timed out!' === $response->get_error_message() ) { + $this->markTestSkipped( 'HTTP timeout' ); + } + + if ( false !== strpos( $response->get_error_message(), 'timed out after' ) ) { + $this->markTestSkipped( 'HTTP timeout' ); + } + + if ( 0 === strpos( $response->get_error_message(), 'stream_socket_client(): unable to connect to tcp://s.w.org:80' ) ) { + $this->markTestSkipped( 'HTTP timeout' ); + } + + } + /** * Unregister existing post types and register defaults. * diff --git a/tests/phpunit/tests/external-http/basic.php b/tests/phpunit/tests/external-http/basic.php index 8799746692..0da6b33511 100644 --- a/tests/phpunit/tests/external-http/basic.php +++ b/tests/phpunit/tests/external-http/basic.php @@ -13,9 +13,14 @@ class Tests_External_HTTP_Basic extends WP_UnitTestCase { preg_match( '#Recommendations.*PHP version ([0-9.]*)#s', $readme, $matches ); $response = wp_remote_get( 'https://secure.php.net/supported-versions.php' ); - if ( 200 != wp_remote_retrieve_response_code( $response ) ) { - $this->fail( 'Could not contact PHP.net to check versions.' ); + + $this->skipTestOnTimeout( $response ); + + $response_code = wp_remote_retrieve_response_code( $response ); + if ( 200 !== $response_code ) { + $this->fail( sprintf( 'Could not contact PHP.net to check versions. Response code: %s', $response_code ) ); } + $php = wp_remote_retrieve_body( $response ); preg_match_all( '#\s*\s*]*>\s*([0-9.]*)#s', $php, $phpmatches ); @@ -25,9 +30,14 @@ class Tests_External_HTTP_Basic extends WP_UnitTestCase { preg_match( '#Recommendations.*MySQL version ([0-9.]*)#s', $readme, $matches ); $response = wp_remote_get( "https://dev.mysql.com/doc/relnotes/mysql/{$matches[1]}/en/" ); - if ( 200 != wp_remote_retrieve_response_code( $response ) ) { - $this->fail( 'Could not contact dev.MySQL.com to check versions.' ); + + $this->skipTestOnTimeout( $response ); + + $response_code = wp_remote_retrieve_response_code( $response ); + if ( 200 !== $response_code ) { + $this->fail( sprintf( 'Could not contact dev.MySQL.com to check versions. Response code: %s', $response_code ) ); } + $mysql = wp_remote_retrieve_body( $response ); preg_match( '#(\d{4}-\d{2}-\d{2}), General Availability#', $mysql, $mysqlmatches ); diff --git a/tests/phpunit/tests/http/base.php b/tests/phpunit/tests/http/base.php index 337650e22b..dda4ba87fe 100644 --- a/tests/phpunit/tests/http/base.php +++ b/tests/phpunit/tests/http/base.php @@ -17,27 +17,6 @@ abstract class WP_HTTP_UnitTestCase extends WP_UnitTestCase { protected $http_request_args; - /** - * Mark test as skipped if the HTTP request times out. - */ - function skipTestOnTimeout( $response ) { - if( ! is_wp_error( $response ) ){ - return; - } - if ( 'connect() timed out!' === $response->get_error_message() ){ - $this->markTestSkipped( 'HTTP timeout' ); - } - - if ( false !== strpos( $response->get_error_message(), 'timed out after' ) ) { - $this->markTestSkipped( 'HTTP timeout' ); - } - - if ( 0 === strpos( $response->get_error_message(), 'stream_socket_client(): unable to connect to tcp://s.w.org:80' ) ) { - $this->markTestSkipped( 'HTTP timeout' ); - } - - } - function setUp() { if ( is_callable( array('WP_Http', '_getTransport') ) ) { diff --git a/tests/phpunit/tests/http/functions.php b/tests/phpunit/tests/http/functions.php index d9c764d9c1..a3f45428db 100644 --- a/tests/phpunit/tests/http/functions.php +++ b/tests/phpunit/tests/http/functions.php @@ -6,27 +6,6 @@ */ class Tests_HTTP_Functions extends WP_UnitTestCase { - /** - * Mark test as skipped if the HTTP request times out. - */ - function skipTestOnTimeout( $response ) { - if ( ! is_wp_error( $response ) ) { - return; - } - if ( 'connect() timed out!' === $response->get_error_message() ) { - $this->markTestSkipped( 'HTTP timeout' ); - } - - if ( false !== strpos( $response->get_error_message(), 'timed out after' ) ) { - $this->markTestSkipped( 'HTTP timeout' ); - } - - if ( 0 === strpos( $response->get_error_message(), 'stream_socket_client(): unable to connect to tcp://s.w.org:80' ) ) { - $this->markTestSkipped( 'HTTP timeout' ); - } - - } - public function setUp() { if ( ! extension_loaded( 'openssl' ) ) { $this->markTestSkipped( 'Tests_HTTP_Functions requires openssl.' );