From a50a78055e463d28e2ded57ac38f9575fb33648d Mon Sep 17 00:00:00 2001 From: Shreyas Ikhar Date: Tue, 12 May 2026 19:07:30 +0530 Subject: [PATCH 1/2] Enhancement: Update show_message function to support optional echo parameter and add corresponding unit tests Co-authored-by: Copilot --- src/wp-admin/includes/misc.php | 13 ++++++++-- tests/phpunit/tests/admin/includesMisc.php | 28 ++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/wp-admin/includes/misc.php b/src/wp-admin/includes/misc.php index 3724684ffd428..7fa658b25b777 100644 --- a/src/wp-admin/includes/misc.php +++ b/src/wp-admin/includes/misc.php @@ -609,8 +609,11 @@ function wp_reset_vars( $vars ) { * @since 2.1.0 * * @param string|WP_Error $message The message to display, or a WP_Error object. + * @param bool $echo Optional. Whether to print the message and flush all output + * buffers. Default true. + * @return string|void The message HTML if `$echo` is false. */ -function show_message( $message ) { +function show_message( $message, $echo = true ) { if ( is_wp_error( $message ) ) { if ( $message->get_error_data() && is_string( $message->get_error_data() ) ) { $message = $message->get_error_message() . ': ' . $message->get_error_data(); @@ -619,7 +622,13 @@ function show_message( $message ) { } } - echo "

$message

\n"; + $output = "

$message

\n"; + + if ( ! $echo ) { + return $output; + } + + echo $output; wp_ob_end_flush_all(); flush(); } diff --git a/tests/phpunit/tests/admin/includesMisc.php b/tests/phpunit/tests/admin/includesMisc.php index 2903ea1ca6e78..4897bbdcdd7c7 100644 --- a/tests/phpunit/tests/admin/includesMisc.php +++ b/tests/phpunit/tests/admin/includesMisc.php @@ -53,4 +53,32 @@ function () { update_option_new_admin_email( 'old@example.com', 'new@example.com' ); $this->assertSame( 'Filtered Admin Email Address', $mailer->get_sent()->subject ); } + + /** + * @ticket 65181 + * @covers ::show_message + */ + public function test_show_message_returns_formatted_html_for_string() { + $this->assertSame( "

A message.

\n", show_message( 'A message.', false ) ); + } + + /** + * @ticket 65181 + * @covers ::show_message + */ + public function test_show_message_returns_formatted_html_for_wp_error_with_string_data() { + $error = new WP_Error( 'test_error', 'A message.', 'Error details.' ); + + $this->assertSame( "

A message.: Error details.

\n", show_message( $error, false ) ); + } + + /** + * @ticket 65181 + * @covers ::show_message + */ + public function test_show_message_returns_formatted_html_for_wp_error_without_string_data() { + $error = new WP_Error( 'test_error', 'A message.', array( 'Error details.' ) ); + + $this->assertSame( "

A message.

\n", show_message( $error, false ) ); + } } From b1166e759f1252853eaeaf10fb54d0df3728d282 Mon Sep 17 00:00:00 2001 From: Shreyas Ikhar Date: Tue, 12 May 2026 19:19:41 +0530 Subject: [PATCH 2/2] Tests: Add unit tests for show_message function --- .../admin/includes/misc/ShowMessage_Test.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/phpunit/tests/admin/includes/misc/ShowMessage_Test.php diff --git a/tests/phpunit/tests/admin/includes/misc/ShowMessage_Test.php b/tests/phpunit/tests/admin/includes/misc/ShowMessage_Test.php new file mode 100644 index 0000000000000..eac89e61b013d --- /dev/null +++ b/tests/phpunit/tests/admin/includes/misc/ShowMessage_Test.php @@ -0,0 +1,34 @@ +assertSame( "

A message.

\n", show_message( 'A message.', false ) ); + } + + /** + * @ticket 65181 + */ + public function test_show_message_returns_formatted_html_for_wp_error_with_string_data() { + $error = new WP_Error( 'test_error', 'A message.', 'Error details.' ); + + $this->assertSame( "

A message.: Error details.

\n", show_message( $error, false ) ); + } + + /** + * @ticket 65181 + */ + public function test_show_message_returns_formatted_html_for_wp_error_without_string_data() { + $error = new WP_Error( 'test_error', 'A message.', array( 'Error details.' ) ); + + $this->assertSame( "

A message.

\n", show_message( $error, false ) ); + } +}