Make WordPress Core

Changeset 45013


Ignore:
Timestamp:
03/26/2019 12:45:57 AM (7 years ago)
Author:
johnbillion
Message:

Build/Test tools: Fix the Travis CI build for the 4.0 branch.

Among other fixes, this backports [29860], [29869], [29954], [30160], [30530].

Fixes #46646

Location:
branches/4.0
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • branches/4.0

  • branches/4.0/package.json

    r44886 r45013  
    2626    "grunt-legacy-util": "^0.2.0",
    2727    "grunt-patch-wordpress": "~0.2.1",
    28     "grunt-sass": "~0.14.0",
     28    "grunt-sass": "~0.16.0",
    2929    "matchdep": "~0.3.0"
    3030  }
  • branches/4.0/phpunit.xml.dist

    r25165 r45013  
    2626        <log type="junit" target="tests/phpunit/build/logs/junit.xml" logIncompleteSkipped="false"/>
    2727    </logging>
     28    <php>
     29        <const name="WP_RUN_CORE_TESTS" value="1" />
     30    </php>
    2831</phpunit>
  • branches/4.0/tests/phpunit/includes/testcase.php

    r42065 r45013  
    3838                $this->factory = new WP_UnitTest_Factory;
    3939                $this->clean_up_global_scope();
     40
     41                /*
     42                 * When running core tests, ensure that post types and taxonomies
     43                 * are reset for each test. We skip this step for non-core tests,
     44                 * given the large number of plugins that register post types and
     45                 * taxonomies at 'init'.
     46                 */
     47                if ( defined( 'WP_RUN_CORE_TESTS' ) && WP_RUN_CORE_TESTS ) {
     48                        $this->reset_post_types();
     49                        $this->reset_taxonomies();
     50                }
     51
    4052                $this->start_transaction();
    4153                $this->expectDeprecated();
    4254                add_filter( 'wp_die_handler', array( $this, 'get_wp_die_handler' ) );
     55        }
     56
     57        /**
     58         * Unregister existing post types and register defaults.
     59         *
     60         * Run before each test in order to clean up the global scope, in case
     61         * a test forgets to unregister a post type on its own, or fails before
     62         * it has a chance to do so.
     63         */
     64        protected function reset_post_types() {
     65                foreach ( get_post_types() as $pt ) {
     66                        _unregister_post_type( $pt );
     67                }
     68                create_initial_post_types();
     69        }
     70
     71        /**
     72         * Unregister existing taxonomies and register defaults.
     73         *
     74         * Run before each test in order to clean up the global scope, in case
     75         * a test forgets to unregister a taxonomy on its own, or fails before
     76         * it has a chance to do so.
     77         */
     78        protected function reset_taxonomies() {
     79                foreach ( get_taxonomies() as $tax ) {
     80                        _unregister_taxonomy( $tax );
     81                }
     82                create_initial_taxonomies();
    4383        }
    4484
  • branches/4.0/tests/phpunit/multisite.xml

    r25294 r45013  
    2626        </exclude>
    2727    </groups>
     28    <php>
     29        <const name="WP_RUN_CORE_TESTS" value="1" />
     30    </php>
    2831</phpunit>
  • branches/4.0/tests/phpunit/tests/canonical/https.php

    r28713 r45013  
    4545         * @ticket 27954
    4646         */
    47         public function test_http_request_with_https_home() {
    48 
    49                 add_filter( 'home_url', array( $this, 'set_https' ) );
    50 
    51                 $redirect = redirect_canonical( $this->http, false );
    52 
    53                 $this->assertEquals( $redirect, $this->https );
    54 
    55                 remove_filter( 'home_url', array( $this, 'set_https' ) );
    56 
    57         }
    58 
    59         /**
    60          * @ticket 27954
    61          */
    6247        public function test_https_request_with_https_home() {
    6348
  • branches/4.0/tests/phpunit/tests/formatting/SanitizeTitleWithDashes.php

    r25002 r45013  
    3434        function test_handles_non_entity_ampersands() {
    3535                $this->assertEquals("penn-teller-bull", sanitize_title_with_dashes("penn & teller bull"));
    36         }
    37 
    38         /**
    39          * @ticket 10823
    40          */
    41         function test_strips_entities() {
    42                 $this->assertEquals("no-entities-here", sanitize_title_with_dashes("No &nbsp; Entities &ndash; Here &amp;"));
    43                 $this->assertEquals("one-two", sanitize_title_with_dashes("One &amp; Two", '', 'save'));
    44                 $this->assertEquals("one-two", sanitize_title_with_dashes("One &#123; Two;", '', 'save'));
    45                 $this->assertEquals("one-two", sanitize_title_with_dashes("One & Two;", '', 'save'));
    46                 $this->assertEquals("one-two", sanitize_title_with_dashes("One Two™;", '', 'save'));
    47                 $this->assertEquals("one-two", sanitize_title_with_dashes("One &&amp; Two;", '', 'save'));
    48                 $this->assertEquals("onetwo", sanitize_title_with_dashes("One&Two", '', 'save'));
    49                 $this->assertEquals("onetwo-test", sanitize_title_with_dashes("One&Two Test;", '', 'save'));
    5036        }
    5137
  • branches/4.0/tests/phpunit/tests/formatting/SanitizeUser.php

    r25002 r45013  
    1010                $this->assertEquals($expected, sanitize_user($input));
    1111        }
    12         /**
    13          * @ticket 10823
    14          */
    15         function test_strips_entities() {
    16                 $this->assertEquals("ATT", sanitize_user("AT&amp;T"));
    17                 $this->assertEquals("ATT Test;", sanitize_user("AT&amp;T Test;"));
    18                 $this->assertEquals("AT&T Test;", sanitize_user("AT&T Test;"));
    19         }
    2012        function test_strips_percent_encoded_octets() {
    2113                $expected = is_multisite() ? 'franois' : 'Franois';
  • branches/4.0/tests/phpunit/tests/functions.php

    r29342 r45013  
    130130                $this->assertEquals( 'abcdefg.png', wp_unique_filename( $testdir, 'abcde\\fg.png' ), 'Double slashed not removed' );
    131131                $this->assertEquals( 'abcdefg.png', wp_unique_filename( $testdir, 'abcde\\\fg.png' ), 'Tripple slashed not removed' );
    132         }
    133 
    134         /**
    135          * @ticket 9930
    136          */
    137         function test_is_serialized() {
    138                 $cases = array(
    139                         serialize(null),
    140                         serialize(true),
    141                         serialize(false),
    142                         serialize(-25),
    143                         serialize(25),
    144                         serialize(1.1),
    145                         serialize(2.1E+200),
    146                         serialize('this string will be serialized'),
    147                         serialize("a\nb"),
    148                         serialize(array()),
    149                         serialize(array(1,1,2,3,5,8,13)),
    150                         serialize( (object)array('test' => true, '3', 4) )
    151                 );
    152                 foreach ( $cases as $case )
    153                         $this->assertTrue( is_serialized($case), "Serialized data: $case" );
    154 
    155                 $not_serialized = array(
    156                         'a string',
    157                         'garbage:a:0:garbage;',
    158                         'b:4;',
    159                         's:4:test;'
    160                 );
    161                 foreach ( $not_serialized as $case )
    162                         $this->assertFalse( is_serialized($case), "Test data: $case" );
    163132        }
    164133
  • branches/4.0/tests/phpunit/tests/mail.php

    r32148 r45013  
    7070                $this->assertTrue(strpos($GLOBALS['phpmailer']->mock_sent[0]['header'], 'boundary="----=_Part_4892_25692638.1192452070893"') > 0);
    7171                $this->assertTrue(strpos($GLOBALS['phpmailer']->mock_sent[0]['header'], 'charset=') > 0);
    72         }
    73 
    74         /**
    75          * @ticket 15448
    76          */
    77         function test_wp_mail_plain_and_html() {
    78                 $to = 'user@example.com';
    79                 $subject = 'Test email with plain text and html versions';
    80                 $messages = array( 'text/plain' => 'Here is some plain text.',
    81                                            'text/html' =>'<html><head></head><body>Here is the HTML ;-)<body></html>' );
    82 
    83                 wp_mail( $to, $subject, $messages );
    84 
    85                 preg_match( '/boundary="(.*)"/', $GLOBALS['phpmailer']->mock_sent[0]['header'], $matches);
    86                 $boundry = $matches[1];
    87                 $body = '--' . $boundry . '
    88 Content-Type: text/plain; charset = "UTF-8"
    89 Content-Transfer-Encoding: 8bit
    90 
    91 Here is some plain text.
    92 
    93 
    94 --' . $boundry . '
    95 Content-Type: text/html; charset = "UTF-8"
    96 Content-Transfer-Encoding: 8bit
    97 
    98 <html><head></head><body>Here is the HTML ;-)<body></html>
    99 
    100 
    101 
    102 --' . $boundry . '--
    103 ';
    104                 // We need some better assertions here but these test the behaviour for now.
    105                 $this->assertEquals($body, $GLOBALS['phpmailer']->mock_sent[0]['body']);
    10672        }
    10773
  • branches/4.0/tests/phpunit/tests/post.php

    r40456 r45013  
    741741
    742742        /**
    743          * @ticket 19373
    744          */
    745         function test_insert_programmatic_without_current_user_success() {
    746                 $this->_unset_current_user();
    747 
    748                 register_taxonomy( 'test_tax', 'post' );
    749 
    750                 $title = rand_str();
    751                 $post_data = array(
    752                         'post_author' => $this->author_id,
    753                         'post_status' => 'public',
    754                         'post_content' => rand_str(),
    755                         'post_title' => $title,
    756                         'tax_input' => array(
    757                                 'test_tax' => array( 'term', 'term2', 'term3' )
    758                         )
    759                 );
    760                 // with sanitize set to false
    761                 $insert_post_id = wp_insert_post( $post_data, true, false );
    762 
    763                 $post = get_post( $insert_post_id );
    764                 $this->assertEquals( $post->post_author, $this->author_id );
    765                 $this->assertEquals( $post->post_title, $title );
    766 
    767                 $terms = wp_get_object_terms( $insert_post_id, 'test_tax' );
    768                 $this->assertTrue( ( is_array( $terms ) && count( $terms ) == 3 ) );
    769         }
    770 
    771         /**
    772          * @ticket 19373
    773          */
    774         function test_insert_programmatic_without_current_user_fail() {
    775                 $this->_unset_current_user();
    776 
    777                 register_taxonomy( 'test_tax', 'post' );
    778 
    779                 $title = rand_str();
    780                 $post_data = array(
    781                         // post_author not set
    782                         'post_status' => 'public',
    783                         'post_content' => rand_str(),
    784                         'post_title' => $title,
    785                         'tax_input' => array(
    786                                 'test_tax' => array( 'term', 'term2', 'term3' )
    787                         )
    788                 );
    789                 // with sanitize set to false
    790                 $insert_post_id = wp_insert_post( $post_data, true, false );
    791 
    792                 // should error because no default user exists and no post author is passed in
    793                 $this->assertInstanceOf( 'WP_Error', $insert_post_id );
    794                 $this->assertEquals( 'empty_author', $insert_post_id->get_error_code() );
    795         }
    796 
    797         /**
    798743         * @ticket 24803
    799744         */
  • branches/4.0/tests/phpunit/tests/post/filtering.php

    r25002 r45013  
    9191        }
    9292
    93         /**
    94          * make sure unbalanced tags are fixed when they span a --more-- tag
    95          * @ticket 6297
    96          */
    97         function test_post_content_unbalanced_more() {
    98                 $content = <<<EOF
    99 <em>some text<!--more-->
    100 that's continued after the jump</em>
    101 EOF;
    102 
    103                 $expected = <<<EOF
    104 <em>some text</em><!--more-->
    105 that's continued after the jump
    106 EOF;
    107 
    108                 $id = $this->factory->post->create( array( 'post_content' => $content ) );
    109                 $post = get_post($id);
    110 
    111                 $this->assertEquals( $expected, $post->post_content );
    112         }
    113 
    114         /**
    115          * make sure unbalanced tags are fixed when they span a --nextpage-- tag
    116          * @ticket 6297
    117          */
    118         function test_post_content_unbalanced_nextpage() {
    119                 $content = <<<EOF
    120 <em>some text<!--nextpage-->
    121 that's continued after the jump</em>
    122 EOF;
    123 
    124                 $expected = <<<EOF
    125 <em>some text</em><!--nextpage-->
    126 that's continued after the jump
    127 EOF;
    128 
    129                 $id = $this->factory->post->create( array( 'post_content' => $content ) );
    130                 $post = get_post($id);
    131 
    132                 $this->assertEquals( $expected, $post->post_content );
    133         }
    134 
    135         /**
    136          * make sure unbalanced tags are fixed when they span both --more-- and --nextpage-- tags (in that order)
    137          * @ticket 6297
    138          */
    139         function test_post_content_unbalanced_more_nextpage() {
    140                 $content = <<<EOF
    141 <em>some text<!--more-->
    142 that's continued after the jump</em>
    143 <!--nextpage-->
    144 <p>and the next page
    145 <!--nextpage-->
    146 breaks the graf</p>
    147 EOF;
    148 
    149                 $expected = <<<EOF
    150 <em>some text</em><!--more-->
    151 that's continued after the jump
    152 <!--nextpage-->
    153 <p>and the next page
    154 </p><!--nextpage-->
    155 breaks the graf
    156 EOF;
    157 
    158                 $id = $this->factory->post->create( array( 'post_content' => $content ) );
    159                 $post = get_post($id);
    160 
    161                 $this->assertEquals( $expected, $post->post_content );
    162         }
    163 
    164         /**
    165          * make sure unbalanced tags are fixed when they span both --nextpage-- and --more-- tags (in that order)
    166          * @ticket 6297
    167          */
    168         function test_post_content_unbalanced_nextpage_more() {
    169                 $content = <<<EOF
    170 <em>some text<!--nextpage-->
    171 that's continued after the jump</em>
    172 <!--more-->
    173 <p>and the next page
    174 <!--nextpage-->
    175 breaks the graf</p>
    176 EOF;
    177 
    178                 $expected = <<<EOF
    179 <em>some text</em><!--nextpage-->
    180 that's continued after the jump
    181 <!--more-->
    182 <p>and the next page
    183 </p><!--nextpage-->
    184 breaks the graf
    185 EOF;
    186 
    187                 $id = $this->factory->post->create( array( 'post_content' => $content ) );
    188                 $post = get_post($id);
    189 
    190                 $this->assertEquals( $expected, $post->post_content );
    191         }
    192 
    19393        // make sure unbalanced tags are untouched when the balance option is off
    19494        function test_post_content_nobalance_nextpage_more() {
  • branches/4.0/tests/phpunit/tests/post/listPages.php

    r28400 r45013  
    344344        }
    345345
    346         /**
    347          * @ticket 27326
    348          */
    349         function test_wp_list_page_combo_exclude_depth() {
    350                 $args = array(
    351                         'echo'          => false,
    352                         'exclude'       => '3',
    353                         'depth'         => 3
    354                 );
    355                 $expected['exclude_depth'] = '<li class="pagenav">Pages<ul><li class="page_item page-item-1 page_item_has_children"><a href="' . get_permalink( 1 ) . '">Parent 1</a>
    356 <ul class=\'children\'>
    357         <li class="page_item page-item-4"><a href="' . get_permalink( 4 ) . '">Child 1</a></li>
    358         <li class="page_item page-item-5"><a href="' . get_permalink( 5 ) . '">Child 2</a></li>
    359         <li class="page_item page-item-6"><a href="' . get_permalink( 6 ) . '">Child 3</a></li>
    360 </ul>
    361 </li>
    362 <li class="page_item page-item-2 page_item_has_children"><a href="' . get_permalink( 2 ) . '">Parent 2</a>
    363 <ul class=\'children\'>
    364         <li class="page_item page-item-7"><a href="' . get_permalink( 7 ) . '">Child 1</a></li>
    365         <li class="page_item page-item-8"><a href="' . get_permalink( 8 ) . '">Child 2</a></li>
    366         <li class="page_item page-item-9"><a href="' . get_permalink( 9 ) . '">Child 3</a></li>
    367 </ul>
    368 </li>
    369 <li class="page_item page-item-10"><a href="' . get_permalink( 10 ) . '">Child 1</a></li>
    370 <li class="page_item page-item-11"><a href="' . get_permalink( 11 ) . '">Child 2</a></li>
    371 <li class="page_item page-item-12"><a href="' . get_permalink( 12 ) . '">Child 3</a></li>
    372 </ul></li>';
    373                 $actual = wp_list_pages( $args );
    374                 $this->AssertEquals( $expected['exclude_depth'], $actual );
    375         }
    376 
    377346}
  • branches/4.0/tests/phpunit/tests/query/results.php

    r30260 r45013  
    280280
    281281        /**
    282          * @ticket 18897
    283          */
    284         function test_query_offset_and_paged() {
    285                 $posts = $this->q->query('paged=2&offset=3');
    286 
    287                 $expected = array (
    288                         0 => 'many-trackbacks',
    289                         1 => 'one-trackback',
    290                         2 => 'comment-test',
    291                         3 => 'lorem-ipsum',
    292                         4 => 'cat-c',
    293                         5 => 'cat-b',
    294                         6 => 'cat-a',
    295                         7 => 'cats-a-and-c',
    296                         8 => 'cats-b-and-c',
    297                         9 => 'cats-a-and-b',
    298                 );
    299 
    300                 $this->assertCount( 10, $posts );
    301                 $this->assertTrue( $this->q->is_paged() );
    302                 $this->assertEquals( $expected, wp_list_pluck( $posts, 'post_name' ) );
    303         }
    304 
    305         /**
    306282         * @ticket 11056
    307283         */
  • branches/4.0/tests/phpunit/tests/shortcode.php

    r33565 r45013  
    309309
    310310        /**
    311          * @ticket 14050
    312          */
    313         function test_multiple_shortcode_unautop() {
    314                 // a blank line is added at the end, so test with it already there
    315                 $test_string = "[footag]\n[footag]\n";
    316                 $actual = shortcode_unautop( wpautop( $test_string ) );
    317                 $this->assertEquals( $test_string, $actual );
    318         }
    319 
    320         /**
    321311         * @ticket 10326
    322312         */
  • branches/4.0/tests/phpunit/tests/taxonomy.php

    r28926 r45013  
    3434        }
    3535
    36         function test_get_the_taxonomies() {
    37                 $post_id = $this->factory->post->create();
    38 
    39                 $taxes = get_the_taxonomies( $post_id );
    40                 $this->assertNotEmpty( $taxes );
    41                 $this->assertEquals( array( 'category' ), array_keys( $taxes ) );
    42 
    43                 $id = $this->factory->tag->create();
    44                 wp_set_post_tags( $post_id, array( $id ) );
    45 
    46                 $taxes = get_the_taxonomies( $post_id );
    47                 $this->assertNotEmpty( $taxes );
    48                 $this->assertCount( 2, $taxes );
    49                 $this->assertEquals( array( 'category', 'post_tag' ), array_keys( $taxes ) );
    50         }
    51 
    5236        function test_the_taxonomies() {
    5337                $post_id = $this->factory->post->create();
     
    135119        }
    136120
    137         /**
    138          * @ticket 11058
    139          */
    140         function test_registering_taxonomies_to_object_types() {
    141                 // Create a taxonomy to test with
    142                 $tax = 'test_tax';
    143                 $this->assertFalse( taxonomy_exists($tax) );
    144                 register_taxonomy( $tax, 'post', array( 'hierarchical' => true ) );
    145 
    146                 // Create a post type to test with
    147                 $post_type = 'test_cpt';
    148                 $this->assertFalse( get_post_type( $post_type ) );
    149                 $this->assertObjectHasAttribute( 'name', register_post_type( $post_type ) );
    150 
    151                 // Core taxonomy, core post type
    152                 $this->assertTrue( unregister_taxonomy_for_object_type( 'category', 'post' ) );
    153                 $this->assertFalse( unregister_taxonomy_for_object_type( 'category', 'post' ) );
    154                 $this->assertTrue( register_taxonomy_for_object_type( 'category', 'post' ) );
    155 
    156                 // Core taxonomy, non-core post type
    157                 $this->assertTrue( register_taxonomy_for_object_type( 'category', $post_type ) );
    158                 $this->assertTrue( unregister_taxonomy_for_object_type( 'category', $post_type ) );
    159                 $this->assertFalse( unregister_taxonomy_for_object_type( 'category', $post_type ) );
    160                 $this->assertTrue( register_taxonomy_for_object_type( 'category', $post_type ) );
    161 
    162                 // Core taxonomies, non-post object types
    163                 $this->assertFalse( register_taxonomy_for_object_type( 'category', 'user' ) );
    164                 $this->assertFalse( unregister_taxonomy_for_object_type( 'category', 'user' ) );
    165 
    166                 // Non-core taxonomy, core post type
    167                 $this->assertTrue( unregister_taxonomy_for_object_type( $tax, 'post' ) );
    168                 $this->assertFalse( unregister_taxonomy_for_object_type( $tax, 'post' ) );
    169                 $this->assertTrue( register_taxonomy_for_object_type( $tax, 'post' ) );
    170 
    171                 // Non-core taxonomy, non-core post type
    172                 $this->assertTrue( register_taxonomy_for_object_type( $tax, $post_type ) );
    173                 $this->assertTrue( unregister_taxonomy_for_object_type( $tax, $post_type ) );
    174                 $this->assertFalse( unregister_taxonomy_for_object_type( $tax, $post_type ) );
    175                 $this->assertTrue( register_taxonomy_for_object_type( $tax, $post_type ) );
    176 
    177                 // Non-core taxonomies, non-post object types
    178                 $this->assertFalse( register_taxonomy_for_object_type( $tax, 'user' ) );
    179                 $this->assertFalse( unregister_taxonomy_for_object_type( $tax, 'user' ) );
    180 
    181                 unset($GLOBALS['wp_taxonomies'][$tax]);
    182                 _unregister_post_type( $post_type );
    183 
    184         }
    185121        /**
    186122         * @ticket 25706
  • branches/4.0/tests/phpunit/tests/xmlrpc/wp/uploadFile.php

    r30288 r45013  
    3030        }
    3131
    32         /**
    33          * @ticket 21292
    34          */
    35         function test_network_limit() {
    36                 $this->make_user_by_role( 'editor' );
    37 
    38                 update_option( 'blog_upload_space', 0.1 );
    39 
    40                 // create attachment
    41                 $filename = ( DIR_TESTDATA . '/images/canola.jpg' );
    42                 $contents = file_get_contents( $filename );
    43                 $data = array(
    44                         'name' => 'canola.jpg',
    45                         'type' => 'image/jpeg',
    46                         'bits' => $contents
    47                 );
    48 
    49                 $result = $this->myxmlrpcserver->mw_newMediaObject( array( 0, 'editor', 'editor', $data ) );
    50 
    51                 // Only multisite should have a limit
    52                 if ( is_multisite() )
    53                         $this->assertInstanceOf( 'IXR_Error', $result );
    54                 else
    55                         $this->assertNotInstanceOf( 'IXR_Error', $result );
    56         }
    57 
    5832}
Note: See TracChangeset for help on using the changeset viewer.