Make WordPress Core

Changeset 51586


Ignore:
Timestamp:
08/09/2021 05:19:21 PM (3 years ago)
Author:
SergeyBiryukov
Message:

Code Modernization: Rename the readonly() function to wp_readonly().

Since PHP 8.1, readonly is a reserved keyword and cannot be used as a function name.

In order to avoid PHP parser errors, the readonly() function was extracted to a separate file and is now only included conditionally on PHP < 8.1.

This commit also:

  • Moves the tests for the __checked_selected_helper() function and all the related functions to their own file.
  • Switches to named data providers. This makes the output when using the --testdox option more descriptive and is helpful when trying to debug which data set from a data provider failed the test.
  • Improves the tests in question to make them feature-complete and expand test coverage.

Props jrf, ayeshrajans, haosun, knutsp, swissspidy, SergeyBiryukov.
Fixes #53858.

Location:
trunk
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/phpunit.xml.dist

    r51583 r51586  
    66        colors="true"
    77        beStrictAboutTestsThatDoNotTestAnything="true"
     8        beStrictAboutOutputDuringTests="true"
    89        >
    910    <testsuites>
  • trunk/src/wp-includes/general-template.php

    r51298 r51586  
    48144814 * Compares the first two arguments and if identical marks as readonly
    48154815 *
    4816  * @since 4.9.0
     4816 * @since 5.9.0
    48174817 *
    48184818 * @param mixed $readonly One of the values to compare
     
    48214821 * @return string HTML attribute or empty string
    48224822 */
    4823 function readonly( $readonly, $current = true, $echo = true ) {
     4823function wp_readonly( $readonly, $current = true, $echo = true ) {
    48244824    return __checked_selected_helper( $readonly, $current, $echo, 'readonly' );
     4825}
     4826
     4827/*
     4828 * Include a compat `readonly()` function on PHP < 8.1. Since PHP 8.1,
     4829 * `readonly` is a reserved keyword and cannot be used as a function name.
     4830 * In order to avoid PHP parser errors, this function was extracted
     4831 * to a separate file and is only included conditionally on PHP < 8.1.
     4832 */
     4833if ( PHP_VERSION_ID < 80100 ) {
     4834    require_once __DIR__ . '/php-compat/readonly.php';
    48254835}
    48264836
  • trunk/tests/phpunit/multisite.xml

    r51583 r51586  
    66        colors="true"
    77        beStrictAboutTestsThatDoNotTestAnything="true"
     8        beStrictAboutOutputDuringTests="true"
    89        >
    910    <php>
  • trunk/tests/phpunit/tests/general/template.php

    r51568 r51586  
    573573
    574574    /**
    575      * @ticket 9862
    576      * @ticket 51166
    577      * @dataProvider data_selected_and_checked_with_equal_values
    578      *
    579      * @covers ::selected
    580      * @covers ::checked
    581      */
    582     function test_selected_and_checked_with_equal_values( $selected, $current ) {
    583         $this->assertSame( " selected='selected'", selected( $selected, $current, false ) );
    584         $this->assertSame( " checked='checked'", checked( $selected, $current, false ) );
    585     }
    586 
    587     function data_selected_and_checked_with_equal_values() {
    588         return array(
    589             array( 'foo', 'foo' ),
    590             array( '1', 1 ),
    591             array( '1', true ),
    592             array( 1, 1 ),
    593             array( 1, true ),
    594             array( true, true ),
    595             array( '0', 0 ),
    596             array( 0, 0 ),
    597             array( '', false ),
    598             array( false, false ),
    599         );
    600     }
    601 
    602     /**
    603      * @ticket 9862
    604      * @ticket 51166
    605      * @dataProvider data_selected_and_checked_with_non_equal_values
    606      *
    607      * @covers ::selected
    608      * @covers ::checked
    609      */
    610     function test_selected_and_checked_with_non_equal_values( $selected, $current ) {
    611         $this->assertSame( '', selected( $selected, $current, false ) );
    612         $this->assertSame( '', checked( $selected, $current, false ) );
    613     }
    614 
    615     function data_selected_and_checked_with_non_equal_values() {
    616         return array(
    617             array( '0', '' ),
    618             array( 0, '' ),
    619             array( 0, false ),
    620         );
    621     }
    622 
    623     /**
    624575     * @ticket 44183
    625576     *
Note: See TracChangeset for help on using the changeset viewer.