wordpress-develop/tests/phpunit/tests/functions/deprecated.php
Gary Pendergast c6c78490e2 Coding Standards: Fix the remaining issues in /tests.
All PHP files in `/tests` now conform to the PHP coding standards, or have exceptions appropriately marked.

Travis now also runs `phpcs` on the `/tests` directory, any future changes to these files must conform entirely to the WordPress PHP coding standards. 🎉

See #47632.



git-svn-id: https://develop.svn.wordpress.org/trunk@45607 602fd350-edb4-49c9-b593-d223f7449a82
2019-07-08 00:55:20 +00:00

192 lines
5.2 KiB
PHP

<?php
/**
* Test cases for deprecated functions, arguments, and files
*
* @package WordPress
* @subpackage Unit Tests
* @since 3.5
* @group deprecated
*/
class Test_Functions_Deprecated extends WP_UnitTestCase {
/**
* List of functions that have been passed through _deprecated_function()
*
* @var string[]
*/
protected $_deprecated_functions = array();
/**
* List of arguments that have been passed through _deprecated_argument()
*
* @var string[]
*/
protected $_deprecated_arguments = array();
/**
* List of files that have been passed through _deprecated_file()
*
* @var string[]
*/
protected $_deprecated_files = array();
/**
* Set up the test fixture
*
* @return void
*/
public function setUp() {
parent::setUp();
$this->_deprecated_functions = array();
$this->_deprecated_arguments = array();
$this->_deprecated_files = array();
add_action( 'deprecated_function_run', array( $this, 'deprecated_function' ), 10, 3 );
add_action( 'deprecated_function_trigger_error', '__return_false' );
add_action( 'deprecated_argument_run', array( $this, 'deprecated_argument' ), 10, 3 );
add_action( 'deprecated_argument_trigger_error', '__return_false' );
add_action( 'deprecated_file_included', array( $this, 'deprecated_file' ), 10, 4 );
add_action( 'deprecated_file_trigger_error', '__return_false' );
}
/**
* Tear down the test fixture
*
* @return void
*/
public function teardown() {
remove_action( 'deprecated_function_run', array( $this, 'deprecated_function' ), 10, 3 );
remove_action( 'deprecated_function_trigger_error', '__return_false' );
remove_action( 'deprecated_argument_run', array( $this, 'deprecated_argument' ), 10, 3 );
remove_action( 'deprecated_argument_trigger_error', '__return_false' );
remove_action( 'deprecated_file_included', array( $this, 'deprecated_argument' ), 10, 4 );
remove_action( 'deprecated_file_trigger_error', '__return_false' );
parent::tearDown();
}
/**
* Catch functions that have passed through _deprecated_function
*
* @param string $function
* @param string $replacement
* @param float $version
* @return void
*/
public function deprecated_function( $function, $replacement, $version ) {
$this->_deprecated_functions[] = array(
'function' => $function,
'replacement' => $replacement,
'version' => $version,
);
}
/**
* Catch arguments that have passed through _deprecated_argument
*
* @param string $argument
* @param string $message
* @param float $version
* @return void
*/
public function deprecated_argument( $argument, $message, $version ) {
$this->_deprecated_arguments[] = array(
'argument' => $argument,
'message' => $message,
'version' => $version,
);
}
/**
* Catch arguments that have passed through _deprecated_argument
*
* @param string $argument
* @param string $message
* @param float $version
* @return void
*/
public function deprecated_file( $file, $version, $replacement, $message ) {
$this->_deprecated_files[] = array(
'file' => $file,
'version' => $version,
'replacement' => $replacement,
'message' => $message,
);
}
/**
* Check if something was deprecated
*
* @param string $type argument|function|file
* @param string $name
* @return array|false
*/
protected function was_deprecated( $type, $name ) {
switch ( $type ) {
case 'argument':
$search = $this->_deprecated_arguments;
$key = 'argument';
break;
case 'function':
$search = $this->_deprecated_functions;
$key = 'function';
break;
default:
$search = $this->_deprecated_files;
$key = 'file';
}
foreach ( $search as $v ) {
if ( $name === $v[ $key ] ) {
return $v;
}
}
return false;
}
/**
* Test that wp_save_image_file has a deprecated argument when passed a GD resource
*
* @ticket 6821
* @expectedDeprecated wp_save_image_file
*/
public function test_wp_save_image_file_deprecated_with_gd_resource() {
if ( ! function_exists( 'imagejpeg' ) ) {
$this->fail( 'jpeg support unavailable' );
}
// Call wp_save_image_file
include_once( ABSPATH . 'wp-admin/includes/image-edit.php' );
$file = wp_tempnam();
$img = imagecreatefromjpeg( DIR_TESTDATA . '/images/canola.jpg' );
wp_save_image_file( $file, $img, 'image/jpeg', 1 );
imagedestroy( $img );
unlink( $file );
// Check if the arg was deprecated
$check = $this->was_deprecated( 'argument', 'wp_save_image_file' );
$this->assertNotEmpty( $check );
}
/**
* Test that wp_save_image_file doesn't have a deprecated argument when passed a WP_Image_Editor
*
* @ticket 6821
*/
public function test_wp_save_image_file_not_deprecated_with_wp_image_editor() {
if ( ! function_exists( 'imagejpeg' ) ) {
$this->fail( 'jpeg support unavailable' );
}
// Call wp_save_image_file
include_once( ABSPATH . 'wp-admin/includes/image-edit.php' );
$file = wp_tempnam();
$img = wp_get_image_editor( DIR_TESTDATA . '/images/canola.jpg' );
wp_save_image_file( $file, $img, 'image/jpeg', 1 );
unset( $img );
unlink( $file );
// Check if the arg was deprecated
$check = $this->was_deprecated( 'argument', 'wp_save_image_file' );
$this->assertFalse( $check );
}
}