wiki.techinc.nl/tests/MediaWiki_TestCase.php
Aryeh Gregor d20794df5c Make Database into abstract class DatabaseBase
All other databases were changed to extend DatabaseBase instead of
Database.  Database was kept as an alias for DatabaseMysql for
compatibility.  Existing explicit references to Database that I could
find were changed to DatabaseMysql for the sake of clarity.

Should cause no functional changes.
2009-06-12 17:59:04 +00:00

51 lines
1.5 KiB
PHP

<?php
abstract class MediaWiki_TestCase extends PHPUnit_Framework_TestCase {
/**
* @param string $serverType
* @param array $tables
*/
protected function buildTestDatabase( $tables ) {
global $testOptions, $wgDBprefix, $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname;
$wgDBprefix = 'parsertest_';
$db = new DatabaseMysql(
$wgDBserver,
$wgDBadminuser,
$wgDBadminpassword,
$wgDBname );
if( $db->isOpen() ) {
if (!(strcmp($db->getServerVersion(), '4.1') < 0 and stristr($db->getSoftwareLink(), 'MySQL'))) {
# Database that supports CREATE TABLE ... LIKE
foreach ($tables as $tbl) {
$newTableName = $db->tableName( $tbl );
#$tableName = $this->oldTableNames[$tbl];
$tableName = $tbl;
$db->query("CREATE TEMPORARY TABLE $newTableName (LIKE $tableName)");
}
} else {
# Hack for MySQL versions < 4.1, which don't support
# "CREATE TABLE ... LIKE". Note that
# "CREATE TEMPORARY TABLE ... SELECT * FROM ... LIMIT 0"
# would not create the indexes we need....
foreach ($tables as $tbl) {
$res = $db->query("SHOW CREATE TABLE $tbl");
$row = $db->fetchRow($res);
$create = $row[1];
$create_tmp = preg_replace('/CREATE TABLE `(.*?)`/', 'CREATE TEMPORARY TABLE `'
. $wgDBprefix . '\\1`', $create);
if ($create === $create_tmp) {
# Couldn't do replacement
wfDie( "could not create temporary table $tbl" );
}
$db->query($create_tmp);
}
}
return $db;
} else {
// Something amiss
return null;
}
}
}