Make WordPress Core

Ticket #22267: 22267.d.diff

File 22267.d.diff, 2.7 KB (added by willmot, 10 years ago)

22267.d.diff updates the docs for trailingslashit and adds 2 new unit tests to cover working with backslashes.

  • src/wp-includes/formatting.php

    diff --git src/wp-includes/formatting.php src/wp-includes/formatting.php
    index 1e8c598..750e100 100644
    function backslashit($string) { 
    14821482/**
    14831483 * Appends a trailing slash.
    14841484 *
    1485  * Will remove trailing slash if it exists already before adding a trailing
     1485 * Will remove trailing slash or backslash if it exists already before adding a trailing
    14861486 * slash. This prevents double slashing a string or path.
    14871487 *
    14881488 * The primary use of this is for paths and thus should be used for paths. It is
    14891489 * not restricted to paths and offers no specific path support.
    14901490 *
    14911491 * @since 1.2.0
    1492  * @uses untrailingslashit() Unslashes string if it was slashed already.
     1492 * @uses untrailingslashit() Removes trailing slash or backslash if it exists.
    14931493 *
    14941494 * @param string $string What to add the trailing slash to.
    14951495 * @return string String with trailing slash added.
    14961496 */
    1497 function trailingslashit($string) {
    1498         return untrailingslashit($string) . '/';
     1497function trailingslashit( $string ) {
     1498        return untrailingslashit( $string ) . '/';
    14991499}
    15001500
    15011501/**
    1502  * Removes trailing slash if it exists.
     1502 * Removes trailing slash or backslash if it exists.
    15031503 *
    15041504 * The primary use of this is for paths and thus should be used for paths. It is
    15051505 * not restricted to paths and offers no specific path support.
    15061506 *
    15071507 * @since 2.2.0
    15081508 *
    1509  * @param string $string What to remove the trailing slash from.
    1510  * @return string String without the trailing slash.
     1509 * @param string $string What to remove the trailing slash or backslash from.
     1510 * @return string String without the trailing slash or backslash.
    15111511 */
    1512 function untrailingslashit($string) {
    1513         return rtrim($string, '/');
     1512function untrailingslashit( $string ) {
     1513        return rtrim( $string, '/\\' );
    15141514}
    15151515
    15161516/**
  • tests/phpunit/tests/formatting/Slashit.php

    diff --git tests/phpunit/tests/formatting/Slashit.php tests/phpunit/tests/formatting/Slashit.php
    index 9db62a5..04c6d7f 100644
    class Tests_Formatting_Slashit extends WP_UnitTestCase { 
    2121                $this->assertEquals("a", untrailingslashit("a////"));
    2222        }
    2323
     24        function test_removes_trailing_backslashes() {
     25                $this->assertEquals("a", untrailingslashit("a\\"));
     26                $this->assertEquals("a", untrailingslashit("a\\\\\\\\"));
     27        }
     28
    2429        function test_adds_trailing_slash() {
    2530                $this->assertEquals("a/", trailingslashit("a"));
    2631        }
    class Tests_Formatting_Slashit extends WP_UnitTestCase { 
    2833        function test_does_not_add_trailing_slash_if_one_exists() {
    2934                $this->assertEquals("a/", trailingslashit("a/"));
    3035        }
     36
     37        function test_converts_trailing_backslash_to_slash_if_one_exists() {
     38                $this->assertEquals("a/", trailingslashit("a\\"));
     39        }
    3140}