[go: up one dir, main page]

Page MenuHomePhabricator

Errors running `composer phpunit` and warnings running `composer phpunit:integration` on a clean install of mediawiki-core
Open, Needs TriagePublic

Description

Steps to reproduce:

cd public_html
$ git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git mediawiki-clean
$ cd mediawiki-clean/skins
$ git clone https://gerrit.wikimedia.org/r/p/mediawiki/skins/Vector
$ cd ..
$ composer install

Visit localhost/~USER/mediawiki-clean/ do basic installation, be bored, download the LocalSettings.php to the right place.

cananian@skiffserv:~/public_html/mediawiki-clean$ composer phpunit
> phpunit
PHPUnit 8.5.8 by Sebastian Bergmann and contributors.

.............................................................   61 / 6110 (  0%)
[etc]
............................................................. 5917 / 6110 ( 96%)
.........................[3f70a8e1c4386deb6dd0e058] [no req]   Error from line 1595 of /home/cananian/public_html/mediawiki-clean/includes/user/User.php: Call to a member function getIP() on null
Backtrace:
#0 /home/cananian/public_html/mediawiki-clean/includes/user/User.php(1897): User->getBlockedStatus(boolean)
#1 /home/cananian/public_html/mediawiki-clean/includes/Permissions/PermissionManager.php(672): User->getBlock(boolean)
#2 /home/cananian/public_html/mediawiki-clean/includes/Permissions/PermissionManager.php(409): MediaWiki\Permissions\PermissionManager->checkUserBlock(string, User, array, string, boolean, Title)
#3 /home/cananian/public_html/mediawiki-clean/includes/Permissions/PermissionManager.php(243): MediaWiki\Permissions\PermissionManager->getPermissionErrorsInternal(string, User, Title, string, boolean)
#4 /home/cananian/public_html/mediawiki-clean/includes/page/WikiPage.php(2015): MediaWiki\Permissions\PermissionManager->userCan(string, User, Title)
#5 /home/cananian/public_html/mediawiki-clean/tests/phpunit/MediaWikiIntegrationTestCase.php(1380): WikiPage->doEditContent(WikitextContent, CommentStoreComment, integer, boolean, User)
#6 /home/cananian/public_html/mediawiki-clean/tests/phpunit/MediaWikiIntegrationTestCase.php(430): MediaWikiIntegrationTestCase->addCoreDBData()
#7 /home/cananian/public_html/mediawiki-clean/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): MediaWikiIntegrationTestCase->run(PHPUnit\Framework\TestResult)
#8 /home/cananian/public_html/mediawiki-clean/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#9 /home/cananian/public_html/mediawiki-clean/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#10 /home/cananian/public_html/mediawiki-clean/vendor/phpunit/phpunit/src/Framework/TestSuite.php(597): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#11 /home/cananian/public_html/mediawiki-clean/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(627): PHPUnit\Framework\TestSuite->run(PHPUnit\Framework\TestResult)
#12 /home/cananian/public_html/mediawiki-clean/vendor/phpunit/phpunit/src/TextUI/Command.php(204): PHPUnit\TextUI\TestRunner->doRun(PHPUnit\Framework\TestSuite, array, array, boolean)
#13 /home/cananian/public_html/mediawiki-clean/vendor/phpunit/phpunit/src/TextUI/Command.php(163): PHPUnit\TextUI\Command->run(array, boolean)
#14 /home/cananian/public_html/mediawiki-clean/vendor/phpunit/phpunit/phpunit(61): PHPUnit\TextUI\Command::main()
#15 {main}
Script phpunit handling the phpunit event returned with error code 255

This is suspiciously similar to T230781: vendor/bin/phpunit fails with MobileFrontend integration tests.
Also:

$ composer phpunit:integration
> phpunit --colors=always --testsuite=core:integration,extensions:integration,skins:integration
PHPUnit 8.5.8 by Sebastian Bergmann and contributors.

........W........................W.............................  63 / 168 ( 37%)
.................SSSS.......................................... 126 / 168 ( 75%)
..........................................                      168 / 168 (100%)

You should really speed up these slow tests (>50ms)...
 1. 3187ms to run DatabaseSqliteTest:testUpgrades
