diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2010-03-26 17:37:01 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2010-03-26 17:37:01 +0100 |
commit | a7581085e002035ab5c516fe91fe4ece57087267 (patch) | |
tree | f551277f752608d73148b5df4e9bdc885b45e508 /tests/test_framework/phpbb_database_test_case.php | |
parent | af654814f63e05be5236075f06943062be007072 (diff) | |
download | forums-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.php | 49 |
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'); } |