diff options
-rw-r--r-- | tests/RUNNING_TESTS.txt | 30 | ||||
-rw-r--r-- | tests/test_framework/phpbb_database_test_case.php | 48 | ||||
-rw-r--r-- | tests/test_framework/phpbb_test_case_helpers.php | 68 |
3 files changed, 70 insertions, 76 deletions
diff --git a/tests/RUNNING_TESTS.txt b/tests/RUNNING_TESTS.txt index f1b40f71ad..a5d3111242 100644 --- a/tests/RUNNING_TESTS.txt +++ b/tests/RUNNING_TESTS.txt @@ -1,33 +1,51 @@ Running Tests -------------- +============= Prerequisites -------------- +============= PHPUnit -======= +------- phpBB unit tests use PHPUnit framework. Version 3.3 or better is required to run the tests. PHPUnit prefers to be installed via PEAR; refer to http://www.phpunit.de/ for more information. PHP extensions -============== +-------------- Unit tests use several PHP extensions that board code does not use. Currently the following PHP extensions must be installed and enabled to run unit tests: - ctype +Database Tests +-------------- +By default all tests requiring a database connection will use sqlite. If you +do not have sqlite installed the tests will be skipped. If you wish to run the +tests on a different database you have to create a test_config.php file within +your tests directory following the same format as phpBB's config.php. An example +for mysqli can be found below. More information on configuration options can be +found on the wiki (see below). + + <?php + $dbms = 'mysqli'; + $dbhost = 'localhost'; + $dbport = ''; + $dbname = 'database'; + $dbuser = 'user'; + $dbpasswd = 'password'; + + Running -------- +======= Once the prerequisites are installed, run the tests from tests directory: $ phpunit all_tests.php More Information ----------------- +================ Further information is available on phpbb wiki: http://wiki.phpbb.com/display/DEV/Unit+Tests diff --git a/tests/test_framework/phpbb_database_test_case.php b/tests/test_framework/phpbb_database_test_case.php index c183c61f91..33dbce709b 100644 --- a/tests/test_framework/phpbb_database_test_case.php +++ b/tests/test_framework/phpbb_database_test_case.php @@ -81,6 +81,41 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test } } + public function get_database_config() + { + static $show_error = true; + + if (file_exists('test_config.php')) + { + include('test_config.php'); + + return array( + 'dbms' => $dbms, + 'dbhost' => $dbhost, + 'dbport' => $dbport, + 'dbname' => $dbname, + 'dbuser' => $dbuser, + 'dbpasswd' => $dbpasswd, + ); + } + else if (extension_loaded('sqlite') && version_compare(PHPUnit_Runner_Version::id(), '3.4.15', '>=')) + { + // Silently use sqlite + return array( + 'dbms' => 'sqlite', + 'dbhost' => 'phpbb_unit_tests.sqlite2', // filename + 'dbport' => '', + 'dbname' => '', + 'dbuser' => '', + 'dbpasswd' => '', + ); + } + else + { + $this->markTestSkipped('Missing test_config.php: See first error.'); + } + } + // NOTE: This function is not the same as split_sql_file from functions_install public function split_sql_file($sql, $dbms) { @@ -115,7 +150,7 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test { static $already_connected; - $database_config = $this->get_test_case_helpers()->get_database_config(); + $database_config = $this->get_database_config(); $dbms_data = $this->get_dbms_data($database_config['dbms']); @@ -190,7 +225,16 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test public function new_dbal() { - return $this->get_test_case_helpers()->new_dbal(); + global $phpbb_root_path, $phpEx; + + $config = $this->get_database_config(); + + require_once '../phpBB/includes/db/' . $config['dbms'] . '.php'; + $dbal = 'dbal_' . $config['dbms']; + $db = new $dbal(); + $db->sql_connect($config['dbhost'], $config['dbuser'], $config['dbpasswd'], $config['dbname'], $config['dbport']); + + return $db; } public function setExpectedTriggerError($errno, $message = '') diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php index 7c026e496e..0acdce32e0 100644 --- a/tests/test_framework/phpbb_test_case_helpers.php +++ b/tests/test_framework/phpbb_test_case_helpers.php @@ -18,74 +18,6 @@ class phpbb_test_case_helpers $this->test_case = $test_case; } - public function get_database_config() - { - static $show_error = true; - - if (file_exists('test_config.php')) - { - include('test_config.php'); - - return array( - 'dbms' => $dbms, - 'dbhost' => $dbhost, - 'dbport' => $dbport, - 'dbname' => $dbname, - 'dbuser' => $dbuser, - 'dbpasswd' => $dbpasswd, - ); - } - else if (extension_loaded('sqlite') && version_compare(PHPUnit_Runner_Version::id(), '3.4.15', '>=')) - { - // Silently use sqlite - return array( - 'dbms' => 'sqlite', - 'dbhost' => 'phpbb_unit_tests.sqlite2', // filename - 'dbport' => '', - 'dbname' => '', - 'dbuser' => '', - 'dbpasswd' => '', - ); - } - else - { - if ($show_error) - { - $show_error = false; - } - else - { - $this->test_case->markTestSkipped('Missing test_config.php: See first error.'); - return; - } - - trigger_error("You have to create a test_config.php like this: -\"<?php -\$dbms = 'mysqli'; -\$dbhost = 'localhost'; -\$dbport = ''; -\$dbname = 'database'; -\$dbuser = 'user'; -\$dbpasswd = 'password'; -\" - -NOTE: The database is dropped and recreated with the phpbb-db-schema! Do NOT specify a database with important data.", E_USER_ERROR); - } - } - - public function new_dbal() - { - global $phpbb_root_path, $phpEx; - $config = $this->get_database_config(); - - require_once '../phpBB/includes/db/' . $config['dbms'] . '.php'; - $dbal = 'dbal_' . $config['dbms']; - $db = new $dbal(); - $db->sql_connect($config['dbhost'], $config['dbuser'], $config['dbpasswd'], $config['dbname'], $config['dbport']); - - return $db; - } - public function setExpectedTriggerError($errno, $message = '') { $exceptionName = ''; |