Page MenuHomePhabricator

PHPUnit fails in MediaWiki-Vagrant due to centralauth/globaluser tables
Closed, ResolvedPublic

Description

Using PHP 5.5.9-1ubuntu4.14
A database query error has occurred.
Query: SELECT  gu_id,gu_name,lu_wiki,gu_salt,gu_password,gu_auth_token,gu_locked,gu_hidden,gu_registration,gu_email,gu_email_authenticated,gu_home_db,gu_cas_token  FROM `globaluser` LEFT OUTER JOIN `localuser` ON ((gu_name=lu_name) AND lu_wiki = 'wiki')  WHERE gu_name = '127.0.0.1'  LIMIT 1  
Function: CentralAuthUser::loadState
Error: 1146 Table 'wiki.globaluser' doesn't exist (127.0.0.1)

Backtrace:
#0 /vagrant/mediawiki/includes/db/Database.php(901): DatabaseBase->reportQueryError('Table 'wiki.glo...', 1146, 'SELECT  gu_id,g...', 'CentralAuthUser...', false)
#1 /vagrant/mediawiki/includes/db/Database.php(1234): DatabaseBase->query('SELECT  gu_id,g...', 'CentralAuthUser...')
#2 /vagrant/mediawiki/includes/db/Database.php(1293): DatabaseBase->select(Array, Array, Array, 'CentralAuthUser...', Array, Array)
#3 /vagrant/mediawiki/extensions/CentralAuth/includes/CentralAuthUser.php(379): DatabaseBase->selectRow(Array, Array, Array, 'CentralAuthUser...', Array, Array)
#4 /vagrant/mediawiki/extensions/CentralAuth/includes/CentralAuthUser.php(578): CentralAuthUser->loadState()
#5 /vagrant/mediawiki/extensions/CentralAuth/includes/CentralAuthHooks.php(926): CentralAuthUser->isAttached()
#6 [internal function]: CentralAuthHooks::onUserSetEmailAuthenticationTimestamp(Object(User), NULL)
#7 /vagrant/mediawiki/includes/Hooks.php(195): call_user_func_array('CentralAuthHook...', Array)
#8 /vagrant/mediawiki/includes/user/User.php(4612): Hooks::run('UserSetEmailAut...', Array)
#9 /vagrant/mediawiki/includes/user/User.php(4599): User->setEmailAuthenticationTimestamp(NULL)
#10 /vagrant/mediawiki/includes/user/User.php(2772): User->invalidateEmail()
#11 /vagrant/mediawiki/tests/phpunit/includes/PreferencesTest.php(23): User->setEmail('noauth@example....')
#12 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(475): PreferencesTest->__construct()
#13 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(880): PHPUnit_Framework_TestSuite::createTest(Object(ReflectionClass), 'testEmailAuthen...')
#14 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(195): PHPUnit_Framework_TestSuite->addTestMethod(Object(ReflectionClass), Object(ReflectionMethod))
#15 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(297): PHPUnit_Framework_TestSuite->__construct(Object(ReflectionClass))
#16 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(381): PHPUnit_Framework_TestSuite->addTestSuite(Object(ReflectionClass))
#17 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(409): PHPUnit_Framework_TestSuite->addTestFile('/vagrant/mediaw...')
#18 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Util/Configuration.php(959): PHPUnit_Framework_TestSuite->addTestFiles(Array)
#19 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Util/Configuration.php(878): PHPUnit_Util_Configuration->getTestSuite(Object(DOMElement), NULL)
#20 /vagrant/mediawiki/vendor/phpunit/phpunit/src/TextUI/Command.php(649): PHPUnit_Util_Configuration->getTestSuiteConfiguration(NULL)
#21 /vagrant/mediawiki/vendor/phpunit/phpunit/src/TextUI/Command.php(111): PHPUnit_TextUI_Command->handleArguments(Array)
#22 /vagrant/mediawiki/vendor/phpunit/phpunit/src/TextUI/Command.php(100): PHPUnit_TextUI_Command->run(Array, true)
#23 /vagrant/mediawiki/tests/phpunit/phpunit.php(271): PHPUnit_TextUI_Command::main()
#24 {main}

I already tried the following in settings but no difference:

if ( defined( 'MW_PHPUNIT_TEST' ) ) {
	$wgCentralAuthDatabase = false;
	$wgSharedDB = null;
}

Event Timeline

Also tried the following and re-running mwscript maintenance/update.php --wiki wiki

	$wgCentralAuthDatabase = $wgSharedDB = $wgDBname;

And even when running just a few specific unit tests, it fails as soon as anything Database or User related pops up:

