Add unit tests for got_url_rewrite() in src/wp-admin/includes/misc.php#11657
Add unit tests for got_url_rewrite() in src/wp-admin/includes/misc.php#11657pbearne wants to merge 3 commits intoWordPress:trunkfrom
Conversation
|
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 Unlinked AccountsThe following contributors have not linked their GitHub and WordPress.org accounts: @pbearne@git.wordpress.org. Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases. Core Committers: Use this line as a base for the props when committing in SVN: To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
Test using WordPress PlaygroundThe changes in this pull request can previewed and tested using a WordPress Playground instance. WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser. Some things to be aware of
For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation. |
1c85965 to
e1a086d
Compare
1177e68 to
30e825d
Compare
e181fb8 to
ec4b3ac
Compare
| * @return array[] { | ||
| * @type bool $expected The expected result. | ||
| * @type bool $mod_rewrite Whether mod_rewrite is supported. | ||
| * @type bool $is_nginx Whether server is nginx. | ||
| * @type bool $is_caddy Whether server is Caddy. | ||
| * @type bool $iis7_perm Whether IIS7 supports permalinks. | ||
| * @type bool|null $filter_val Optional filter value. | ||
| * } |
There was a problem hiding this comment.
Let's use PHPStan array shapes since there's no need to target WP Developer Docs
| * @type bool|null $filter_val Optional filter value. | ||
| * } | ||
| */ | ||
| public function data_got_url_rewrite() { |
There was a problem hiding this comment.
| public function data_got_url_rewrite() { | |
| public function data_got_url_rewrite(): array { |
| * @param bool $iis7_perm Whether IIS7 supports permalinks (simulated). | ||
| * @param bool|null $filter_val Optional value for the 'got_url_rewrite' filter. | ||
| */ | ||
| public function test_got_url_rewrite( $expected, $mod_rewrite, $is_nginx_val, $is_caddy_val, $iis7_perm, $filter_val = null ) { |
There was a problem hiding this comment.
| public function test_got_url_rewrite( $expected, $mod_rewrite, $is_nginx_val, $is_caddy_val, $iis7_perm, $filter_val = null ) { | |
| public function test_got_url_rewrite( bool $expected, bool $mod_rewrite, bool $is_nginx_val, bool $is_caddy_val, bool $iis7_perm, ?bool $filter_val = null ): void { |
| // Backup globals. | ||
| $prev_nginx = $is_nginx; | ||
| $prev_caddy = $is_caddy; | ||
|
|
||
| $is_nginx = $is_nginx_val; | ||
| $is_caddy = $is_caddy_val; |
There was a problem hiding this comment.
The backup should be done in set_up.
| $is_nginx = $prev_nginx; | ||
| $is_caddy = $prev_caddy; |
There was a problem hiding this comment.
This should be done in tear_down.
| remove_filter( 'got_rewrite', $mod_rewrite ? '__return_true' : '__return_false' ); | ||
| if ( null !== $filter_val ) { | ||
| remove_filter( 'got_url_rewrite', $filter_val ? '__return_true' : '__return_false' ); | ||
| } |
There was a problem hiding this comment.
Filters are automatically removed after tests run.
| remove_filter( 'got_rewrite', $mod_rewrite ? '__return_true' : '__return_false' ); | |
| if ( null !== $filter_val ) { | |
| remove_filter( 'got_url_rewrite', $filter_val ? '__return_true' : '__return_false' ); | |
| } |
Reference: https://core.trac.wordpress.org/ticket/65135
This PR adds comprehensive unit tests for the
got_url_rewrite()function insrc/wp-admin/includes/misc.php.The tests verify detection across different server environments:
got_mod_rewrite)$is_nginxglobal)$is_caddyglobal)got_url_rewritefilter.Trac ticket: https://core.trac.wordpress.org/ticket/65135
Use of AI Tools
AI assistance: Yes
Tool(s): Junie (JetBrains)
Model(s): gemini-3-flash-preview
Used for: Test structure generation, global variable mocking strategy, and dataProvider implementation.