Make WordPress Core

Ticket #42517: 42517.diff

File 42517.diff, 4.7 KB (added by birgire, 7 years ago)
  • src/wp-includes/functions.php

    diff --git src/wp-includes/functions.php src/wp-includes/functions.php
    index b5d2128..056e322 100644
    function get_file_data( $file, $default_headers, $context = '' ) { 
    48374837        // PHP will close file handle, but we are good citizens.
    48384838        fclose( $fp );
    48394839
    4840         // Make sure we catch CR-only line endings.
    4841         $file_data = str_replace( "\r", "\n", $file_data );
    4842 
     4840        // Make sure we catch CR-only line endings and strip opening and closing php tags.
     4841        $file_data = str_replace(
     4842                array(
     4843                        "\r",
     4844                        '<?php',
     4845                        '<?',
     4846                        '?>',
     4847                ),
     4848                array(
     4849                        "\n",
     4850                        '',
     4851                        '',
     4852                        '',
     4853                ),
     4854                $file_data
     4855        );
     4856       
    48434857        /**
    48444858         * Filters extra file headers by context.
    48454859         *
  • tests/phpunit/tests/file.php

    diff --git tests/phpunit/tests/file.php tests/phpunit/tests/file.php
    index 3aad09e..ae08c25 100644
    class Tests_File extends WP_UnitTestCase { 
    1616        }
    1717
    1818        /**
     19         * Tests get_file_data().
     20         *
     21         * @ticket 42517
    1922         * @group plugins
    2023         * @group themes
     24         * @dataProvider data_test_get_data_file
     25         *
     26         * @param string $file     File path, relative to the test data directory.
     27         * @param array  $headers  Default headers.
     28         * @param string $context  Context.
     29         * @param array  $expected Expected headers.
    2130         */
    22         function test_get_file_data() {
    23                 $theme_headers = array(
    24                         'Name' => 'Theme Name',
    25                         'ThemeURI' => 'Theme URI',
    26                         'Description' => 'Description',
    27                         'Version' => 'Version',
    28                         'Author' => 'Author',
    29                         'AuthorURI' => 'Author URI',
    30                 );
    31 
    32                 $actual = get_file_data( DIR_TESTDATA . '/themedir1/default/style.css', $theme_headers );
     31        public function test_get_file_data( $file, $headers, $context, $expected ) {
    3332
    34                 $expected = array(
    35                         'Name' => 'WordPress Default',
    36                         'ThemeURI' => 'http://wordpress.org/',
    37                         'Description' => 'The default WordPress theme based on the famous <a href="http://binarybonsai.com/kubrick/">Kubrick</a>.',
    38                         'Version' => '1.6',
    39                         'Author' => 'Michael Heilemann',
    40                         'AuthorURI' => 'http://binarybonsai.com/',
    41                 );
     33                $actual = get_file_data( DIR_TESTDATA . $file, $headers, $context );
    4234
    43                 foreach ( $actual as $header => $value )
    44                         $this->assertEquals( $expected[ $header ], $value, $header );
     35                foreach ( $actual as $header => $value ) {
     36                        $this->assertSame( $expected[ $header ], $value, $header );
     37                }
    4538        }
    4639
    4740        /**
    48          * @group plugins
    49          * @group themes
     41         * Dataprovider for test_get_file_data().
     42         *
     43         * @ticket 42517
     44         *
     45         * @return array {
     46         *     @type array $0... {
     47         *         @type array  $0 File path, relative to the test data directory.
     48         *         @type array  $1 Default headers.
     49         *         @type string $3 Context.
     50         *         @type array  $2 Expected headers.
     51         *     }
     52         * }
    5053         */
    51         function test_get_file_data_cr_line_endings() {
    52                 $headers = array( 'SomeHeader' => 'Some Header', 'Description' => 'Description', 'Author' => 'Author' );
    53                 $actual = get_file_data( DIR_TESTDATA . '/formatting/cr-line-endings-file-header.php', $headers );
    54                 $expected = array(
    55                         'SomeHeader' => 'Some header value!',
    56                         'Description' => 'This file is using CR line endings for a testcase.',
    57                         'Author' => 'A Very Old Mac',
     54        public function data_test_get_data_file() {
     55                return array(
     56                        array(
     57                                '/themedir1/page-templates/template-header.php',
     58                                array(
     59                                        'Template Name' => 'Template Name',
     60                                ),
     61                                '',
     62                                array(
     63                                        'Template Name' => 'This Template Header Is On One Line',
     64                                ),
     65                        ),
     66                        array(
     67                                '/themedir1/default/style.css',
     68                                array(
     69                                        'Name'        => 'Theme Name',
     70                                        'ThemeURI'    => 'Theme URI',
     71                                        'Description' => 'Description',
     72                                        'Version'     => 'Version',
     73                                        'Author'      => 'Author',
     74                                        'AuthorURI'   => 'Author URI',
     75                                ),
     76                                '',
     77                                array(
     78                                        'Name'        => 'WordPress Default',
     79                                        'ThemeURI'    => 'http://wordpress.org/',
     80                                        'Description' => 'The default WordPress theme based on the famous <a href="http://binarybonsai.com/kubrick/">Kubrick</a>.',
     81                                        'Version'     => '1.6',
     82                                        'Author'      => 'Michael Heilemann',
     83                                        'AuthorURI'   => 'http://binarybonsai.com/',
     84                                ),
     85                        ),
     86                        array(
     87                                '/formatting/cr-line-endings-file-header.php',
     88                                array(
     89                                        'SomeHeader'  => 'Some Header',
     90                                        'Description' => 'Description',
     91                                        'Author'      => 'Author',
     92                                ),
     93                                '',
     94                                array(
     95                                        'SomeHeader'  => 'Some header value!',
     96                                        'Description' => 'This file is using CR line endings for a testcase.',
     97                                        'Author'      => 'A Very Old Mac',
     98                                ),
     99                        ),
    58100                );
    59 
    60                 foreach ( $actual as $header => $value )
    61                         $this->assertEquals( $expected[ $header ], $value, $header );
    62101        }
    63102
    64103        function is_unique_writable_file($path, $filename) {