WP_UnitTestCase::go_to() tried its best to clean up global space, but ultimately fell short. Because it was blowing away WP every time it was called, it was dropping all the query vars that were registered for custom taxonomies and custom post types (ouch).

Introduces `_cleanup_query_vars()`. This is a prerequisite for the unit tests on #20767. All unit tests pass with this change.

See #20767.
Fixes #25818.



git-svn-id: https://develop.svn.wordpress.org/trunk@26006 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor 2013-11-04 22:46:44 +00:00
parent 2f38d2efc6
commit 5321bc4957
3 changed files with 21 additions and 9 deletions

View File

@ -605,7 +605,7 @@ class WP {
$this->query_posts();
$this->handle_404();
$this->register_globals();
/**
* Fires once the WordPress environment has been set up.
*

View File

@ -186,14 +186,7 @@ class WP_UnitTestCase extends PHPUnit_Framework_TestCase {
$GLOBALS['wp_the_query'] = new WP_Query();
$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
$GLOBALS['wp'] = new WP();
// clean out globals to stop them polluting wp and wp_query
foreach ($GLOBALS['wp']->public_query_vars as $v) {
unset($GLOBALS[$v]);
}
foreach ($GLOBALS['wp']->private_query_vars as $v) {
unset($GLOBALS[$v]);
}
_cleanup_query_vars();
$GLOBALS['wp']->main($parts['query']);
}

View File

@ -363,3 +363,22 @@ function _unregister_post_type( $cpt_name ) {
function _unregister_taxonomy( $taxonomy_name ) {
unset( $GLOBALS['wp_taxonomies'][$taxonomy_name] );
}
function _cleanup_query_vars() {
// clean out globals to stop them polluting wp and wp_query
foreach ( $GLOBALS['wp']->public_query_vars as $v )
unset( $GLOBALS[$v] );
foreach ( $GLOBALS['wp']->private_query_vars as $v )
unset( $GLOBALS[$v] );
foreach ( get_taxonomies( array() , 'objects' ) as $t ) {
if ( ! empty( $t->query_var ) )
$GLOBALS['wp']->add_query_var( $t->query_var );
}
foreach ( get_post_types( array() , 'objects' ) as $t ) {
if ( ! empty( $t->query_var ) )
$GLOBALS['wp']->add_query_var( $t->query_var );
}
}