Make WordPress Core

Changeset 38858


Ignore:
Timestamp:
10/21/2016 11:02:37 AM (10 years ago)
Author:
pento
Message:

Tests: Use a minimal theme for tests.

New default themes require workarounds being added to several unit tests, as they often alter default WordPress behaviour. To avoid ongoing maintenance issues, this change switches to a minimal theme when running tests.

This change also removes the old workarounds for default themes.

Fixes #31550.

Location:
trunk
Files:
1 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/data/themedir1/default/functions.php

    r25002 r38858  
    11<?php
    22
    3 // dummy theme
     3// Minimum functions.php to pass unit tests
    44
    5 echo dirname(__FILE__).'/'.basename(__FILE__);
     5function default_widgets_init() {
     6        register_sidebar( array( 'id' => 'sidebar-1' ) );
     7}
     8add_action( 'widgets_init', 'default_widgets_init' );
    69
    7 ?>
     10function default_after_setup_theme() {
     11        add_theme_support( 'post-thumbnails' );
     12
     13        // Don't call it after wp_loaded has happened, for tests that manually re-run load actions.
     14        if( ! did_action( 'wp_loaded' ) ) {
     15                add_theme_support( 'title-tag' );
     16        }
     17}
     18add_action( 'after_setup_theme', 'default_after_setup_theme' );
  • trunk/tests/phpunit/data/themedir1/default/index.php

    r25002 r38858  
    11<?php
    22
    3 // dummy theme
    4 
    5 echo dirname(__FILE__).'/'.basename(__FILE__);
    6 
    7 ?>
     3// Empty theme
  • trunk/tests/phpunit/includes/bootstrap.php

    r38840 r38858  
    5353require_once( dirname( __FILE__ ) . '/mock-mailer.php' );
    5454$phpmailer = new MockPHPMailer();
     55
     56// Add a symlink to the empty default theme to the themes directory, so it can be used for the tests.
     57_symlink_default_theme();
    5558
    5659system( WP_PHP_BINARY . ' ' . escapeshellarg( dirname( __FILE__ ) . '/install.php' ) . ' ' . escapeshellarg( $config_file_path ) . ' ' . $multisite );
  • trunk/tests/phpunit/includes/functions.php

    r38582 r38858  
    162162        return $uploads;
    163163}
     164
     165/**
     166 * Helper functions to link and unlink the empty default theme into the WordPress install
     167 */
     168function _symlink_default_theme() {
     169        _unlink_default_theme();
     170        symlink( DIR_TESTDATA . '/themedir1/default', ABSPATH . '/wp-content/themes/default' );
     171}
     172
     173function _unlink_default_theme() {
     174        if ( file_exists( ABSPATH . '/wp-content/themes/default' ) ) {
     175                unlink( ABSPATH . '/wp-content/themes/default' );
     176        }
     177}
     178// Only unlink when we're in the main process.
     179if ( 'phpunit' === substr( $GLOBALS['argv'][0], -7 ) ) {
     180        register_shutdown_function( '_unlink_default_theme' );
     181}
  • trunk/tests/phpunit/tests/customize/control.php

    r38850 r38858  
    3232                // @codingStandardsIgnoreEnd
    3333                $this->wp_customize = $GLOBALS['wp_customize'];
    34 
    35                 // Remove default theme actions that interfere with tests
    36                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    3734        }
    3835
  • trunk/tests/phpunit/tests/customize/custom-css-setting.php

    r38850 r38858  
    3737                $wp_customize = $this->wp_customize;
    3838
    39                 // Remove default theme actions that interfere with tests
    40                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    41 
    4239                do_action( 'customize_register', $this->wp_customize );
    4340                $this->setting = new WP_Customize_Custom_CSS_Setting( $this->wp_customize, 'custom_css[twentysixteen]' );
  • trunk/tests/phpunit/tests/customize/manager.php

    r38850 r38858  
    5959                $this->manager = $this->instantiate();
    6060                $this->undefined = new stdClass();
    61 
    62                 // Remove default theme actions that interfere with tests
    63                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    6461        }
    6562
  • trunk/tests/phpunit/tests/customize/nav-menu-item-setting.php

    r38850 r38858  
    2727                $this->wp_customize = new WP_Customize_Manager();
    2828                $wp_customize = $this->wp_customize;
    29 
    30                 // Remove default theme actions that interfere with tests
    31                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    3229        }
    3330
  • trunk/tests/phpunit/tests/customize/nav-menu-setting.php

    r38850 r38858  
    2828                $this->wp_customize = new WP_Customize_Manager();
    2929                $wp_customize = $this->wp_customize;
    30 
    31                 // Remove default theme actions that interfere with tests
    32                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    3330        }
    3431
  • trunk/tests/phpunit/tests/customize/nav-menus.php

    r38850 r38858  
    2727                $this->wp_customize = new WP_Customize_Manager();
    2828                $wp_customize = $this->wp_customize;
    29 
    30                 // Remove default theme actions that interfere with tests
    31                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    3229        }
    3330
  • trunk/tests/phpunit/tests/customize/partial.php

    r38850 r38858  
    4040                        $this->selective_refresh = $this->wp_customize->selective_refresh;
    4141                }
    42 
    43                 // Remove default theme actions that interfere with tests
    44                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    4542        }
    4643
  • trunk/tests/phpunit/tests/customize/selective-refresh-ajax.php

    r38851 r38858  
    5252                        $this->selective_refresh = $this->wp_customize->selective_refresh;
    5353                }
    54 
    55                 // Remove default theme actions that interfere with tests
    56                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    5754        }
    5855
     
    6158         */
    6259        function do_customize_boot_actions() {
    63                 // Remove actions that call add_theme_support( 'title-tag' ).
    64                 remove_action( 'after_setup_theme', 'twentyfifteen_setup' );
    65                 remove_action( 'after_setup_theme', 'twentysixteen_setup' );
    66                 remove_action( 'after_setup_theme', 'twentyseventeen_setup' );
    67 
    6860                $_SERVER['REQUEST_METHOD'] = 'POST';
    6961                do_action( 'setup_theme' );
  • trunk/tests/phpunit/tests/customize/selective-refresh.php

    r38850 r38858  
    4040                        $this->selective_refresh = $this->wp_customize->selective_refresh;
    4141                }
    42 
    43                 // Remove default theme actions that interfere with tests
    44                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    4542        }
    4643
  • trunk/tests/phpunit/tests/customize/widgets.php

    r38850 r38858  
    4040                $this->assertArrayHasKey( 2, $widget_categories );
    4141                $this->assertEquals( '', $widget_categories[2]['title'] );
    42 
    43                 // @todo We should not be including a theme anyway
    44                 remove_action( 'after_setup_theme', 'twentyfifteen_setup' );
    45                 remove_action( 'after_setup_theme', 'twentysixteen_setup' );
    46                 remove_action( 'customize_register', 'twentysixteen_customize_register', 11 );
    47                 remove_action( 'after_setup_theme', 'twentyseventeen_setup' );
    48                 remove_action( 'customize_register', 'twentyseventeen_customize_register' );
    4942
    5043                $this->backup_registered_sidebars = $GLOBALS['wp_registered_sidebars'];
  • trunk/tests/phpunit/tests/media.php

    r38838 r38858  
    3434                $this->img_html = '<img src="' . $this->img_url . '"/>';
    3535                $this->img_meta = array( 'width' => 100, 'height' => 100, 'sizes' => '' );
    36 
    37                 // Disable Twenty Seventeen changes to the image size attribute
    38                 remove_filter( 'wp_calculate_image_sizes', 'twentyseventeen_content_image_sizes_attr' );
    39                 remove_filter( 'wp_get_attachment_image_attributes', 'twentyseventeen_post_thumbnail_sizes_attr' );
    40         }
    41 
    42         function tearDown() {
    43                 parent::tearDown();
    44 
    45                 // Reset Twenty Seventeen behaviour
    46                 add_filter( 'wp_calculate_image_sizes', 'twentyseventeen_content_image_sizes_attr', 10, 2 );
    47                 add_filter( 'wp_get_attachment_image_attributes', 'twentyseventeen_post_thumbnail_sizes_attr', 10, 3 );
    4836        }
    4937
  • trunk/wp-tests-config-sample.php

    r36372 r38858  
    33/* Path to the WordPress codebase you'd like to test. Add a forward slash in the end. */
    44define( 'ABSPATH', dirname( __FILE__ ) . '/src/' );
     5
     6/*
     7 * Path to the theme to test with.
     8 *
     9 * The 'default' theme is symlinked from test/phpunit/data/themedir1/default into
     10 * the themes directory of the WordPress install defined above.
     11 */
     12define( 'WP_DEFAULT_THEME', 'default' );
    513
    614// Test with multisite enabled.
Note: See TracChangeset for help on using the changeset viewer.