[etc]
 19. 55ms to run MediaWiki\Tests\Storage\EditResultBuilderDbTest:testManualRevert with data set "reverting multiple edits"


Time: 7.88 seconds, Memory: 60.50 MB

There were 2 warnings:

1) Warning
The data provider specified for MediaWiki\Tests\Rest\Handler\CreationHandlerTest::testErrorMapping is invalid.
InvalidArgumentException: Key "CanonicalNamespaceNames" not found in input sources
/home/cananian/public_html/mediawiki-clean/includes/config/ServiceOptions.php:52
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:773
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/MediaWikiServices.php:957
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:386
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/MediaWikiServices.php:727
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:1384
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:1218
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/MediaWikiServices.php:1257
/home/cananian/public_html/mediawiki-clean/includes/language/TrivialLanguageConverter.php:50
/home/cananian/public_html/mediawiki-clean/includes/language/LanguageConverterFactory.php:111
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:694
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/MediaWikiServices.php:925
/home/cananian/public_html/mediawiki-clean/includes/language/Message.php:1301
/home/cananian/public_html/mediawiki-clean/includes/language/Message.php:862
/home/cananian/public_html/mediawiki-clean/includes/language/Message.php:954
/home/cananian/public_html/mediawiki-clean/includes/api/ApiUsageException.php:56
/home/cananian/public_html/mediawiki-clean/tests/phpunit/integration/includes/Rest/Handler/CreationHandlerTest.php:426

2) Warning
The data provider specified for MediaWiki\Tests\Rest\Handler\UpdateHandlerTest::testErrorMapping is invalid.
InvalidArgumentException: Key "CanonicalNamespaceNames" not found in input sources
/home/cananian/public_html/mediawiki-clean/includes/config/ServiceOptions.php:52
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:773
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/MediaWikiServices.php:957
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:386
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/MediaWikiServices.php:727
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:1384
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:1218
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/MediaWikiServices.php:1257
/home/cananian/public_html/mediawiki-clean/includes/language/TrivialLanguageConverter.php:50
/home/cananian/public_html/mediawiki-clean/includes/language/LanguageConverterFactory.php:111
/home/cananian/public_html/mediawiki-clean/includes/ServiceWiring.php:694
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:447
/home/cananian/public_html/mediawiki-clean/vendor/wikimedia/services/src/ServiceContainer.php:416
/home/cananian/public_html/mediawiki-clean/includes/MediaWikiServices.php:925
/home/cananian/public_html/mediawiki-clean/includes/language/Message.php:1301
/home/cananian/public_html/mediawiki-clean/includes/language/Message.php:862
/home/cananian/public_html/mediawiki-clean/includes/language/Message.php:954
/home/cananian/public_html/mediawiki-clean/includes/api/ApiUsageException.php:56
/home/cananian/public_html/mediawiki-clean/tests/phpunit/integration/includes/Rest/Handler/UpdateHandlerTest.php:522

WARNINGS!
Tests: 168, Assertions: 16468, Warnings: 2, Skipped: 4.
cananian@skiffserv:~/public_html/mediawiki-clean$ 

Event Timeline

One of the things that seems to be happening in the phpunit:integration case is that the data providers are being run *before* MediaWikiIntegrationTestCase::setupBeforeClass(), and the providers are calling Message.php and failing because setup hasn't been done yet. No idea how this isn't failing the same way in CI.

@ssastry ran into this today. We should fix things so that this works the same as sudo -u www-data php tests/phpunit/phpunit.php --wiki wiki if possible.

One of the things that seems to be happening in the phpunit:integration case is that the data providers are being run *before* MediaWikiIntegrationTestCase::setupBeforeClass(), and the providers are calling Message.php and failing because setup hasn't been done yet. No idea how this isn't failing the same way in CI.

This sounds similar to T266441: MediaWikiUnitTestCase should prevent access to MediaWikiServices, see also https://gerrit.wikimedia.org/r/c/mediawiki/core/+/637280 where we propose to block callers to MediaWikiServices in data providers.

It's not failing in CI because we run integration tests with tests/phpunit/phpunit.php instead of vendor/bin/phpunit, for now anyway.