Page MenuHomePhabricator

Creation of dynamic property Wikibase\Lib\Store\EntityRevision::$user is deprecated
Closed, ResolvedPublic

Description

phpunit under php8.2 fails with the following message
https://integration.wikimedia.org/ci/job/quibble-vendor-mysql-php82-noselenium-docker/151/console

41) Wikibase\Lib\Tests\MockRepositoryTest::testSaveEntity with data set "fresh" (Wikibase\DataModel\Entity\Item Object (...), 1, false)
Creation of dynamic property Wikibase\Lib\Store\EntityRevision::$user is deprecated

/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepository.php:263
/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepository.php:486
/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepositoryTest.php:447

42) Wikibase\Lib\Tests\MockRepositoryTest::testSaveEntity with data set "update" (Wikibase\DataModel\Entity\Item Object (...), 2, 1011)
Creation of dynamic property Wikibase\Lib\Store\EntityRevision::$user is deprecated

/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepository.php:263
/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepository.php:486
/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepositoryTest.php:447

43) Wikibase\Lib\Tests\MockRepositoryTest::testUpdateWatchlist
Creation of dynamic property Wikibase\Lib\Store\EntityRevision::$user is deprecated

/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepository.php:263
/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepository.php:486
/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepositoryTest.php:585

44) Wikibase\Lib\Tests\MockRepositoryTest::testUserWasLastToEdit
Creation of dynamic property Wikibase\Lib\Store\EntityRevision::$user is deprecated

/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepository.php:263
/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepository.php:486
/workspace/src/extensions/Wikibase/lib/tests/phpunit/MockRepositoryTest.php:602

The code is:

		$revision = new EntityRevision(
			$entity->copy(), // note: always clone
			$revisionId,
			wfTimestamp( TS_MW, $timestamp )
		);

		if ( $user !== null ) {
			if ( $user instanceof UserIdentity ) {
				$user = $user->getName();
			}

			// just glue the user on here...
			$revision->user = $user;
		}

Not sure why it was added in 58d27b73c6fbaf99ba8e51b98f1c7837046ff723, it seems the property never exists on the EntityRevision

Event Timeline

Not sure why it was added in 58d27b73c6fbaf99ba8e51b98f1c7837046ff723, it seems the property never exists on the EntityRevision

The property is checked in userWasLastToEdit() in the same class.

I guess we can just add an array mapping revision ID to user name to MockRepository? (If I understand the class correctly, it completely bypasses any real MediaWiki page/revision store, so we have to store the information somewhere.)

Change 991841 had a related patch set uploaded (by Umherirrender; author: Umherirrender):

[mediawiki/extensions/Wikibase@master] tests: Avoid dynamic property $user in MockRepository

https://gerrit.wikimedia.org/r/991841

Change 991841 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] tests: Avoid dynamic property $user in MockRepository

https://gerrit.wikimedia.org/r/991841