Problem/Motivation

user_user_view() triggers a deprecation on PHP 8.1 because it tries to create a $build['member_for'] for anonymous users which don't have a created time.

Steps to reproduce

Run Drupal\Tests\comment\Functional\CommentAdminTest on PHP 8.1 (note there other deprecations triggered by this test but this is the most important).

Proposed resolution

Don't do this for anonymous users. Anonymous user is not a member so it can't be a member for...

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

CommentFileSizeAuthor
#2 3241265-2.patch743 bytesalexpott
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

alexpott created an issue. See original summary.

alexpott’s picture

Issue summary: View changes
Status: Active » Needs review
FileSize
743 bytes

Before

 ./vendor/bin/phpunit -v core/modules/comment/tests/src/Functional/CommentAdminTest.php
PHPUnit 8.5.21 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.1.0RC3-dev
Configuration: /Users/alex/dev/sites/drupal8alt.dev/phpunit.xml

Testing Drupal\Tests\comment\Functional\CommentAdminTest
EE.E.                                                               5 / 5 (100%)

Time: 42.39 seconds, Memory: 8.00 MB

There were 3 errors:

1) Drupal\Tests\comment\Functional\CommentAdminTest::testApprovalAdminInterface
Exception: Deprecated function: DateTime::setTimestamp(): Passing null to parameter #1 ($timestamp) of type int is deprecated
Drupal\Core\Datetime\DateFormatter->formatDiff()() (Line: 220)


/Users/alex/dev/sites/drupal8alt.dev/core/lib/Drupal/Core/Test/HttpClientMiddleware/TestHttpClientMiddleware.php:49
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:204
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:153
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/TaskQueue.php:48
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:248
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:224
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:269
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:226
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:62
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/guzzle/src/Client.php:182
/Users/alex/dev/sites/drupal8alt.dev/core/tests/Drupal/Tests/DrupalTestBrowser.php:137
/Users/alex/dev/sites/drupal8alt.dev/vendor/symfony/browser-kit/Client.php:404
/Users/alex/dev/sites/drupal8alt.dev/vendor/friends-of-behat/mink-browserkit-driver/src/BrowserKitDriver.php:145
/Users/alex/dev/sites/drupal8alt.dev/vendor/behat/mink/src/Session.php:148
/Users/alex/dev/sites/drupal8alt.dev/core/tests/Drupal/Tests/UiHelperTrait.php:334
/Users/alex/dev/sites/drupal8alt.dev/core/modules/comment/tests/src/Functional/CommentAdminTest.php:76
/Users/alex/dev/sites/drupal8alt.dev/vendor/phpunit/phpunit/src/Framework/TestResult.php:703

2) Drupal\Tests\comment\Functional\CommentAdminTest::testApprovalNodeInterface
Exception: Deprecated function: DateTime::setTimestamp(): Passing null to parameter #1 ($timestamp) of type int is deprecated
Drupal\Core\Datetime\DateFormatter->formatDiff()() (Line: 220)


/Users/alex/dev/sites/drupal8alt.dev/core/lib/Drupal/Core/Test/HttpClientMiddleware/TestHttpClientMiddleware.php:49
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:204
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:153
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/TaskQueue.php:48
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:248
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:224
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:269
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:226
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:62
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/guzzle/src/Client.php:182
/Users/alex/dev/sites/drupal8alt.dev/core/tests/Drupal/Tests/DrupalTestBrowser.php:137
/Users/alex/dev/sites/drupal8alt.dev/vendor/symfony/browser-kit/Client.php:404
/Users/alex/dev/sites/drupal8alt.dev/vendor/friends-of-behat/mink-browserkit-driver/src/BrowserKitDriver.php:145
/Users/alex/dev/sites/drupal8alt.dev/vendor/behat/mink/src/Session.php:148
/Users/alex/dev/sites/drupal8alt.dev/core/tests/Drupal/Tests/UiHelperTrait.php:334
/Users/alex/dev/sites/drupal8alt.dev/core/modules/comment/tests/src/Functional/CommentAdminTest.php:169
/Users/alex/dev/sites/drupal8alt.dev/vendor/phpunit/phpunit/src/Framework/TestResult.php:703

3) Drupal\Tests\comment\Functional\CommentAdminTest::testEditComment
Exception: Deprecated function: DateTime::setTimestamp(): Passing null to parameter #1 ($timestamp) of type int is deprecated
Drupal\Core\Datetime\DateFormatter->formatDiff()() (Line: 220)


/Users/alex/dev/sites/drupal8alt.dev/core/lib/Drupal/Core/Test/HttpClientMiddleware/TestHttpClientMiddleware.php:49
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:204
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:153
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/TaskQueue.php:48
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:248
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:224
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:269
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:226
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/promises/src/Promise.php:62
/Users/alex/dev/sites/drupal8alt.dev/vendor/guzzlehttp/guzzle/src/Client.php:182
/Users/alex/dev/sites/drupal8alt.dev/core/tests/Drupal/Tests/DrupalTestBrowser.php:137
/Users/alex/dev/sites/drupal8alt.dev/vendor/symfony/browser-kit/Client.php:404
/Users/alex/dev/sites/drupal8alt.dev/vendor/symfony/browser-kit/Client.php:622
/Users/alex/dev/sites/drupal8alt.dev/vendor/symfony/browser-kit/Client.php:422
/Users/alex/dev/sites/drupal8alt.dev/vendor/symfony/browser-kit/Client.php:324
/Users/alex/dev/sites/drupal8alt.dev/vendor/friends-of-behat/mink-browserkit-driver/src/BrowserKitDriver.php:719
/Users/alex/dev/sites/drupal8alt.dev/vendor/friends-of-behat/mink-browserkit-driver/src/BrowserKitDriver.php:494
/Users/alex/dev/sites/drupal8alt.dev/vendor/behat/mink/src/Element/NodeElement.php:153
/Users/alex/dev/sites/drupal8alt.dev/vendor/behat/mink/src/Element/NodeElement.php:161
/Users/alex/dev/sites/drupal8alt.dev/core/tests/Drupal/Tests/UiHelperTrait.php:100
/Users/alex/dev/sites/drupal8alt.dev/core/modules/comment/tests/src/Functional/CommentTestBase.php:158
/Users/alex/dev/sites/drupal8alt.dev/core/modules/comment/tests/src/Functional/CommentAdminTest.php:226
/Users/alex/dev/sites/drupal8alt.dev/vendor/phpunit/phpunit/src/Framework/TestResult.php:703

After

 ./vendor/bin/phpunit -v core/modules/comment/tests/src/Functional/CommentAdminTest.php
PHPUnit 8.5.21 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.1.0RC3-dev
Configuration: /Users/alex/dev/sites/drupal8alt.dev/phpunit.xml

Testing Drupal\Tests\comment\Functional\CommentAdminTest
.....                                                               5 / 5 (100%)

Time: 45.86 seconds, Memory: 8.00 MB

OK (5 tests, 154 assertions)
daffie’s picture

Status: Needs review » Reviewed & tested by the community

Looks good to me.

larowlan’s picture

Status: Reviewed & tested by the community » Fixed

Committed deb93f5 and pushed to 9.3.x. Thanks!

  • larowlan committed deb93f5 on 9.3.x
    Issue #3241265 by alexpott: user_user_view() triggers a deprecation in...

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.