#58776 closed defect (bug) (fixed)
Main query global not reset after tests
| Reported by: |
|
Owned by: |
|
|---|---|---|---|
| Milestone: | 6.3 | Priority: | normal |
| Severity: | normal | Version: | |
| Component: | Build/Test Tools | Keywords: | has-patch has-unit-tests commit |
| Focuses: | Cc: |
Description
Several core tests added in the past few releases of WordPress (mostly related to lazy-loading) have been making use of the main query global ($wp_the_query, different from $wp_query) and modifying it in tests.
It was assumed that that global was being reset between tests similar to other query loop-related globals, but in https://github.com/WordPress/wordpress-develop/pull/4799#issuecomment-1629114720 it was discovered that the $wp_the_query global is not reset between tests, which is unexpected behavior and caused problems with the tests in that PR.
This should be fixed so that the global is reset similar to the other related globals like $wp_query and $wp. Similar to the regular WordPress bootstrap process in wp-settings.php, the test suite should ensure that $wp_query and $wp_the_query point to the same WP_Query instance.
Change History (7)
This ticket was mentioned in PR #4823 on WordPress/wordpress-develop by @flixos90.
3 years ago
#1
- Keywords has-unit-tests added
#2
@
3 years ago
https://github.com/WordPress/wordpress-develop/pull/4823 addresses this bug in a simple way. All existing tests still pass without any modifications, so this should be a straightforward fix.
With that fix, the new tests that are being added in https://github.com/WordPress/wordpress-develop/pull/4799 should also pass as expected. cc @joemcgill
@flixos90 commented on PR #4823:
3 years ago
#3
After a broader search of the WP core unit test suite, I noticed that there was in fact already one workaround that was only needed because of this problem, in the tests/phpunit/tests/query/isTerm.php file's set_up() method. I removed this in https://github.com/WordPress/wordpress-develop/pull/4823/commits/3c314c9edc69b618a540944aa159fc8aa2422a95, as it is unnecessary with this more holistic fix. cc @joemcgill
#4
@
3 years ago
- Keywords commit added
This PR looks good to me. Would be nice to get it committed prior to the final beta release.
This PR fixes a problem in the WordPress PHPUnit test suite that was initially spotted in https://github.com/WordPress/wordpress-develop/pull/4799#issuecomment-1629114720: The test base class has not been resetting the main query global
$wp_the_query, which results in unexpected test behavior where some tests can pollute the global scope for subsequent tests. Since the WordPress PHPUnit test suite generally resets crucial globals related to the post loop, core developers should be able to expect that the$wp_the_queryglobal is covered by that mechanism as well.Similar to how
wp-settings.phpsets them up for the actual WordPress bootstrap process, the$wp_the_queryand$wp_queryglobal should have the same values / point to the sameWP_Queryinstance before each test run.Trac ticket: https://core.trac.wordpress.org/ticket/58776