diff options
author | Patrick Webster <noxwizard@phpbb.com> | 2012-02-28 06:18:24 -0600 |
---|---|---|
committer | Patrick Webster <noxwizard@phpbb.com> | 2012-05-08 04:31:29 -0500 |
commit | d578eff712b6376e3568965afec7054bff317127 (patch) | |
tree | 296e38efe0574e33215327e60a3ec7993523c6e5 /tests/test_framework/phpbb_database_test_case.php | |
parent | c0718fae96a991182f3941dee02599077b5b447d (diff) | |
download | forums-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.php | 27 |
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]; + } } |