diff --git a/src/wp-includes/pluggable.php b/src/wp-includes/pluggable.php index 0de6b0cc78..61b809c542 100644 --- a/src/wp-includes/pluggable.php +++ b/src/wp-includes/pluggable.php @@ -900,6 +900,17 @@ function wp_set_auth_cookie( $user_id, $remember = false, $secure = '', $token = */ do_action( 'set_logged_in_cookie', $logged_in_cookie, $expire, $expiration, $user_id, 'logged_in' ); + /** + * Allows preventing auth cookies from actually being sent to the client. + * + * @since 4.7.4 + * + * @param bool $send Whether to send auth cookies to the client. + */ + if ( ! apply_filters( 'send_auth_cookies', true ) ) { + return; + } + setcookie($auth_cookie_name, $auth_cookie, $expire, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); setcookie($auth_cookie_name, $auth_cookie, $expire, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, $secure, true); setcookie(LOGGED_IN_COOKIE, $logged_in_cookie, $expire, COOKIEPATH, COOKIE_DOMAIN, $secure_logged_in_cookie, true); @@ -922,6 +933,17 @@ function wp_clear_auth_cookie() { */ do_action( 'clear_auth_cookie' ); + /** + * Allows preventing auth cookies from actually being sent to the client. + * + * @since 4.7.4 + * + * @param bool $send Whether to send auth cookies to the client. + */ + if ( ! apply_filters( 'send_auth_cookies', true ) ) { + return; + } + setcookie( AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, ADMIN_COOKIE_PATH, COOKIE_DOMAIN ); setcookie( SECURE_AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, ADMIN_COOKIE_PATH, COOKIE_DOMAIN ); setcookie( AUTH_COOKIE, ' ', time() - YEAR_IN_SECONDS, PLUGINS_COOKIE_PATH, COOKIE_DOMAIN ); diff --git a/tests/phpunit/includes/functions.php b/tests/phpunit/includes/functions.php index 3a7c9bd98e..d9872fb541 100644 --- a/tests/phpunit/includes/functions.php +++ b/tests/phpunit/includes/functions.php @@ -164,21 +164,4 @@ function _upload_dir_https( $uploads ) { // Skip `setcookie` calls in auth_cookie functions due to warning: // Cannot modify header information - headers already sent by ... - -function wp_set_auth_cookie( $user_id, $remember = false, $secure = '', $token = '' ) { - $auth_cookie = null; - $expire = null; - $expiration = null; - $user_id = null; - $scheme = null; - /** This action is documented in wp-inclues/pluggable.php */ - do_action( 'set_auth_cookie', $auth_cookie, $expire, $expiration, $user_id, $scheme ); - $logged_in_cookie = null; - /** This action is documented in wp-inclues/pluggable.php */ - do_action( 'set_logged_in_cookie', $logged_in_cookie, $expire, $expiration, $user_id, 'logged_in' ); -} - -function wp_clear_auth_cookie() { - /** This action is documented in wp-inclues/pluggable.php */ - do_action( 'clear_auth_cookie' ); -} +tests_add_filter( 'send_auth_cookies', '__return_false' ); diff --git a/tests/phpunit/includes/testcase.php b/tests/phpunit/includes/testcase.php index 66dc212530..e5bbdaedbb 100644 --- a/tests/phpunit/includes/testcase.php +++ b/tests/phpunit/includes/testcase.php @@ -176,6 +176,27 @@ class WP_UnitTestCase extends PHPUnit_Framework_TestCase { self::flush_cache(); } + /** + * 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. + */ + public function skipOnAutomatedBranches() { + // gentenv can be disabled + if ( ! function_exists( 'getenv' ) ) { + return false; + } + + // https://docs.travis-ci.com/user/environment-variables/#Default-Environment-Variables + $travis_branch = getenv( 'TRAVIS_BRANCH' ); + $travis_pull_request = getenv( 'TRAVIS_PULL_REQUEST' ); + + if ( false !== $travis_pull_request && 'master' !== $travis_branch ) { + $this->markTestSkipped( 'For automated test runs, this test is only run on trunk/master' ); + } + } + /** * Unregister existing post types and register defaults. * diff --git a/tests/phpunit/tests/basic.php b/tests/phpunit/tests/basic.php index 2795824361..0d145f638d 100644 --- a/tests/phpunit/tests/basic.php +++ b/tests/phpunit/tests/basic.php @@ -8,6 +8,9 @@ class Tests_Basic extends WP_UnitTestCase { function test_license() { + // This test is designed to only run on trunk/master + $this->skipOnAutomatedBranches(); + $license = file_get_contents( ABSPATH . 'license.txt' ); preg_match( '#Copyright 2011-(\d+) by the contributors#', $license, $matches ); $this_year = date( 'Y' ); diff --git a/tests/phpunit/tests/external-http/basic.php b/tests/phpunit/tests/external-http/basic.php index 5b234a6579..e84ab6a454 100644 --- a/tests/phpunit/tests/external-http/basic.php +++ b/tests/phpunit/tests/external-http/basic.php @@ -5,6 +5,9 @@ class Tests_External_HTTP_Basic extends WP_UnitTestCase { function test_readme() { + // This test is designed to only run on trunk/master + $this->skipOnAutomatedBranches(); + $readme = file_get_contents( ABSPATH . 'readme.html' ); preg_match( '#Recommendations.*PHP version ([0-9.]*)#s', $readme, $matches );