Page MenuHomePhabricator

Tests have a hard dependancy on ores
Closed, ResolvedPublic

Description

From what I can tell, MediaWiki-extensions-ORES isn't actually needed to use PageTriage (for example, if I look in extension.json, there is no dependancy), but not having it installed seems to result in test failures...

reedy@ubuntu64-web-esxi:/var/www/wiki/mediawiki/core/extensions/PageTriage$ php /var/www/wiki/mediawiki/core/tests/phpunit/phpunit.php /var/www/wiki/mediawiki/core/extensions/PageTriage
Using PHP 8.1.13
PHPUnit 9.5.27 by Sebastian Bergmann and contributors.

.E

Time: 00:00.819, Memory: 78.50 MB

There was 1 error:

1) MediaWiki\Extension\PageTriage\Test\ApiPageTriageActionTest::testLogin
Wikimedia\Rdbms\DBQueryError: Error 1146: Table 'wikidb.unittest_ores_model' doesn't exist
Function: MediaWikiIntegrationTestCase::truncateTables
Query: TRUNCATE TABLE `unittest_ores_model`
 in /var/www/wiki/mediawiki/core/includes/libs/rdbms/database/Database.php:1544
Stack trace:
#0 /var/www/wiki/mediawiki/core/includes/libs/rdbms/database/Database.php(1528): Wikimedia\Rdbms\Database->getQueryException()
#1 /var/www/wiki/mediawiki/core/includes/libs/rdbms/database/Database.php(1502): Wikimedia\Rdbms\Database->getQueryExceptionAndLog()
#2 /var/www/wiki/mediawiki/core/includes/libs/rdbms/database/Database.php(873): Wikimedia\Rdbms\Database->reportQueryError()
#3 /var/www/wiki/mediawiki/core/includes/libs/rdbms/database/Database.php(3358): Wikimedia\Rdbms\Database->query()
#4 /var/www/wiki/mediawiki/core/includes/libs/rdbms/database/Database.php(3345): Wikimedia\Rdbms\Database->doTruncate()
#5 /var/www/wiki/mediawiki/core/tests/phpunit/MediaWikiIntegrationTestCase.php(2126): Wikimedia\Rdbms\Database->truncate()
#6 /var/www/wiki/mediawiki/core/tests/phpunit/MediaWikiIntegrationTestCase.php(2100): MediaWikiIntegrationTestCase->truncateTables()
#7 /var/www/wiki/mediawiki/core/tests/phpunit/MediaWikiIntegrationTestCase.php(527): MediaWikiIntegrationTestCase->resetDB()
#8 /var/www/wiki/mediawiki/core/vendor/phpunit/phpunit/src/Framework/TestSuite.php(675): MediaWikiIntegrationTestCase->run()
#9 /var/www/wiki/mediawiki/core/vendor/phpunit/phpunit/src/Framework/TestSuite.php(675): PHPUnit\Framework\TestSuite->run()
#10 /var/www/wiki/mediawiki/core/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(661): PHPUnit\Framework\TestSuite->run()
#11 /var/www/wiki/mediawiki/core/vendor/phpunit/phpunit/src/TextUI/Command.php(144): PHPUnit\TextUI\TestRunner->run()
#12 /var/www/wiki/mediawiki/core/tests/phpunit/phpunit.php(101): PHPUnit\TextUI\Command->run()
#13 /var/www/wiki/mediawiki/core/tests/phpunit/phpunit.php(153): PHPUnitMaintClass->execute()
#14 {main}
ERRORS!
Tests: 1, Assertions: 14, Errors: 1.


You should really speed up these slow tests (>50ms)...
 1. 220ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageActionTest::testLogin

If Ores isn't enabled/installed, it shouldn't be trying to run these tests.

If I enable Ores, and try again... It passes!

reedy@ubuntu64-web-esxi:/var/www/wiki/mediawiki/core/extensions/PageTriage$ php /var/www/wiki/mediawiki/core/tests/phpunit/phpunit.php /var/www/wiki/mediawiki/core/extensions/PageTriage
Using PHP 8.1.13
PHPUnit 9.5.27 by Sebastian Bergmann and contributors.

..............................................................    62 / 62 (100%)

Time: 00:22.644, Memory: 215.00 MB

OK (62 tests, 247 assertions)


