mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 23:45:20 +02:00
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/9592] Slight adjustments to simplify db test cases [ticket/9592] Remove test cases for empty IN() [ticket/9592] Test suite does not run on SQlite
This commit is contained in:
commit
4d5d50001d
@ -244,8 +244,9 @@ class phpbb_dbal_test extends phpbb_database_test_case
|
|||||||
array('username_clean' => 'bertie'))),
|
array('username_clean' => 'bertie'))),
|
||||||
|
|
||||||
// These here would throw errors and therefor $result should be false.
|
// These here would throw errors and therefor $result should be false.
|
||||||
array('user_id', array(), false, false, false, true),
|
// Removing for now because SQLite accepts empty IN() syntax
|
||||||
array('user_id', array(), true, false, false, true),
|
/*array('user_id', array(), false, false, false, true),
|
||||||
|
array('user_id', array(), true, false, false, true),*/
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_dbms_data($dbms)
|
public function get_dbms_data($dbms)
|
||||||
{
|
{
|
||||||
$available_dbms = array(
|
$available_dbms = array(
|
||||||
'firebird' => array(
|
'firebird' => array(
|
||||||
@ -65,7 +65,7 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
|
|||||||
'sqlite' => array(
|
'sqlite' => array(
|
||||||
'SCHEMA' => 'sqlite',
|
'SCHEMA' => 'sqlite',
|
||||||
'DELIM' => ';',
|
'DELIM' => ';',
|
||||||
'PDO' => 'sqlite',
|
'PDO' => 'sqlite2',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -79,10 +79,13 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function split_sql_file($sql, $delimiter)
|
// NOTE: This function is not the same as split_sql_file from functions_install
|
||||||
|
public function split_sql_file($sql, $dbms)
|
||||||
{
|
{
|
||||||
|
$dbms_data = $this->get_dbms_data($dbms);
|
||||||
|
|
||||||
$sql = str_replace("\r" , '', $sql);
|
$sql = str_replace("\r" , '', $sql);
|
||||||
$data = preg_split('/' . preg_quote($delimiter, '/') . '$/m', $sql);
|
$data = preg_split('/' . preg_quote($dbms_data['DELIM'], '/') . '$/m', $sql);
|
||||||
|
|
||||||
$data = array_map('trim', $data);
|
$data = array_map('trim', $data);
|
||||||
|
|
||||||
@ -94,6 +97,15 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
|
|||||||
unset($data[key($data)]);
|
unset($data[key($data)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($dbms == 'sqlite')
|
||||||
|
{
|
||||||
|
// trim # off query to satisfy sqlite
|
||||||
|
foreach ($data as $i => $query)
|
||||||
|
{
|
||||||
|
$data[$i] = preg_replace('/^#.*$/m', "\n", $query);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,21 +120,42 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
|
|||||||
|
|
||||||
if ($already_connected)
|
if ($already_connected)
|
||||||
{
|
{
|
||||||
$pdo = new PDO($dbms_data['PDO'] . ':host=' . $database_config['dbhost'] . ';dbname=' . $database_config['dbname'], $database_config['dbuser'], $database_config['dbpasswd']);
|
if ($database_config['dbms'] == 'sqlite')
|
||||||
|
{
|
||||||
|
$pdo = new PDO($dbms_data['PDO'] . ':' . $database_config['dbhost']);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$pdo = new PDO($dbms_data['PDO'] . ':host=' . $database_config['dbhost'] . ';dbname=' . $database_config['dbname'], $database_config['dbuser'], $database_config['dbpasswd']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$pdo = new PDO($dbms_data['PDO'] . ':host=' . $database_config['dbhost'] . ';', $database_config['dbuser'], $database_config['dbpasswd']);
|
if ($database_config['dbms'] == 'sqlite')
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
$pdo->exec('DROP DATABASE ' . $database_config['dbname']);
|
// delete existing database
|
||||||
|
if (file_exists($database_config['dbhost']))
|
||||||
|
{
|
||||||
|
unlink($database_config['dbhost']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pdo = new PDO($dbms_data['PDO'] . ':' . $database_config['dbhost']);
|
||||||
}
|
}
|
||||||
catch (PDOException $e){} // ignore non existent db
|
else
|
||||||
|
{
|
||||||
|
$pdo = new PDO($dbms_data['PDO'] . ':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->exec('CREATE DATABASE ' . $database_config['dbname']);
|
||||||
|
|
||||||
$pdo = new PDO($dbms_data['PDO'] . ':host=' . $database_config['dbhost'] . ';dbname=' . $database_config['dbname'], $database_config['dbuser'], $database_config['dbpasswd']);
|
$pdo = new PDO($dbms_data['PDO'] . ':host=' . $database_config['dbhost'] . ';dbname=' . $database_config['dbname'], $database_config['dbuser'], $database_config['dbpasswd']);
|
||||||
|
}
|
||||||
|
|
||||||
|
// good for debug
|
||||||
|
// $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
|
|
||||||
if ($database_config['dbms'] == 'mysql')
|
if ($database_config['dbms'] == 'mysql')
|
||||||
{
|
{
|
||||||
@ -141,7 +174,7 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
|
|||||||
unset($row, $sth);
|
unset($row, $sth);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql_query = $this->split_sql_file(file_get_contents("../phpBB/install/schemas/{$dbms_data['SCHEMA']}_schema.sql"), $dbms_data['DELIM']);
|
$sql_query = $this->split_sql_file(file_get_contents("../phpBB/install/schemas/{$dbms_data['SCHEMA']}_schema.sql"), $database_config['dbms']);
|
||||||
|
|
||||||
foreach ($sql_query as $sql)
|
foreach ($sql_query as $sql)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user