Code Modernization: Change create_function()
in phpunit/includes/plural-form-function.php
to closure.
`create_function()` has been deprecated in PHP >= 7.2 and removed in PHP 8. The only instance left in core was used in a test that was being skipped on PHP >= 7.2. This allows the test to run again. Follow-up to [41722], [41730]. Props jrf. Fixes #50899. git-svn-id: https://develop.svn.wordpress.org/trunk@48790 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
ab9aee8af4
commit
f0733600c9
@ -7,11 +7,14 @@
|
||||
* @param string $expression
|
||||
*/
|
||||
function tests_make_plural_form_function( $nplurals, $expression ) {
|
||||
$expression = str_replace( 'n', '$n', $expression );
|
||||
$func_body = "
|
||||
\$index = (int)($expression);
|
||||
return (\$index < $nplurals)? \$index : $nplurals - 1;";
|
||||
$closure = function ( $n ) use ( $nplurals, $expression ) {
|
||||
$expression = str_replace( 'n', $n, $expression );
|
||||
|
||||
// phpcs:ignore WordPress.PHP.RestrictedPHPFunctions.create_function_create_function
|
||||
return create_function( '$n', $func_body );
|
||||
// phpcs:ignore Squiz.PHP.Eval -- This is test code, not production.
|
||||
$index = (int) eval( 'return ' . $expression . ';' );
|
||||
|
||||
return ( $index < $nplurals ) ? $index : $nplurals - 1;
|
||||
};
|
||||
|
||||
return $closure;
|
||||
}
|
||||
|
@ -74,10 +74,6 @@ class PluralFormsTest extends WP_UnitTestCase {
|
||||
* @group external-http
|
||||
*/
|
||||
public function test_regression( $lang, $nplurals, $expression ) {
|
||||
if ( version_compare( phpversion(), '7.2', '>=' ) ) {
|
||||
$this->markTestSkipped( 'Lambda functions are deprecated in PHP 7.2' );
|
||||
}
|
||||
|
||||
require_once dirname( dirname( __DIR__ ) ) . '/includes/plural-form-function.php';
|
||||
|
||||
$parenthesized = self::parenthesize_plural_expression( $expression );
|
||||
|
Loading…
Reference in New Issue
Block a user