summaryrefslogtreecommitdiff
path: root/tests/MediaWiki_TestCase.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/MediaWiki_TestCase.php')
-rw-r--r--tests/MediaWiki_TestCase.php51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/MediaWiki_TestCase.php b/tests/MediaWiki_TestCase.php
new file mode 100644
index 00000000..3ca1dbdf
--- /dev/null
+++ b/tests/MediaWiki_TestCase.php
@@ -0,0 +1,51 @@
+<?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 Database(
+ $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;
+ }
+ }
+}
+