WordPress.org

Make WordPress Core

Ticket #28517: 28517-with-tests.patch

File 28517-with-tests.patch, 3.7 KB (added by numis, 6 years ago)

Patch with tests

  • src/wp-includes/rewrite.php

     
    20412041         * @since 2.0.1
    20422042         * @access public
    20432043         * @param bool $hard Whether to update .htaccess (hard flush) or just update rewrite_rules option (soft flush). Default is true (hard).
     2044     * @return string Returns either 'soft' or 'hard' based on the type of flush attempted.
    20442045         */
    20452046        public function flush_rules($hard = true) {
    2046                 delete_option('rewrite_rules');
     2047                delete_option( 'rewrite_rules' );
    20472048                $this->wp_rewrite_rules();
    20482049                /**
    20492050                 * Filter whether a "hard" rewrite rule flush should be performed when requested.
     
    20542055                 *
    20552056                 * @param bool $hard Whether to flush rewrite rules "hard". Default true.
    20562057                 */
    2057                 if ( ! $hard || ! apply_filters( 'flush_rewrite_rules_hard', true ) ) {
    2058                         return;
     2058                if ( ! $hard && ! apply_filters( 'flush_rewrite_rules_hard', false ) ) {
     2059                        return 'soft';
    20592060                }
    2060                 if ( function_exists( 'save_mod_rewrite_rules' ) )
     2061                if ( function_exists( 'save_mod_rewrite_rules' ) ) {
    20612062                        save_mod_rewrite_rules();
    2062                 if ( function_exists( 'iis7_save_url_rewrite_rules' ) )
     2063                }
     2064                if ( function_exists( 'iis7_save_url_rewrite_rules' ) ) {
    20632065                        iis7_save_url_rewrite_rules();
     2066                }
     2067                return 'hard';
    20642068        }
    20652069
    20662070        /**
  • tests/phpunit/tests/rewrite.php

     
    117117
    118118                restore_current_blog();
    119119        }
     120
     121    /**
     122     * @ticket 28517
     123     */
     124    function test_flush_rules_hard_true_no_filters() {
     125        // hard true - filter false
     126        $actual = $GLOBALS['wp_rewrite']->flush_rules( true );
     127        $this->assertEquals( $actual, 'hard' );
     128    }
     129
     130    /**
     131     * @ticket 28517
     132     */
     133    function test_flush_rules_hard_false_no_filters() {
     134        // hard false - filter false
     135        $actual = $GLOBALS['wp_rewrite']->flush_rules( false );
     136        $this->assertEquals( $actual, 'soft' );
     137    }
     138
     139    /**
     140     * @ticket 28517
     141     */
     142    function test_flush_rules_hard_true_with_filters_true() {
     143        // adding a filter that returns true
     144        add_filter( 'flush_rewrite_rules_hard', function() { return true; } );
     145
     146        // hard true - filter true
     147        $actual = $GLOBALS['wp_rewrite']->flush_rules( true );
     148        $this->assertEquals( $actual, 'hard' );
     149    }
     150
     151    /**
     152     * @ticket 28517
     153     */
     154    function test_flush_rules_hard_true_with_filters_false() {
     155        // adding a filter that returns true
     156        add_filter( 'flush_rewrite_rules_hard', function() { return false; } );
     157
     158        // hard true - filter true
     159        $actual = $GLOBALS['wp_rewrite']->flush_rules( true );
     160        $this->assertEquals( $actual, 'hard' );
     161    }
     162
     163    /**
     164     * @ticket 28517
     165     */
     166    function test_flush_rules_hard_false_with_filters_true() {
     167        // adding a filter that returns true
     168        add_filter( 'flush_rewrite_rules_hard', function() { return true; } );
     169
     170        // hard false - filter true
     171        $actual = $GLOBALS['wp_rewrite']->flush_rules( false );
     172        $this->assertEquals( $actual, 'hard' );
     173    }
     174
     175    /**
     176     * @ticket 28517
     177     */
     178    function test_flush_rules_hard_false_with_filters_false() {
     179        // adding a filter that returns true
     180        add_filter( 'flush_rewrite_rules_hard', function() { return false; } );
     181
     182        // hard false - filter false
     183        $actual = $GLOBALS['wp_rewrite']->flush_rules( false );
     184        $this->assertEquals( $actual, 'soft' );
     185    }
    120186}
     187 No newline at end of file