Switched tests to portable table duplication
authorMax Semenik <maxsem@users.mediawiki.org>
Tue, 16 Feb 2010 12:12:29 +0000 (12:12 +0000)
committerMax Semenik <maxsem@users.mediawiki.org>
Tue, 16 Feb 2010 12:12:29 +0000 (12:12 +0000)
maintenance/tests/MediaWiki_Setup.php
maintenance/tests/SearchMySQLTest.php

index c0fba27..e7acc33 100644 (file)
@@ -12,31 +12,11 @@ abstract class MediaWiki_Setup extends PHPUnit_Framework_TestCase {
                $db->tablePrefix( 'parsertest_' );
 
                if( $db->isOpen() ) {
-                       if ( !( strcmp( $db->getServerVersion(), '4.1' ) < 0 and $db->getType() == 'mysql' ) ) {
-                               # Database that supports CREATE TABLE ... LIKE
-                               foreach ( $tables as $tbl ) {
-                                       $newTableName = $db->tableName( $tbl );
-                                       $tableName = $oldTableNames[$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 );
-                               }
-
+                       foreach ( $tables as $tbl ) {
+                               $newTableName = $db->tableName( $tbl );
+                               $tableName = $oldTableNames[$tbl];
+                               $db->query( "DROP TABLE IF EXISTS $newTableName", __METHOD__ );
+                               $db->duplicateTableStructure( $tableName, $newTableName, __METHOD__ );
                        }
                        return $db;
                } else {
index f54bbe9..526f621 100644 (file)
@@ -7,7 +7,7 @@ class SearchMySQLTest extends SearchEngineTest {
        function setUp() {
                $GLOBALS['wgContLang'] = new Language;
                $this->db = $this->buildTestDatabase(
-                       array( 'page', 'revision', 'text', 'searchindex' ) );
+                       array( 'page', 'revision', 'text', 'searchindex', 'user' ) );
                if( $this->db ) {
                        $this->insertSearchData();
                }