As Setup.php assigns variables based on the cache config, bootstrap.php was late on reseting them, as some objects were already created. So we could end up with a SqlBagOStuff created there, which when later accessed (such as trying to invalidate the cache for a user) would -as any non-sqlite SqlBagOStuff- open a new db connection. Which is precisely what we shall not be done when dealing with temporary tables (and would indeed fail miserably due to not finding unittest_objectcache table). In summary, reenabling temporary tables disabled in r79411.
62 lines
1.7 KiB
PHP
Executable file
62 lines
1.7 KiB
PHP
Executable file
#!/usr/bin/env php
|
|
<?php
|
|
/**
|
|
* Bootstrapping for MediaWiki PHPUnit tests
|
|
*
|
|
* @file
|
|
*/
|
|
|
|
/* Configuration */
|
|
|
|
// Evaluate the include path relative to this file
|
|
$IP = dirname( dirname( dirname( __FILE__ ) ) );
|
|
|
|
// Set a flag which can be used to detect when other scripts have been entered through this entry point or not
|
|
define( 'MW_PHPUNIT_TEST', true );
|
|
|
|
// Start up MediaWiki in command-line mode
|
|
require_once( "$IP/maintenance/Maintenance.php" );
|
|
|
|
class PHPUnitMaintClass extends Maintenance {
|
|
public function finalSetup() {
|
|
$settings = parent::finalSetup();
|
|
|
|
global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, $wgUseDatabaseMessages;
|
|
|
|
$wgMainCacheType = CACHE_NONE;
|
|
$wgMessageCacheType = CACHE_NONE;
|
|
$wgParserCacheType = CACHE_NONE;
|
|
$wgUseDatabaseMessages = false; # Set for future resets
|
|
}
|
|
public function execute() { }
|
|
public function getDbType() {
|
|
return Maintenance::DB_ADMIN;
|
|
}
|
|
}
|
|
|
|
$maintClass = 'PHPUnitMaintClass';
|
|
require( RUN_MAINTENANCE_IF_MAIN );
|
|
|
|
// Assume UTC for testing purposes
|
|
$wgLocaltimezone = 'UTC';
|
|
|
|
$wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
|
|
|
|
if( !in_array( '--configuration', $_SERVER['argv'] ) ) {
|
|
//Hack to eliminate the need to use the Makefile (which sucks ATM)
|
|
$_SERVER['argv'][] = '--configuration';
|
|
$_SERVER['argv'][] = $IP . '/tests/phpunit/suite.xml';
|
|
}
|
|
|
|
require_once( 'PHPUnit/Runner/Version.php' );
|
|
if( version_compare( PHPUnit_Runner_Version::id(), '3.5.0', '>=' ) ) {
|
|
# PHPUnit 3.5.0 introduced a nice autoloader based on class name
|
|
require_once( 'PHPUnit/Autoload.php' );
|
|
} else {
|
|
# Keep the old pre PHPUnit 3.5.0 behaviour for compatibility
|
|
require_once( 'PHPUnit/TextUI/Command.php' );
|
|
}
|
|
|
|
require_once( "$IP/tests/TestsAutoLoader.php" );
|
|
MediaWikiPHPUnitCommand::main();
|
|
|