WordPress.org

Make WordPress Core

Ticket #43583: 43583.2.diff

File 43583.2.diff, 2.2 KB (added by desrosj, 3 years ago)
  • src/wp-includes/compat.php

     
    520520         * @return bool True if `$var` is countable, false otherwise.
    521521         */
    522522        function is_countable( $var ) {
    523                 return ( is_array( $var ) || $var instanceof Countable );
     523                return ( is_array( $var )
     524                        || $var instanceof Countable
     525                        || $var instanceof SimpleXMLElement
     526                        || $var instanceof ResourceBundle
     527                );
    524528        }
    525529}
    526530
  • tests/phpunit/tests/compat.php

     
    188188        }
    189189
    190190        /**
     191         * Test that is_countable() is always available (either from PHP or WP).
     192         *
    191193         * @ticket 43583
    192194         */
    193195        function test_is_countable_availability() {
     
    200202         * @ticket 43583
    201203         *
    202204         * @dataProvider countable_variable_test_data
     205         *
     206         * @param mixed $variable     Variable to check.
     207         * @param bool  $is_countable The expected return value of PHP 7.3 is_countable() function.
    203208         */
    204209        function test_is_countable_functionality( $variable, $is_countable ) {
    205                 $this->assertEquals( is_countable( $variable ), $is_countable );
     210                $this->assertSame( is_countable( $variable ), $is_countable );
    206211        }
    207212
    208213        /**
     
    232237        }
    233238
    234239        /**
     240         * Test is_countable() polyfill for ResourceBundle.
     241         *
     242         * @ticket 43583
     243         */
     244        function test_is_countable_ResourceBundle() {
     245                if ( ! class_exists( 'ResourceBundle' ) ) {
     246                        $this->markTestSkipped( 'The intl extension is not loaded. ResourceBundle not tested for is_countable().' );
     247                }
     248
     249                $this->assertTrue( is_countable( new ResourceBundle( 'en', null ) ) );
     250        }
     251
     252        /**
     253         * Test is_countable() polyfill for SimpleXMLElement.
     254         *
     255         * @ticket 43583
     256         */
     257        function test_is_countable_SimpleXMLElement() {
     258                if ( ! class_exists( 'SimpleXMLElement' ) ) {
     259                        $this->markTestSkipped( 'The xml extension is not loaded. SimpleXMLElement not tested for is_countable().' );
     260                }
     261
     262                $this->assertTrue( is_countable( new SimpleXMLElement( '<xml><tag>1</tag><tag>2</tag></xml>' ) ) );
     263        }
     264        /**
    235265         * @ticket 43619
    236266         */
    237267        function test_is_iterable_availability() {