aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_framework/phpbb_database_test_case.php
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2010-03-26 17:37:01 +0100
committerJoas Schilling <nickvergessen@gmx.de>2010-03-26 17:37:01 +0100
commita7581085e002035ab5c516fe91fe4ece57087267 (patch)
treef551277f752608d73148b5df4e9bdc885b45e508 /tests/test_framework/phpbb_database_test_case.php
parentaf654814f63e05be5236075f06943062be007072 (diff)
downloadforums-a7581085e002035ab5c516fe91fe4ece57087267.tar
forums-a7581085e002035ab5c516fe91fe4ece57087267.tar.gz
forums-a7581085e002035ab5c516fe91fe4ece57087267.tar.bz2
forums-a7581085e002035ab5c516fe91fe4ece57087267.tar.xz
forums-a7581085e002035ab5c516fe91fe4ece57087267.zip
[feature/dbal-tests] Load phpbb-schema after creating the connection to the database
Diffstat (limited to 'tests/test_framework/phpbb_database_test_case.php')
-rw-r--r--tests/test_framework/phpbb_database_test_case.php49
1 files changed, 48 insertions, 1 deletions
diff --git a/tests/test_framework/phpbb_database_test_case.php b/tests/test_framework/phpbb_database_test_case.php
index f0aa54ec8d..4f017f08d0 100644
--- a/tests/test_framework/phpbb_database_test_case.php
+++ b/tests/test_framework/phpbb_database_test_case.php
@@ -19,12 +19,59 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
}
}
+ function split_sql_file($sql, $delimiter)
+ {
+ $sql = str_replace("\r" , '', $sql);
+ $data = preg_split('/' . preg_quote($delimiter, '/') . '$/m', $sql);
+
+ $data = array_map('trim', $data);
+
+ // The empty case
+ $end_data = end($data);
+
+ if (empty($end_data))
+ {
+ unset($data[key($data)]);
+ }
+
+ return $data;
+ }
+
public function getConnection()
{
+ static $already_connected;
+
$this->init_test_case_helpers();
$database_config = $this->test_case_helpers->get_database_config();
- $pdo = new PDO('mysql:host=' . $database_config['dbhost'] . ';dbname=' . $database_config['dbname'], $database_config['dbuser'], $database_config['dbpasswd']);
+ if ($already_connected)
+ {
+ $pdo = new PDO('mysql:host=' . $database_config['dbhost'] . ';dbname=' . $database_config['dbname'], $database_config['dbuser'], $database_config['dbpasswd']);
+ }
+ else
+ {
+ $pdo = new PDO('mysql:host=' . $database_config['dbhost'] . ';', $database_config['dbuser'], $database_config['dbpasswd']);
+
+ try
+ {
+ $pdo->exec('DROP DATABASE ' . $database_config['dbname']);
+ }
+ catch (PDOException $e){} // ignore non existent db
+
+ $pdo->exec('CREATE DATABASE ' . $database_config['dbname']);
+
+ $pdo = new PDO('mysql:host=' . $database_config['dbhost'] . ';dbname=' . $database_config['dbname'], $database_config['dbuser'], $database_config['dbpasswd']);
+
+ $sql_query = $this->split_sql_file(file_get_contents('../phpBB/install/schemas/mysql_41_schema.sql'), ';');
+
+ foreach ($sql_query as $sql)
+ {
+ $pdo->exec($sql);
+ }
+
+ $already_connected = true;
+ }
+
return $this->createDefaultDBConnection($pdo, 'testdb');
}