Skip to content

Commit

Permalink
Tests: Ensure prerequisites are met for draft length tests in `Tests_…
Browse files Browse the repository at this point in the history
…L10n`.

These three tests for `wp_dashboard_recent_drafts()` would run into a PHP 8.1 "passing null to non-nullable" deprecation for the call to `ltrim()` when the result of `get_edit_post_link()` is passed to `esc_url()`.

Setting a deprecation expectation would not solve this as the returned value would still not match the expected value(s).

The recent drafts list is only displayed on the Dashboard screen for users with the `edit_posts` capability. By setting the current user to Editor, the prerequisites for `wp_dashboard_recent_drafts()` are met, which means the deprecation notice is avoided and the assertions will succeed.

This commit addresses a few errors in the test suite along the lines of:
{{{
1) Tests_L10n::test_length_of_draft_should_be_counted_by_words
ltrim(): Passing null to parameter #1 ($string) of type string is deprecated

/var/www/src/wp-includes/formatting.php:4376
/var/www/src/wp-admin/includes/dashboard.php:657
/var/www/tests/phpunit/tests/l10n.php:449
/var/www/vendor/bin/phpunit:123
}}}

Follow-up to [45505], [52253], [52259].

Props jrf, desrosj, SergeyBiryukov.
See #56681, #55652, #55656.

git-svn-id: https://develop.svn.wordpress.org/trunk@54365 602fd350-edb4-49c9-b593-d223f7449a82
  • Loading branch information
SergeyBiryukov committed Oct 1, 2022
1 parent 16d0911 commit bae6e17
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions tests/phpunit/tests/l10n.php
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,19 @@ public function test_length_of_draft_should_be_counted_by_words() {

switch_to_locale( 'en_US' );

/*
* The recent drafts list is only displayed on the Dashboard screen for users
* with the 'edit_posts' capability.
*
* This means the current user needs to be set to Editor as a prerequisite
* for the call to the wp_dashboard_recent_drafts() function.
*
* This allows the subsequent call to get_edit_post_link() to work as expected
* and return a string instead of null, which would otherwise cause a PHP 8.1
* "passing null to non-nullable" deprecation notice.
*/
wp_set_current_user( self::factory()->user->create( array( 'role' => 'editor' ) ) );

$args = array(
'post_content' => $this->long_text,
'post_excerpt' => '',
Expand All @@ -461,6 +474,19 @@ public function test_length_of_draft_should_be_counted_by_chars() {

switch_to_locale( 'ja_JP' );

/*
* The recent drafts list is only displayed on the Dashboard screen for users
* with the 'edit_posts' capability.
*
* This means the current user needs to be set to Editor as a prerequisite
* for the call to the wp_dashboard_recent_drafts() function.
*
* This allows the subsequent call to get_edit_post_link() to work as expected
* and return a string instead of null, which would otherwise cause a PHP 8.1
* "passing null to non-nullable" deprecation notice.
*/
wp_set_current_user( self::factory()->user->create( array( 'role' => 'editor' ) ) );

$args = array(
'post_content' => $this->long_text,
'post_excerpt' => '',
Expand All @@ -487,6 +513,19 @@ public function test_length_of_draft_should_be_counted_by_chars_in_japanese() {

switch_to_locale( 'ja_JP' );

/*
* The recent drafts list is only displayed on the Dashboard screen for users
* with the 'edit_posts' capability.
*
* This means the current user needs to be set to Editor as a prerequisite
* for the call to the wp_dashboard_recent_drafts() function.
*
* This allows the subsequent call to get_edit_post_link() to work as expected
* and return a string instead of null, which would otherwise cause a PHP 8.1
* "passing null to non-nullable" deprecation notice.
*/
wp_set_current_user( self::factory()->user->create( array( 'role' => 'editor' ) ) );

$args = array(
'post_content' => str_repeat( '', 200 ),
'post_excerpt' => '',
Expand Down

0 comments on commit bae6e17

Please sign in to comment.