From c9396b96303cda5bb8960d189a8320a14663332b Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Tue, 28 Apr 2026 18:06:34 -0400 Subject: [PATCH 1/6] Add unit tests for iis7_rewrite_rule_exists() in src/wp-admin/includes/misc.php --- .../includes/misc/iis7RewriteRuleExists.php | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php diff --git a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php new file mode 100644 index 0000000000000..6989769298855 --- /dev/null +++ b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php @@ -0,0 +1,99 @@ +temp_file = wp_tempnam( 'web.config' ); + } + + public function tear_down() { + if ( file_exists( $this->temp_file ) ) { + unlink( $this->temp_file ); + } + + parent::tear_down(); + } + + /** + * Tests that iis7_rewrite_rule_exists() correctly identifies the existence of rules. + * + * @ticket 65148 + * + * @dataProvider data_iis7_rewrite_rule_exists + * + * @phpstan-return array + * + * @param bool $expected Whether the rule is expected to exist. + * @param string $content The XML content of the file. + */ + public function test_iis7_rewrite_rule_exists( $expected, $content ) { + if ( 'Not XML' === $content ) { + @file_put_contents( $this->temp_file, $content ); + $this->assertSame( $expected, @iis7_rewrite_rule_exists( $this->temp_file ) ); + } else { + file_put_contents( $this->temp_file, $content ); + $this->assertSame( $expected, iis7_rewrite_rule_exists( $this->temp_file ) ); + } + } + + /** + * Data provider for test_iis7_rewrite_rule_exists. + * + * @return array + */ + public function data_iis7_rewrite_rule_exists() { + return array( + 'Rule with name "wordpress" exists' => array( + 'expected' => true, + 'content' => '', + ), + 'Rule with name "WordPress" exists' => array( + 'expected' => true, + 'content' => '', + ), + 'Rule with name starting with "wordpress" exists' => array( + 'expected' => true, + 'content' => '', + ), + 'Rule does not exist' => array( + 'expected' => false, + 'content' => '', + ), + 'Empty configuration' => array( + 'expected' => false, + 'content' => '', + ), + 'Invalid XML' => array( + 'expected' => false, + 'content' => 'Not XML', + ), + ); + } + + /** + * Tests that iis7_rewrite_rule_exists() returns false if the file does not exist. + * + * @ticket 65148 + */ + public function test_iis7_rewrite_rule_exists_non_existent_file() { + $this->assertFalse( iis7_rewrite_rule_exists( '/non/existent/file' ) ); + } +} From 0764cb9e70af70e490d02ddc7a86d4c17e3e5e6c Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Tue, 28 Apr 2026 18:10:16 -0400 Subject: [PATCH 2/6] Add return type declaration for data_iis7_rewrite_rule_exists() test method --- .../phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php index 6989769298855..f69a36ae5a2e0 100644 --- a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php +++ b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php @@ -59,7 +59,7 @@ public function test_iis7_rewrite_rule_exists( $expected, $content ) { * * @return array */ - public function data_iis7_rewrite_rule_exists() { + public function data_iis7_rewrite_rule_exists(): array { return array( 'Rule with name "wordpress" exists' => array( 'expected' => true, From bacdfcfc12c437a3b10cfb3ec985d5e8a2dfd49d Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Tue, 28 Apr 2026 18:14:30 -0400 Subject: [PATCH 3/6] Remove error suppression from iis7_rewrite_rule_exists() tests and align array keys --- .../admin/includes/misc/iis7RewriteRuleExists.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php index f69a36ae5a2e0..bc938a30dd64d 100644 --- a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php +++ b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php @@ -46,8 +46,8 @@ public function tear_down() { */ public function test_iis7_rewrite_rule_exists( $expected, $content ) { if ( 'Not XML' === $content ) { - @file_put_contents( $this->temp_file, $content ); - $this->assertSame( $expected, @iis7_rewrite_rule_exists( $this->temp_file ) ); + file_put_contents( $this->temp_file, $content ); + $this->assertSame( $expected, iis7_rewrite_rule_exists( $this->temp_file ) ); } else { file_put_contents( $this->temp_file, $content ); $this->assertSame( $expected, iis7_rewrite_rule_exists( $this->temp_file ) ); @@ -61,11 +61,11 @@ public function test_iis7_rewrite_rule_exists( $expected, $content ) { */ public function data_iis7_rewrite_rule_exists(): array { return array( - 'Rule with name "wordpress" exists' => array( + 'Rule with name "wordpress" exists' => array( 'expected' => true, 'content' => '', ), - 'Rule with name "WordPress" exists' => array( + 'Rule with name "WordPress" exists' => array( 'expected' => true, 'content' => '', ), @@ -73,15 +73,15 @@ public function data_iis7_rewrite_rule_exists(): array { 'expected' => true, 'content' => '', ), - 'Rule does not exist' => array( + 'Rule does not exist' => array( 'expected' => false, 'content' => '', ), - 'Empty configuration' => array( + 'Empty configuration' => array( 'expected' => false, 'content' => '', ), - 'Invalid XML' => array( + 'Invalid XML' => array( 'expected' => false, 'content' => 'Not XML', ), From 29d33fd0f61b7b79860f40733b68a6e1cff15ca5 Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Tue, 28 Apr 2026 18:20:12 -0400 Subject: [PATCH 4/6] Reorder and update test data array in data_iis7_rewrite_rule_exists() for consistency --- .../tests/admin/includes/misc/iis7RewriteRuleExists.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php index bc938a30dd64d..78b798fa8661e 100644 --- a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php +++ b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php @@ -61,6 +61,10 @@ public function test_iis7_rewrite_rule_exists( $expected, $content ) { */ public function data_iis7_rewrite_rule_exists(): array { return array( + 'Rule with name starting with "wordpress" exists' => array( + 'expected' => true, + 'content' => '', + ), 'Rule with name "wordpress" exists' => array( 'expected' => true, 'content' => '', @@ -69,10 +73,6 @@ public function data_iis7_rewrite_rule_exists(): array { 'expected' => true, 'content' => '', ), - 'Rule with name starting with "wordpress" exists' => array( - 'expected' => true, - 'content' => '', - ), 'Rule does not exist' => array( 'expected' => false, 'content' => '', From 5f3dddefe1ce8b4264e6577b8887461777913ac1 Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Tue, 28 Apr 2026 19:17:00 -0400 Subject: [PATCH 5/6] Suppress errors in iis7_rewrite_rule_exists() test method to prevent warnings --- src/wp-admin/includes/misc.php | 1 - .../tests/admin/includes/misc/iis7RewriteRuleExists.php | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wp-admin/includes/misc.php b/src/wp-admin/includes/misc.php index 3724684ffd428..61e9a09e2b799 100644 --- a/src/wp-admin/includes/misc.php +++ b/src/wp-admin/includes/misc.php @@ -833,7 +833,6 @@ function iis7_rewrite_rule_exists( $filename ) { } $doc = new DOMDocument(); - if ( $doc->load( $filename ) === false ) { return false; } diff --git a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php index 78b798fa8661e..44cd0412ec75f 100644 --- a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php +++ b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php @@ -47,7 +47,8 @@ public function tear_down() { public function test_iis7_rewrite_rule_exists( $expected, $content ) { if ( 'Not XML' === $content ) { file_put_contents( $this->temp_file, $content ); - $this->assertSame( $expected, iis7_rewrite_rule_exists( $this->temp_file ) ); + // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged + $this->assertSame( $expected, @iis7_rewrite_rule_exists( $this->temp_file ) ); } else { file_put_contents( $this->temp_file, $content ); $this->assertSame( $expected, iis7_rewrite_rule_exists( $this->temp_file ) ); From 6abc172cd53ca11710d2475f8870fd4016d947c5 Mon Sep 17 00:00:00 2001 From: Paul Bearne Date: Tue, 28 Apr 2026 19:34:51 -0400 Subject: [PATCH 6/6] Align spacing in test data array for data_iis7_rewrite_rule_exists() --- .../admin/includes/misc/iis7RewriteRuleExists.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php index 44cd0412ec75f..83532b1f51983 100644 --- a/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php +++ b/tests/phpunit/tests/admin/includes/misc/iis7RewriteRuleExists.php @@ -66,23 +66,23 @@ public function data_iis7_rewrite_rule_exists(): array { 'expected' => true, 'content' => '', ), - 'Rule with name "wordpress" exists' => array( + 'Rule with name "wordpress" exists' => array( 'expected' => true, 'content' => '', ), - 'Rule with name "WordPress" exists' => array( + 'Rule with name "WordPress" exists' => array( 'expected' => true, 'content' => '', ), - 'Rule does not exist' => array( + 'Rule does not exist' => array( 'expected' => false, 'content' => '', ), - 'Empty configuration' => array( + 'Empty configuration' => array( 'expected' => false, 'content' => '', ), - 'Invalid XML' => array( + 'Invalid XML' => array( 'expected' => false, 'content' => 'Not XML', ),