From c558823416fe0e6aa849e0af565fecb3d35049d7 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Sat, 25 Jun 2022 14:43:27 +0000 Subject: [PATCH] Tests: Remove multiple `$wpdb::placeholder_escape()` calls in `wpdb` tests. This aims to improve performance of the tests by reducing the number of function calls. Since `$wpdb::placeholder_escape()` saves the result in a static variable on the first run, there is no need for repeated function calls during the same request or test run, as the result would still be the same. Follow-up to [42056]. See #55652. git-svn-id: https://develop.svn.wordpress.org/trunk@53577 602fd350-edb4-49c9-b593-d223f7449a82 --- tests/phpunit/tests/db.php | 41 ++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/tests/phpunit/tests/db.php b/tests/phpunit/tests/db.php index cc0c23de4a..3e20f78f44 100644 --- a/tests/phpunit/tests/db.php +++ b/tests/phpunit/tests/db.php @@ -424,6 +424,8 @@ class Tests_DB extends WP_UnitTestCase { public function data_prepare_incorrect_arg_count() { global $wpdb; + $placeholder_escape = $wpdb->placeholder_escape(); + return array( array( "SELECT * FROM $wpdb->users WHERE id = %d AND user_login = %s", // Query. @@ -443,12 +445,12 @@ class Tests_DB extends WP_UnitTestCase { array( "SELECT * FROM $wpdb->users WHERE id = %d AND %% AND user_login = %s", array( 1, 'admin', 'extra-arg' ), - "SELECT * FROM $wpdb->users WHERE id = 1 AND {$wpdb->placeholder_escape()} AND user_login = 'admin'", + "SELECT * FROM $wpdb->users WHERE id = 1 AND {$placeholder_escape} AND user_login = 'admin'", ), array( "SELECT * FROM $wpdb->users WHERE id = %%%d AND %F AND %f AND user_login = %s", array( 1, 2.3, '4.5', 'admin', 'extra-arg' ), - "SELECT * FROM $wpdb->users WHERE id = {$wpdb->placeholder_escape()}1 AND 2.300000 AND 4.500000 AND user_login = 'admin'", + "SELECT * FROM $wpdb->users WHERE id = {$placeholder_escape}1 AND 2.300000 AND 4.500000 AND user_login = 'admin'", ), array( "SELECT * FROM $wpdb->users WHERE id = %d AND user_login = %s", @@ -1550,6 +1552,8 @@ class Tests_DB extends WP_UnitTestCase { public function data_prepare_with_placeholders() { global $wpdb; + $placeholder_escape = $wpdb->placeholder_escape(); + return array( array( '%5s', // SQL to prepare. @@ -1561,7 +1565,7 @@ class Tests_DB extends WP_UnitTestCase { '%1$d %%% % %%1$d%% %%%1$d%%', 1, true, - "1 {$wpdb->placeholder_escape()}{$wpdb->placeholder_escape()} {$wpdb->placeholder_escape()} {$wpdb->placeholder_escape()}1\$d{$wpdb->placeholder_escape()} {$wpdb->placeholder_escape()}1{$wpdb->placeholder_escape()}", + "1 {$placeholder_escape}{$placeholder_escape} {$placeholder_escape} {$placeholder_escape}1\$d{$placeholder_escape} {$placeholder_escape}1{$placeholder_escape}", ), array( '%-5s', @@ -1603,25 +1607,25 @@ class Tests_DB extends WP_UnitTestCase { '%s', ' %s ', false, - "' {$wpdb->placeholder_escape()}s '", + "' {$placeholder_escape}s '", ), array( '%1$s', ' %s ', false, - " {$wpdb->placeholder_escape()}s ", + " {$placeholder_escape}s ", ), array( '%1$s', ' %1$s ', false, - " {$wpdb->placeholder_escape()}1\$s ", + " {$placeholder_escape}1\$s ", ), array( '%d %1$d %%% %', 1, true, - "1 1 {$wpdb->placeholder_escape()}{$wpdb->placeholder_escape()} {$wpdb->placeholder_escape()}", + "1 1 {$placeholder_escape}{$placeholder_escape} {$placeholder_escape}", ), array( '%d %2$s', @@ -1663,25 +1667,25 @@ class Tests_DB extends WP_UnitTestCase { "%%s %%'%1\$s'", 'hello', false, - "{$wpdb->placeholder_escape()}s {$wpdb->placeholder_escape()}'hello'", + "{$placeholder_escape}s {$placeholder_escape}'hello'", ), array( '%%s %%"%1$s"', 'hello', false, - "{$wpdb->placeholder_escape()}s {$wpdb->placeholder_escape()}\"hello\"", + "{$placeholder_escape}s {$placeholder_escape}\"hello\"", ), array( '%s', ' % s ', false, - "' {$wpdb->placeholder_escape()} s '", + "' {$placeholder_escape} s '", ), array( '%%f %%"%1$f"', 3, false, - "{$wpdb->placeholder_escape()}f {$wpdb->placeholder_escape()}\"3.000000\"", + "{$placeholder_escape}f {$placeholder_escape}\"3.000000\"", ), array( 'WHERE second=\'%2$s\' AND first=\'%1$s\'', @@ -1699,19 +1703,19 @@ class Tests_DB extends WP_UnitTestCase { "'%'%%s", 'hello', true, - "'{$wpdb->placeholder_escape()}'{$wpdb->placeholder_escape()}s", + "'{$placeholder_escape}'{$placeholder_escape}s", ), array( "'%'%%s%s", 'hello', false, - "'{$wpdb->placeholder_escape()}'{$wpdb->placeholder_escape()}s'hello'", + "'{$placeholder_escape}'{$placeholder_escape}s'hello'", ), array( "'%'%%s %s", 'hello', false, - "'{$wpdb->placeholder_escape()}'{$wpdb->placeholder_escape()}s 'hello'", + "'{$placeholder_escape}'{$placeholder_escape}s 'hello'", ), array( "'%-'#5s' '%'#-+-5s'", @@ -1759,7 +1763,7 @@ class Tests_DB extends WP_UnitTestCase { 'WHERE %i = %d;', array( 'evil_%s_field', 321 ), false, - "WHERE `evil_{$wpdb->placeholder_escape()}s_field` = 321;", + "WHERE `evil_{$placeholder_escape}s_field` = 321;", ), array( 'WHERE %i = %d;', @@ -1864,13 +1868,16 @@ class Tests_DB extends WP_UnitTestCase { public function data_escape_and_prepare() { global $wpdb; + + $placeholder_escape = $wpdb->placeholder_escape(); + return array( array( '%s', // String to pass through esc_url(). ' {ESCAPE} ', // Query to insert the output of esc_url() into, replacing "{ESCAPE}". 'foo', // Data to send to prepare(). true, // Whether to expect an incorrect usage error or not. - " {$wpdb->placeholder_escape()}s ", // Expected output. + " {$placeholder_escape}s ", // Expected output. ), array( 'foo%sbar', @@ -1884,7 +1891,7 @@ class Tests_DB extends WP_UnitTestCase { ' %s {ESCAPE} ', 'foo', false, - " 'foo' {$wpdb->placeholder_escape()}s ", + " 'foo' {$placeholder_escape}s ", ), ); }