php-src/ext/mysqli/tests/connect.inc
Christoph M. Becker 62d393b1ed
Remove support for libmysql-client from mysqli test suite
Since mysqli can no longer be built against libmysql-client, there is
no longer the need to distinguish.

While we're at it, we also drop the superfluous is_object() checks.

Closes GH-9652.
2022-10-06 12:09:14 +02:00

142 lines
5.2 KiB
PHP

<?php
/*
Default values are "localhost", "root",
database "test" and empty password.
Change the MYSQL_TEST environment values
if you want to use another configuration
*/
$driver = new mysqli_driver;
$driver->report_mode = MYSQLI_REPORT_OFF;
$host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1";
$port = getenv("MYSQL_TEST_PORT") ?: 3306;
$user = getenv("MYSQL_TEST_USER") ?: "root";
$passwd = getenv("MYSQL_TEST_PASSWD") ?: "";
$db = getenv("MYSQL_TEST_DB") ?: "test";
$engine = getenv("MYSQL_TEST_ENGINE") ?: "InnoDB";
$socket = getenv("MYSQL_TEST_SOCKET") ?: null;
$skip_on_connect_failure = getenv("MYSQL_TEST_SKIP_CONNECT_FAILURE") ?: true;
$connect_flags = (int)getenv("MYSQL_TEST_CONNECT_FLAGS") ?: 0;
if ($socket) {
ini_set('mysqli.default_socket', $socket);
}
/* Development setting: test experimental features and/or feature requests that never worked before? */
$TEST_EXPERIMENTAL = 1 == getenv("MYSQL_TEST_EXPERIMENTAL");
if (!function_exists('sys_get_temp_dir')) {
function sys_get_temp_dir() {
if (!empty($_ENV['TMP']))
return realpath( $_ENV['TMP'] );
if (!empty($_ENV['TMPDIR']))
return realpath( $_ENV['TMPDIR'] );
if (!empty($_ENV['TEMP']))
return realpath( $_ENV['TEMP'] );
$temp_file = tempnam(md5(uniqid(rand(), TRUE)), '');
if ($temp_file) {
$temp_dir = realpath(dirname($temp_file));
unlink($temp_file);
return $temp_dir;
}
return FALSE;
}
}
if (!function_exists('my_mysqli_connect')) {
/**
* Whenever possible, please use this wrapper to make testing of MYSQLI_CLIENT_COMPRESS (and potentially SSL) possible
*
* @param bool $enable_env_flags Enable setting of connection flags through env(MYSQL_TEST_CONNECT_FLAGS)?
*/
function my_mysqli_connect($host, $user, $passwd, $db, $port, $socket, $enable_env_flags = true) {
global $connect_flags;
$flags = $enable_env_flags? $connect_flags:0;
if ($flags !== 0) {
$link = mysqli_init();
if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, $flags))
$link = false;
} else {
$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket);
}
return $link;
}
/**
* Whenever possible, please use this wrapper to make testing of MYSQLI_CLIENT_COMPRESS (and potentially SSL) possible
*
* @param bool $enable_env_flags Enable setting of connection flags through env(MYSQL_TEST_CONNECT_FLAGS)
*/
function my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, $flags = 0, $enable_env_flags = true) {
global $connect_flags;
if ($enable_env_flags)
$flags = $flags | $connect_flags;
return mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, $flags);
}
class my_mysqli extends mysqli {
public function __construct($host, $user, $passwd, $db, $port, $socket, $enable_env_flags = true) {
global $connect_flags;
$flags = ($enable_env_flags) ? $connect_flags : 0;
if ($flags !== 0) {
parent::__construct();
$this->real_connect($host, $user, $passwd, $db, $port, $socket, $flags);
} else {
parent::__construct($host, $user, $passwd, $db, $port, $socket);
}
}
}
function have_innodb($link) {
if (($res = $link->query("SHOW VARIABLES LIKE 'have_innodb'"))
&& ($row = $res->fetch_row())
&& !empty($row)
) {
return !($row[1] == 'DISABLED' || $row[1] == 'NO');
}
// MySQL 5.6.1+
if ($res = $link->query('SHOW ENGINES')) {
while ($row = $res->fetch_assoc()) {
if (!isset($row['Engine']) || !isset($row['Support'])) {
return false;
}
if (($row['Engine'] == 'InnoDB')
&& (($row['Support'] == 'YES') || ($row['Support'] == 'DEFAULT'))
) {
return true;
}
}
}
return false;
}
} else {
printf("skip Eeeek/BUG/FIXME - connect.inc included twice! skipif bug?\n");
}
function handle_catchable_fatal($errno, $error, $file, $line) {
static $errcodes = array();
if (empty($errcodes)) {
$constants = get_defined_constants();
foreach ($constants as $name => $value) {
if (substr($name, 0, 2) == "E_")
$errcodes[$value] = $name;
}
}
printf("[%s] %s in %s on line %s\n",
(isset($errcodes[$errno])) ? $errcodes[$errno] : $errno,
$error, $file, $line);
return true;
}
?>