Make WordPress Core

Ticket #37111: 37111.diff

File 37111.diff, 2.0 KB (added by joemcgill, 8 years ago)
  • src/wp-includes/formatting.php

    diff --git src/wp-includes/formatting.php src/wp-includes/formatting.php
    index 4f632ee..403b2ce 100644
    function remove_accents( $string ) { 
    17251725 * operating systems and special characters requiring special escaping
    17261726 * to manipulate at the command line. Replaces spaces and consecutive
    17271727 * dashes with a single dash. Trims period, dash and underscore from beginning
    1728  * and end of filename.
     1728 * and end of filename. It is not guaranteed that this function will return a
     1729 * filename that is allowed to be uploaded.
    17291730 *
    17301731 * @since 2.1.0
    17311732 *
    function sanitize_file_name( $filename ) { 
    17501751        $filename = preg_replace( '/[\r\n\t -]+/', '-', $filename );
    17511752        $filename = trim( $filename, '.-_' );
    17521753
     1754        if ( false === strpos( $filename, '.' ) ) {
     1755                $filetype = wp_check_filetype( 'test.' . $filename );
     1756                if ( $filetype['ext'] === $filename ) {
     1757                        $filename = 'unnamed-file.' . $filetype['ext'];
     1758                } else {
     1759                        $filename .= $filetype['ext'];
     1760                }
     1761        }
     1762
    17531763        // Split the filename into a base and extension[s]
    17541764        $parts = explode('.', $filename);
    17551765
  • tests/phpunit/tests/formatting/SanitizeFileName.php

    diff --git tests/phpunit/tests/formatting/SanitizeFileName.php tests/phpunit/tests/formatting/SanitizeFileName.php
    index 8927fec..b3b3003 100644
    class Tests_Formatting_SanitizeFileName extends WP_UnitTestCase { 
    5656        function test_replaces_percent_sign() {
    5757                $this->assertEquals( 'a22b.jpg', sanitize_file_name( 'a%22b.jpg' ) );
    5858        }
     59
     60        function test_replaces_unnammed_file_extentions() {
     61                // Test filenames with both supported and unsupported extensions.
     62                $this->assertEquals( 'unnamed-file.exe', sanitize_file_name( '_.exe' ) );
     63                $this->assertEquals( 'unnamed-file.jpg', sanitize_file_name( '_.jpg' ) );
     64        }
     65
     66        function test_replaces_unnammed_file_extentionless() {
     67                // Test a filenames that becomes extentionless.
     68                $this->assertEquals( 'no-extention', sanitize_file_name( '_.no-extention' ) );
     69        }
    5970}