WordPress / performance

Performance plugin from the WordPress Performance Group, which is a collection of standalone performance modules.
https://wordpress.org/plugins/performance-lab/
GNU General Public License v2.0
367 stars 101 forks source link

Fix logic inversion in od_can_optimize_response() #1659

Closed westonruter closed 5 days ago

westonruter commented 5 days ago

I was testing the latest plugins on my blog and I was perplexed to find that Optimization Detective wasn't working on any URL. I found out it was due to a logic inversion I introduced in #1641. I didn't notice the issue when testing locally because I have the following dev-mode plugin code running, including:

add_filter( 'od_can_optimize_response', '__return_true' );

This means that the checking for od_get_cache_purge_post_id() I added to od_can_optimize_response() wasn't having any effect. Note that each of the conditions in that function are meant to be negative conditions for which responses should not be optimized. The entire boolean chain of conditions is then negated. So this is why the logic looks correct at first glance, but not if you look at the other conditions in the boolean chain.

The issue also was not detected in unit tests because (1) there are no posts created initially when unit tests run so null !== od_get_cache_purge_post_id() was always returning false, and (2) I hadn't explicitly checked the condition for when this is expected to return null.

These are rectified in this PR.

github-actions[bot] commented 5 days ago

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: westonruter <westonruter@git.wordpress.org>
Co-authored-by: felixarntz <flixos90@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.