WordPress.org

Make WordPress Core

Ticket #44551: 44551.diff

File 44551.diff, 4.4 KB (added by bpayton, 19 months ago)

fix and unit tests

  • src/wp-includes/class.wp-scripts.php

    diff --git src/wp-includes/class.wp-scripts.php src/wp-includes/class.wp-scripts.php
    index cfb72280fd..2dc87a8c9c 100644
    class WP_Scripts extends WP_Dependencies { 
    311311                        echo $cond_after;
    312312                }
    313313
    314                 // A single item may alias a set of items, by having dependencies, but no source.
    315                 if ( ! $obj->src ) {
    316                         return true;
    317                 }
    318 
    319                 if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
    320                         $src = $this->base_url . $src;
    321                 }
     314                $src_handle = '';
     315                if ( $obj->src ) {
     316                        if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) {
     317                                $src = $this->base_url . $src;
     318                        }
    322319
    323                 if ( ! empty( $ver ) ) {
    324                         $src = add_query_arg( 'ver', $ver, $src );
    325                 }
     320                        if ( ! empty( $ver ) ) {
     321                                $src = add_query_arg( 'ver', $ver, $src );
     322                        }
    326323
    327                 /** This filter is documented in wp-includes/class.wp-scripts.php */
    328                 $src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
     324                        /** This filter is documented in wp-includes/class.wp-scripts.php */
     325                        $src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) );
    329326
    330                 if ( ! $src ) {
    331                         return true;
     327                        $src_handle = "<script type='text/javascript' src='$src'></script>\n";
    332328                }
    333329
    334                 $tag = "{$cond_before}{$before_handle}<script type='text/javascript' src='$src'></script>\n{$after_handle}{$cond_after}";
     330                if ( $before_handle || $src_handle || $after_handle ) {
     331                        $tag = "{$cond_before}{$before_handle}${src_handle}{$after_handle}{$cond_after}";
    335332
    336                 /**
    337                 * Filters the HTML script tag of an enqueued script.
    338                 *
    339                 * @since 4.1.0
    340                 *
    341                 * @param string $tag    The `<script>` tag for the enqueued script.
    342                 * @param string $handle The script's registered handle.
    343                 * @param string $src    The script's source URL.
    344                 */
    345                 $tag = apply_filters( 'script_loader_tag', $tag, $handle, $src );
     333                        /**
     334                        * Filters the HTML script tag of an enqueued script.
     335                        *
     336                        * @since 4.1.0
     337                        *
     338                        * @param string $tag    The `<script>` tag for the enqueued script.
     339                        * @param string $handle The script's registered handle.
     340                        * @param string $src    The script's source URL.
     341                        */
     342                        $tag = apply_filters( 'script_loader_tag', $tag, $handle, $src );
    346343
    347                 if ( $this->do_concat ) {
    348                         $this->print_html .= $tag;
    349                 } else {
    350                         echo $tag;
     344                        if ( $this->do_concat ) {
     345                                $this->print_html .= $tag;
     346                        } else {
     347                                echo $tag;
     348                        }
    351349                }
    352350
    353351                return true;
  • tests/phpunit/tests/dependencies/scripts.php

    diff --git tests/phpunit/tests/dependencies/scripts.php tests/phpunit/tests/dependencies/scripts.php
    index 20ade29c0e..dba0908248 100644
    class Tests_Dependencies_Scripts extends WP_UnitTestCase { 
    405405                $this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
    406406        }
    407407
     408        /**
     409         * @ticket 44551
     410         */
     411        function test_wp_add_inline_script_before_for_handle_without_source() {
     412                wp_register_script( 'test-example', '' );
     413                wp_enqueue_script( 'test-example' );
     414                wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
     415
     416                $expected = "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
     417
     418                $this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
     419        }
     420
     421        /**
     422         * @ticket 44551
     423         */
     424        function test_wp_add_inline_script_after_for_handle_without_source() {
     425                wp_register_script( 'test-example', '' );
     426                wp_enqueue_script( 'test-example' );
     427                wp_add_inline_script( 'test-example', 'console.log("after");' );
     428
     429                $expected = "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
     430
     431                $this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
     432        }
     433
     434        /**
     435         * @ticket 44551
     436         */
     437        function test_wp_add_inline_script_before_and_after_for_handle_without_source() {
     438                wp_register_script( 'test-example', '' );
     439                wp_enqueue_script( 'test-example' );
     440                wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
     441                wp_add_inline_script( 'test-example', 'console.log("after");' );
     442
     443                $expected  = "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
     444                $expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
     445
     446                $this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
     447        }
     448
    408449        /**
    409450         * @ticket 14853
    410451         */