You should really speed up these slow tests (>50ms)...
 1. 1168ms to run MediaWiki\\Extension\\PageTriage\\Test\\MaintenancePopulateDraftQueueTest::testPreExistingPagesWithCategoriesAreGivenCorrectTags
 2. 1006ms to run ApiPageTriageListTest::testTalkpageFeedbackCount
 3. 836ms to run ApiPageTriageListTest::testQueryOresCopyvio
 4. 754ms to run ApiPageTriageListTest::testFilterType
 5. 684ms to run MediaWiki\\Extension\\PageTriage\\Test\\ArticleMetadataTest::testValidatePageIds
 6. 667ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageTagCopyvioTest::testCopyvioInsertLog
 7. 600ms to run MediaWiki\\Extension\\PageTriage\\Test\\ArticleMetadataTest::testDeleteMetadata
 8. 581ms to run ApiPageTriageListTest::testUndelete
 9. 556ms to run MediaWiki\\Extension\\PageTriage\\Test\\SpecialNewPagesFeedTest::testAddArticles
 10. 544ms to run MediaWiki\\Extension\\PageTriage\\Test\\ArticleMetadataTest::testGetMetadata
 11. 533ms to run MediaWiki\\Extension\\PageTriage\\Test\\ArticleMetadataTest::testValidCovers
 12. 451ms to run ApiPageTriageListTest::testUnsubmittedDrafts
 13. 402ms to run ApiPageTriageListTest::testMoveToDraftPage
 14. 397ms to run ApiPageTriageListTest::testArticlesFromRedirects
 15. 395ms to run ApiPageTriageListTest::testAfcTags
 16. 351ms to run ApiPageTriageListTest::testMoveFromDraftPage
 17. 350ms to run ApiPageTriageListTest::testFilterDateRange
 18. 345ms to run ApiPageTriageListTest::testAutopatrolledCreation
 19. 345ms to run ApiPageTriageListTest::testSubmissionSorting
 20. 342ms to run ApiPageTriageListTest::testQueryOres
 21. 314ms to run ApiPageTriageListTest::testMultiAfcCategories
 22. 292ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageActionTest::testSuccessfulReviewAction
 23. 276ms to run ApiPageTriageListTest::testQueryOresBoundaries
 24. 269ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageActionTest::testNoChangeReviewAction
 25. 265ms to run ApiPageTriageStatsTest::testFilteredArticleCount
 26. 254ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageActionTest::testPermissionErrorAnon
 27. 236ms to run MediaWiki\\Extension\\PageTriage\\Integration\\QueueManagerTest::testDeleteExistentPage
 28. 235ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageActionTest::testPermissionError
 29. 235ms to run MediaWiki\\Extension\\PageTriage\\Test\\MaintenancePopulateDraftQueueTest::testPreExistingPageAddedToDraftQueueAfterActivation
 30. 227ms to run ApiPageTriageListTest::testCreateDraftPage
 31. 223ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageActionTest::testLogin
 32. 192ms to run MediaWiki\\Extension\\PageTriage\\Test\\HooksTest::testDraftRedirectsAreNotAdded
 33. 170ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageTagCopyvioTest::testCopyvioInvalidPermissions
 34. 160ms to run ApiPageTriageListTest::testValidCovers
 35. 148ms to run MediaWiki\\Extension\\PageTriage\\Test\\HooksTest::testValidCovers
 36. 126ms to run MediaWiki\\Extension\\PageTriage\\Test\\SpecialNewPagesFeedTest::testLogin
 37. 119ms to run ApiPageTriageStatsTest::testApiParamsByEndpoint
 38. 109ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageActionTest::testPageError
 39. 109ms to run ApiPageTriageListTest::testApiParamsByEndpoint
 40. 108ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageTagCopyvioTest::testInvalidPageId
 41. 94ms to run MediaWiki\\Extension\\PageTriage\\Test\\SpecialNewPagesFeedTest::testValidCovers
 42. 93ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageActionTest::testValidCovers
 43. 89ms to run MediaWiki\\Extension\\PageTriage\\Test\\MaintenancePopulateDraftQueueTest::testValidCovers
 44. 87ms to run MediaWiki\\Extension\\PageTriage\\Test\\ApiPageTriageTagCopyvioTest::testValidCovers
 45. 85ms to run ApiPageTriageStatsTest::testValidCovers

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript
Reedy updated the task description. (Show Details)

FYI, having ORES installed and enabled in PageTriage changes what displays in Special:NewPagesFeed. It adds some filters to the filters panel, and it adds some info to each article in the list.

ORES is also a bit tricky to set up on localhost for manual testing. More info at https://www.mediawiki.org/wiki/Extension:PageTriage#Testing_with_ORES

Not sure if that changes anything but figured I'd mention it. With that in mind, do you still recommend we put a check to not run the ORES-dependent unit tests if ORES isn't installed?

Change 869188 had a related patch set uploaded (by Kosta Harlan; author: Kosta Harlan):

[mediawiki/extensions/PageTriage@master] Tests: Skip ORES dependent tests when extension not loaded

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

Not sure if that changes anything but figured I'd mention it. With that in mind, do you still recommend we put a check to not run the ORES-dependent unit tests if ORES isn't installed?

Yeah, that is a good idea. I've done so in the patch above.

Not sure if that changes anything but figured I'd mention it. With that in mind, do you still recommend we put a check to not run the ORES-dependent unit tests if ORES isn't installed?

Yeah, that is a good idea. I've done so in the patch above.

Indeed. Ores is either a hard dependency or it’s not. If it is a hard one, it should be technically enforced where possible (or at least documented). If it’s not, tests shouldn’t fail because it’s missing!

Change 869188 merged by jenkins-bot:

[mediawiki/extensions/PageTriage@master] Tests: Skip ORES dependent tests when extension not loaded

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