Docs: Improve documentation for phpunit/includes/abstract-testcase.php.

Props andizer.
Fixes #46499.

git-svn-id: https://develop.svn.wordpress.org/trunk@44902 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2019-03-15 12:01:15 +00:00
parent 5e04716bfe
commit 981ed3fbc6

View File

@ -46,6 +46,11 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
return $factory; return $factory;
} }
/**
* Retrieves the name of the class the static method is called in.
*
* @return string The class name.
*/
public static function get_called_class() { public static function get_called_class() {
if ( function_exists( 'get_called_class' ) ) { if ( function_exists( 'get_called_class' ) ) {
return get_called_class(); return get_called_class();
@ -61,6 +66,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
return $backtrace[2]['class']; return $backtrace[2]['class'];
} }
/**
* Runs the routine before setting up all tests.
*/
public static function setUpBeforeClass() { public static function setUpBeforeClass() {
global $wpdb; global $wpdb;
@ -82,6 +90,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
self::commit_transaction(); self::commit_transaction();
} }
/**
* Runs the routine after all tests have been run.
*/
public static function tearDownAfterClass() { public static function tearDownAfterClass() {
parent::tearDownAfterClass(); parent::tearDownAfterClass();
@ -99,6 +110,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
self::commit_transaction(); self::commit_transaction();
} }
/**
* Runs the routine before each test is executed.
*/
public function setUp() { public function setUp() {
set_time_limit( 0 ); set_time_limit( 0 );
@ -165,6 +179,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
wp_set_current_user( 0 ); wp_set_current_user( 0 );
} }
/**
* Cleans the global scope (e.g `$_GET` and `$_POST`).
*/
public function clean_up_global_scope() { public function clean_up_global_scope() {
$_GET = array(); $_GET = array();
$_POST = array(); $_POST = array();
@ -269,7 +286,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @global array $wp_actions * @global array $wp_actions
* @global array $wp_current_filter * @global array $wp_current_filter
* @global array $wp_filter * @global array $wp_filter
* @return void
*/ */
protected function _backup_hooks() { protected function _backup_hooks() {
$globals = array( 'wp_actions', 'wp_current_filter' ); $globals = array( 'wp_actions', 'wp_current_filter' );
@ -289,7 +305,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @global array $wp_actions * @global array $wp_actions
* @global array $wp_current_filter * @global array $wp_current_filter
* @global array $wp_filter * @global array $wp_filter
* @return void
*/ */
protected function _restore_hooks() { protected function _restore_hooks() {
$globals = array( 'wp_actions', 'wp_current_filter' ); $globals = array( 'wp_actions', 'wp_current_filter' );
@ -306,6 +321,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
} }
} }
/**
* Flushes the WordPress object cache.
*/
public static function flush_cache() { public static function flush_cache() {
global $wp_object_cache; global $wp_object_cache;
$wp_object_cache->group_ops = array(); $wp_object_cache->group_ops = array();
@ -341,6 +359,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
} }
} }
/**
* Starts a database transaction.
*/
public function start_transaction() { public function start_transaction() {
global $wpdb; global $wpdb;
$wpdb->query( 'SET autocommit = 0;' ); $wpdb->query( 'SET autocommit = 0;' );
@ -359,6 +380,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
$wpdb->query( 'COMMIT;' ); $wpdb->query( 'COMMIT;' );
} }
/**
* Replaces the `CREATE TABLE` statement with a `CREATE TEMPORARY TABLE` statement.
*
* @param string $query The query to replace the statement for.
* @return string The altered query.
*/
public function _create_temporary_tables( $query ) { public function _create_temporary_tables( $query ) {
if ( 'CREATE TABLE' === substr( trim( $query ), 0, 12 ) ) { if ( 'CREATE TABLE' === substr( trim( $query ), 0, 12 ) ) {
return substr_replace( trim( $query ), 'CREATE TEMPORARY TABLE', 0, 12 ); return substr_replace( trim( $query ), 'CREATE TEMPORARY TABLE', 0, 12 );
@ -366,6 +393,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
return $query; return $query;
} }
/**
* Replaces the `DROP TABLE` statement with a `DROP TEMPORARY TABLE` statement.
*
* @param string $query The query to replace the statement for.
* @return string The altered query.
*/
public function _drop_temporary_tables( $query ) { public function _drop_temporary_tables( $query ) {
if ( 'DROP TABLE' === substr( trim( $query ), 0, 10 ) ) { if ( 'DROP TABLE' === substr( trim( $query ), 0, 10 ) ) {
return substr_replace( trim( $query ), 'DROP TEMPORARY TABLE', 0, 10 ); return substr_replace( trim( $query ), 'DROP TEMPORARY TABLE', 0, 10 );
@ -373,10 +406,23 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
return $query; return $query;
} }
/**
* Retrieves the `wp_die()` handler.
*
* @param callable $handler The current die handler.
* @return callable The test die handler.
*/
public function get_wp_die_handler( $handler ) { public function get_wp_die_handler( $handler ) {
return array( $this, 'wp_die_handler' ); return array( $this, 'wp_die_handler' );
} }
/**
* Throws an exception when called.
*
* @throws WPDieException Exception containing the message.
*
* @param string $message The `wp_die()` message.
*/
public function wp_die_handler( $message ) { public function wp_die_handler( $message ) {
if ( ! is_scalar( $message ) ) { if ( ! is_scalar( $message ) ) {
$message = '0'; $message = '0';
@ -385,6 +431,9 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
throw new WPDieException( $message ); throw new WPDieException( $message );
} }
/**
* Sets up the expectations for testing a deprecated call.
*/
public function expectDeprecated() { public function expectDeprecated() {
$annotations = $this->getAnnotations(); $annotations = $this->getAnnotations();
foreach ( array( 'class', 'method' ) as $depth ) { foreach ( array( 'class', 'method' ) as $depth ) {
@ -405,6 +454,11 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
add_action( 'doing_it_wrong_trigger_error', '__return_false' ); add_action( 'doing_it_wrong_trigger_error', '__return_false' );
} }
/**
* Handles a deprecated expectation.
*
* The DocBlock should contain `@expectedDeprecated` to trigger this.
*/
public function expectedDeprecated() { public function expectedDeprecated() {
$errors = array(); $errors = array();
@ -493,22 +547,44 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
} }
} }
/**
* Adds a deprecated function to the list of caught deprecated calls.
*
* @param string $function The deprecated function.
*/
public function deprecated_function_run( $function ) { public function deprecated_function_run( $function ) {
if ( ! in_array( $function, $this->caught_deprecated ) ) { if ( ! in_array( $function, $this->caught_deprecated ) ) {
$this->caught_deprecated[] = $function; $this->caught_deprecated[] = $function;
} }
} }
/**
* Adds a function called in a wrong way to the list of `_doing_it_wrong()` calls.
*
* @param string $function The function to add.
*/
public function doing_it_wrong_run( $function ) { public function doing_it_wrong_run( $function ) {
if ( ! in_array( $function, $this->caught_doing_it_wrong ) ) { if ( ! in_array( $function, $this->caught_doing_it_wrong ) ) {
$this->caught_doing_it_wrong[] = $function; $this->caught_doing_it_wrong[] = $function;
} }
} }
/**
* Asserts that the given value is an instance of WP_Error.
*
* @param mixed $actual The value to check.
* @param string $message Optional. Message to display when the assertion fails.
*/
public function assertWPError( $actual, $message = '' ) { public function assertWPError( $actual, $message = '' ) {
$this->assertInstanceOf( 'WP_Error', $actual, $message ); $this->assertInstanceOf( 'WP_Error', $actual, $message );
} }
/**
* Asserts that the given value is not an instance of WP_Error.
*
* @param mixed $actual The value to check.
* @param string $message Optional. Message to display when the assertion fails.
*/
public function assertNotWPError( $actual, $message = '' ) { public function assertNotWPError( $actual, $message = '' ) {
if ( is_wp_error( $actual ) && '' === $message ) { if ( is_wp_error( $actual ) && '' === $message ) {
$message = $actual->get_error_message(); $message = $actual->get_error_message();
@ -516,10 +592,23 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
$this->assertNotInstanceOf( 'WP_Error', $actual, $message ); $this->assertNotInstanceOf( 'WP_Error', $actual, $message );
} }
/**
* Asserts that the given value is an instance of IXR_Error.
*
* @param mixed $actual The value to check.
* @param string $message Optional. Message to display when the assertion fails.
*/
public function assertIXRError( $actual, $message = '' ) { public function assertIXRError( $actual, $message = '' ) {
$this->assertInstanceOf( 'IXR_Error', $actual, $message ); $this->assertInstanceOf( 'IXR_Error', $actual, $message );
} }
/**
* Asserts that the given value is not an instance of IXR_Error.
*
* @param mixed $actual The value to check.
* @param string $message Optional. Message to display when the assertion fails.
*/
public function assertNotIXRError( $actual, $message = '' ) { public function assertNotIXRError( $actual, $message = '' ) {
if ( $actual instanceof IXR_Error && '' === $message ) { if ( $actual instanceof IXR_Error && '' === $message ) {
$message = $actual->message; $message = $actual->message;
@ -527,6 +616,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
$this->assertNotInstanceOf( 'IXR_Error', $actual, $message ); $this->assertNotInstanceOf( 'IXR_Error', $actual, $message );
} }
/**
* Asserts that the given fields are present in the given object.
*
* @param object $object The object to check.
* @param array $fields The fields to check.
*/
public function assertEqualFields( $object, $fields ) { public function assertEqualFields( $object, $fields ) {
foreach ( $fields as $field_name => $field_value ) { foreach ( $fields as $field_name => $field_value ) {
if ( $object->$field_name != $field_value ) { if ( $object->$field_name != $field_value ) {
@ -535,6 +630,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
} }
} }
/**
* Asserts that two values are equal, with whitespace differences discarded.
*
* @param string $expected The expected value.
* @param string $actual The actual value.
*/
public function assertDiscardWhitespace( $expected, $actual ) { public function assertDiscardWhitespace( $expected, $actual ) {
$this->assertEquals( preg_replace( '/\s*/', '', $expected ), preg_replace( '/\s*/', '', $actual ) ); $this->assertEquals( preg_replace( '/\s*/', '', $expected ), preg_replace( '/\s*/', '', $actual ) );
} }
@ -760,7 +861,7 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* *
* This method defines the constants after including files. * This method defines the constants after including files.
* *
* @param Text_Template $template * @param Text_Template $template The template to prepare.
*/ */
public function prepareTemplate( Text_Template $template ) { public function prepareTemplate( Text_Template $template ) {
$template->setVar( array( 'constants' => '' ) ); $template->setVar( array( 'constants' => '' ) );
@ -918,7 +1019,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @since 4.0.0 * @since 4.0.0
* *
* @param string $dir Path to the directory to scan. * @param string $dir Path to the directory to scan.
*
* @return array List of file paths. * @return array List of file paths.
*/ */
public function files_in_dir( $dir ) { public function files_in_dir( $dir ) {
@ -998,7 +1098,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @since 4.1.0 * @since 4.1.0
* *
* @param string $microtime Time string generated by `microtime()`. * @param string $microtime Time string generated by `microtime()`.
*
* @return float `microtime()` output as a float. * @return float `microtime()` output as a float.
*/ */
protected function _microtime_to_float( $microtime ) { protected function _microtime_to_float( $microtime ) {
@ -1012,7 +1111,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* @since 4.3.0 * @since 4.3.0
* *
* @param int $user_id User ID. * @param int $user_id User ID.
*
* @return bool True if the user was deleted. * @return bool True if the user was deleted.
*/ */
public static function delete_user( $user_id ) { public static function delete_user( $user_id ) {
@ -1047,7 +1145,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* *
* @param array $upload Array of information about the uploaded file, provided by wp_upload_bits(). * @param array $upload Array of information about the uploaded file, provided by wp_upload_bits().
* @param int $parent_post_id Optional. Parent post ID. * @param int $parent_post_id Optional. Parent post ID.
*
* @return int|WP_Error The attachment ID on success. The value 0 or WP_Error on failure. * @return int|WP_Error The attachment ID on success. The value 0 or WP_Error on failure.
*/ */
public function _make_attachment( $upload, $parent_post_id = 0 ) { public function _make_attachment( $upload, $parent_post_id = 0 ) {
@ -1084,7 +1181,6 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Framework_TestCase {
* *
* @param int $post_id Post ID. * @param int $post_id Post ID.
* @param string $date Post date, in the format YYYY-MM-DD HH:MM:SS. * @param string $date Post date, in the format YYYY-MM-DD HH:MM:SS.
*
* @return int|false 1 on success, or false on error. * @return int|false 1 on success, or false on error.
*/ */
protected function update_post_modified( $post_id, $date ) { protected function update_post_modified( $post_id, $date ) {