vagrant at mediawiki-vagrant.dev in /vagrant/mediawiki/tests/phpunit (review/thedj/bom)
$ alias mwpu='sudo -u www-data php5 /vagrant/mediawiki/tests/phpunit/phpunit.php --wiki wiki'
$ mwpu includes/resourceloader/
Using PHP 5.5.9-1ubuntu4.14
PHPUnit 4.8.24 by Sebastian Bergmann and contributors.

...........A database query error has occurred.
Query: SELECT  gu_id,gu_name,lu_wiki,gu_salt,gu_password,gu_auth_token,gu_locked,gu_hidden,gu_registration,gu_email,gu_email_authenticated,gu_home_db,gu_cas_token  FROM `unittest_globaluser` LEFT OUTER JOIN `unittest_localuser` ON ((gu_name=lu_name) AND lu_wiki = 'wiki-unittest_')  WHERE gu_name = 'UTSysop'  LIMIT 1  
Function: CentralAuthUser::loadState
Error: 1146 Table 'wiki.unittest_globaluser' doesn't exist (127.0.0.1)

Backtrace:
#0 /vagrant/mediawiki/includes/db/Database.php(901): DatabaseBase->reportQueryError('Table 'wiki.uni...', 1146, 'SELECT  gu_id,g...', 'CentralAuthUser...', false)
#1 /vagrant/mediawiki/includes/db/Database.php(1234): DatabaseBase->query('SELECT  gu_id,g...', 'CentralAuthUser...')
#2 /vagrant/mediawiki/includes/db/Database.php(1293): DatabaseBase->select(Array, Array, Array, 'CentralAuthUser...', Array, Array)
#3 /vagrant/mediawiki/extensions/CentralAuth/includes/CentralAuthUser.php(379): DatabaseBase->selectRow(Array, Array, Array, 'CentralAuthUser...', Array, Array)
#4 /vagrant/mediawiki/extensions/CentralAuth/includes/CentralAuthUser.php(578): CentralAuthUser->loadState()
#5 /vagrant/mediawiki/extensions/CentralAuth/includes/CentralAuthHooks.php(856): CentralAuthUser->isAttached()
#6 [internal function]: CentralAuthHooks::onUserGetEmail(Object(User), '7cc255.001@medi...')
#7 /vagrant/mediawiki/includes/Hooks.php(195): call_user_func_array('CentralAuthHook...', Array)
#8 /vagrant/mediawiki/includes/user/User.php(2778): Hooks::run('UserGetEmail', Array)
#9 /vagrant/mediawiki/tests/phpunit/includes/TestUser.php(109): User->getEmail()
#10 /vagrant/mediawiki/tests/phpunit/includes/TestUser.php(69): TestUser->setEmail('7cc255.001@medi...')
#11 /vagrant/mediawiki/tests/phpunit/includes/TestUserRegistry.php(88): TestUser->__construct('UTSysop', 'Name 7cc255.001', '7cc255.001@medi...', Array, 'UTSysopPassword')
#12 /vagrant/mediawiki/tests/phpunit/MediaWikiTestCase.php(139): TestUserRegistry::getImmutableTestUser(Array)
#13 /vagrant/mediawiki/tests/phpunit/MediaWikiTestCase.php(163): MediaWikiTestCase::getTestUser(Array)
#14 /vagrant/mediawiki/tests/phpunit/MediaWikiTestCase.php(999): MediaWikiTestCase::getTestSysop()
#15 /vagrant/mediawiki/tests/phpunit/MediaWikiTestCase.php(372): MediaWikiTestCase->addCoreDBData()
#16 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(747): MediaWikiTestCase->run(Object(PHPUnit_Framework_TestResult))
#17 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(747): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult))
#18 /vagrant/mediawiki/vendor/phpunit/phpunit/src/Framework/TestSuite.php(747): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult))
#19 /vagrant/mediawiki/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(440): PHPUnit_Framework_TestSuite->run(Object(PHPUnit_Framework_TestResult))
#20 /vagrant/mediawiki/vendor/phpunit/phpunit/src/TextUI/Command.php(149): PHPUnit_TextUI_TestRunner->doRun(Object(PHPUnit_Framework_TestSuite), Array)
#21 /vagrant/mediawiki/vendor/phpunit/phpunit/src/TextUI/Command.php(100): PHPUnit_TextUI_Command->run(Array, true)
#22 /vagrant/mediawiki/tests/phpunit/phpunit.php(274): PHPUnit_TextUI_Command::main()
#23 {main}
$ vagrant roles list -e
Enabled roles:

flow                       navigationtiming           visualeditor              
mobilefrontend             popups                     wikilove                  
Krinkle claimed this task.

CentralAuth is required by Echo, which is required by Flow. Disabling the flow role and running vagrant provision fixed it for now.