aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_framework/phpbb_database_test_case.php
diff options
context:
space:
mode:
authorPatrick Webster <noxwizard@phpbb.com>2012-02-28 06:18:24 -0600
committerPatrick Webster <noxwizard@phpbb.com>2012-05-08 04:31:29 -0500
commitd578eff712b6376e3568965afec7054bff317127 (patch)
tree296e38efe0574e33215327e60a3ec7993523c6e5 /tests/test_framework/phpbb_database_test_case.php
parentc0718fae96a991182f3941dee02599077b5b447d (diff)
downloadforums-d578eff712b6376e3568965afec7054bff317127.tar
forums-d578eff712b6376e3568965afec7054bff317127.tar.gz
forums-d578eff712b6376e3568965afec7054bff317127.tar.bz2
forums-d578eff712b6376e3568965afec7054bff317127.tar.xz
forums-d578eff712b6376e3568965afec7054bff317127.zip
[ticket/10678] Add better support for Firebird, Oracle, and MSSQL
Allow ODBC connections for Firebird Capitalize fixture tables and columns for Firebird On database drop failure, drop all tables Provide cleanup utilities for databases that cannot be dropped PHPBB3-10678
Diffstat (limited to 'tests/test_framework/phpbb_database_test_case.php')
-rw-r--r--tests/test_framework/phpbb_database_test_case.php27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/test_framework/phpbb_database_test_case.php b/tests/test_framework/phpbb_database_test_case.php
index e742b543b0..0e5518fef8 100644
--- a/tests/test_framework/phpbb_database_test_case.php
+++ b/tests/test_framework/phpbb_database_test_case.php
@@ -28,6 +28,28 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
);
}
+ public function createXMLDataSet($path)
+ {
+ $db_config = $this->get_database_config();
+
+ //Firebird requires table and column names to be uppercase
+ if($db_config['dbms'] == 'firebird')
+ {
+ $xml_data = file_get_contents($path);
+ $xml_data = preg_replace_callback('/(?:(<table name="))([a-z_]+)(?:(">))/', 'phpbb_database_test_case::to_upper', $xml_data);
+ $xml_data = preg_replace_callback('/(?:(<column>))([a-z_]+)(?:(<\/column>))/', 'phpbb_database_test_case::to_upper', $xml_data);
+
+ $temp = tmpfile();
+ fwrite($temp, $xml_data);
+ fseek($temp, 0);
+
+ $meta_data = stream_get_meta_data($temp);
+ $path = $meta_data['uri'];
+ }
+
+ return parent::createXMLDataSet($path);
+ }
+
public function get_test_case_helpers()
{
if (!$this->test_case_helpers)
@@ -106,4 +128,9 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
{
return new phpbb_database_test_connection_manager($config);
}
+
+ public static function to_upper($matches)
+ {
+ return $matches[1] . strtoupper($matches[2]) . $matches[3];
+ }
}