Make WordPress Core

Ticket #34790: 34790.diff

File 34790.diff, 7.3 KB (added by joemcgill, 9 years ago)

Fix responsive image tests after Twenty Sixteen

  • tests/phpunit/tests/media.php

    diff --git tests/phpunit/tests/media.php tests/phpunit/tests/media.php
    index bab45cf..50ac518 100644
    EOF; (this hunk was shorter than expected) 
    739739         * @ticket 33641
    740740         */
    741741        function test_wp_calculate_image_srcset() {
     742                global $_wp_additional_image_sizes;
     743
    742744                $year_month = date('Y/m');
    743745                $image_meta = wp_get_attachment_metadata( self::$large_id );
    744746                $uploads_dir_url = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/';
    745747
    746                 $expected = $uploads_dir_url . $year_month . '/' . $image_meta['sizes']['medium']['file'] . ' ' . $image_meta['sizes']['medium']['width'] . 'w, ' .
    747                                 $uploads_dir_url . $year_month . '/' . $image_meta['sizes']['medium_large']['file'] . ' ' . $image_meta['sizes']['medium_large']['width'] . 'w, ' .
    748                                 $uploads_dir_url . $year_month . '/' . $image_meta['sizes']['large']['file'] . ' ' . $image_meta['sizes']['large']['width'] . 'w, ' .
    749                                 $uploads_dir_url . $image_meta['file'] . ' ' . $image_meta['width'] . 'w';
    750 
    751748                // Set up test cases for all expected size names.
    752                 $sizes = array( 'medium', 'medium_large', 'large', 'full' );
     749                $intermediates = array( 'medium', 'medium_large', 'large', 'full' );
    753750
    754                 foreach ( $sizes as $size ) {
    755                         $image_url = wp_get_attachment_image_url( self::$large_id, $size );
    756                         $size_array = $this->_get_image_size_array_from_name( $size );
     751                // Add any soft crop intermediate sizes.
     752                foreach ( $_wp_additional_image_sizes as $name => $additional_size ) {
     753                        if ( ! $_wp_additional_image_sizes[$name]['crop'] || 0 === $_wp_additional_image_sizes[$name]['height'] ) {
     754                                $intermediates[] = $name;
     755                        }
     756                }
     757
     758                $expected = "";
     759
     760                foreach( $image_meta['sizes'] as $name => $size ) {
     761                        // Whitelist the sizes that should be included so we pick up 'medium_large' in 4.4.
     762                        if ( in_array( $name, $intermediates ) ) {
     763                                $expected .= $uploads_dir_url . $year_month . '/' . $size['file'] . ' ' . $size['width'] . 'w, ';
     764                        }
     765                }
     766
     767                // Add the full size width at the end.
     768                $expected .= $uploads_dir_url . $image_meta['file'] . ' ' . $image_meta['width'] .'w';
     769
     770                foreach ( $intermediates as $int ) {
     771                        $image_url = wp_get_attachment_image_url( self::$large_id, $int );
     772                        $size_array = $this->_get_image_size_array_from_name( $int );
    757773                        $this->assertSame( $expected, wp_calculate_image_srcset( $size_array, $image_url, $image_meta ) );
    758774                }
    759775        }
    EOF; 
    762779         * @ticket 33641
    763780         */
    764781        function test_wp_calculate_image_srcset_no_date_uploads() {
     782                global $_wp_additional_image_sizes;
     783
    765784                // Save the current setting for uploads folders
    766785                $uploads_use_yearmonth_folders = get_option( 'uploads_use_yearmonth_folders' );
    767786
    EOF; (this hunk was shorter than expected) 
    775794                $image_meta = wp_get_attachment_metadata( $id );
    776795                $uploads_dir_url = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/';
    777796
    778                 $expected = $uploads_dir_url . $image_meta['sizes']['medium']['file'] . ' ' . $image_meta['sizes']['medium']['width'] . 'w, ' .
    779                                 $uploads_dir_url . $image_meta['sizes']['medium_large']['file'] . ' ' . $image_meta['sizes']['medium_large']['width'] . 'w, ' .
    780                                 $uploads_dir_url . $image_meta['sizes']['large']['file'] . ' ' . $image_meta['sizes']['large']['width'] . 'w, ' .
    781                                 $uploads_dir_url . $image_meta['file'] . ' ' . $image_meta['width'] . 'w';
    782 
    783797                // Set up test cases for all expected size names.
    784                 $sizes = array( 'medium', 'medium_large', 'large', 'full' );
     798                $intermediates = array( 'medium', 'medium_large', 'large', 'full' );
    785799
    786                 foreach ( $sizes as $size ) {
    787                         $size_array = $this->_get_image_size_array_from_name( $size );
    788                         $image_url = wp_get_attachment_image_url( $id, $size );
     800                foreach ( $_wp_additional_image_sizes as $name => $additional_size ) {
     801                        if ( ! $_wp_additional_image_sizes[$name]['crop'] || 0 === $_wp_additional_image_sizes[$name]['height'] ) {
     802                                $intermediates[] = $name;
     803                        }
     804                }
     805
     806                $expected = "";
     807
     808                foreach( $image_meta['sizes'] as $name => $size ) {
     809                        // Whitelist the sizes that should be included so we pick up 'medium_large' in 4.4.
     810                        if ( in_array( $name, $intermediates ) ) {
     811                                $expected .= $uploads_dir_url . $size['file'] . ' ' . $size['width'] . 'w, ';
     812                        }
     813                }
     814
     815                // Add the full size width at the end.
     816                $expected .= $uploads_dir_url . $image_meta['file'] . ' ' . $image_meta['width'] .'w';
     817
     818                foreach ( $intermediates as $int ) {
     819                        $size_array = $this->_get_image_size_array_from_name( $int );
     820                        $image_url = wp_get_attachment_image_url( $id, $int );
    789821                        $this->assertSame( $expected, wp_calculate_image_srcset( $size_array, $image_url, $image_meta ) );
    790822                }
    791823
    EOF; (this hunk was shorter than expected) 
    859892         * @ticket 33641
    860893         */
    861894        function test_wp_get_attachment_image_srcset() {
     895                global $_wp_additional_image_sizes;
     896
    862897                $image_meta = wp_get_attachment_metadata( self::$large_id );
    863898                $size_array = array( 1600, 1200 ); // full size
    864899
    865900                $srcset = wp_get_attachment_image_srcset( self::$large_id, $size_array, $image_meta );
    866901
    867902                $year_month = date('Y/m');
     903                $uploads_dir = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/';
    868904
    869                 $expected = 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $year_month = date('Y/m') . '/'
    870                         . $image_meta['sizes']['medium']['file'] . ' ' . $image_meta['sizes']['medium']['width'] . 'w, ';
    871                 $expected .= 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $year_month = date('Y/m') . '/'
    872                         . $image_meta['sizes']['medium_large']['file'] . ' ' . $image_meta['sizes']['medium_large']['width'] . 'w, ';
    873                 $expected .= 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $year_month = date('Y/m') . '/'
    874                         . $image_meta['sizes']['large']['file'] . ' ' . $image_meta['sizes']['large']['width'] . 'w, ';
    875                 $expected .= 'http://' . WP_TESTS_DOMAIN . '/wp-content/uploads/' . $image_meta['file'] . ' ' . $image_meta['width'] .'w';
     905                // Set up test cases for all expected size names.
     906                $get_intermediate_image_sizes = get_intermediate_image_sizes();
     907                $intermediates = array( 'medium', 'medium_large', 'large', 'full' );
     908
     909                foreach ( $_wp_additional_image_sizes as $name => $additional_size ) {
     910                        if ( ! $_wp_additional_image_sizes[$name]['crop'] || 0 === $_wp_additional_image_sizes[$name]['height'] ) {
     911                                $intermediates[] = $name;
     912                        }
     913                }
     914
     915                $expected = "";
     916
     917                foreach( $image_meta['sizes'] as $name => $size ) {
     918                        // Whitelist the sizes that should be included so we pick up 'medium_large' in 4.4.
     919                        if ( in_array( $name, $intermediates ) ) {
     920                                $expected .= $uploads_dir . $year_month . '/' . $size['file'] . ' ' . $size['width'] . 'w, ';
     921                        }
     922                }
     923
     924                $expected .= $uploads_dir . $image_meta['file'] . ' ' . $image_meta['width'] .'w';
    876925
    877926                $this->assertSame( $expected, $srcset );
    878927        }
    EOF; 
    915965                // Test sizes against the default WP sizes.
    916966                $intermediates = array('thumbnail', 'medium', 'medium_large', 'large');
    917967
     968                // Make sure themes aren't filtering the sizes array.
     969                remove_all_filters( 'wp_calculate_image_sizes' );
     970
    918971                foreach( $intermediates as $int_size ) {
    919972                        $image = wp_get_attachment_image_src( self::$large_id, $int_size );
    920973
    EOF; 
    933986                $intermediates = array('thumbnail', 'medium', 'medium_large', 'large');
    934987                $image_meta = wp_get_attachment_metadata( self::$large_id );
    935988
     989                // Make sure themes aren't filtering the sizes array.
     990                remove_all_filters( 'wp_calculate_image_sizes' );
     991
    936992                foreach( $intermediates as $int_size ) {
    937993                        $size_array = $this->_get_image_size_array_from_name( $int_size );
    938994                        $image_src = $image_meta['sizes'][$int_size]['file'];