Skip to content

Commit 7a82d82

Browse files
committed
Avoid multiple connects in SKIPIF sections
Besides checking for the ability to connect to the MySQL server, some tests require additional checks (e.g. to be able to check for the server's version) as skip condition. There is no need, though, to connect twice; instead we introduce `mysqli_connect_or_skip()` in test_helpers.inc, which `die()`s with an appropriate error message, if the connection can't be established, or returns the connection link otherwise.
1 parent 7fa2dbf commit 7a82d82

13 files changed

+28
-75
lines changed

ext/mysqli/tests/045.phpt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@ mysqli_stmt_bind_result (SHOW)
44
mysqli
55
--SKIPIF--
66
<?php
7-
require_once 'skipifconnectfailure.inc';
8-
9-
$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
10-
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
119
$stmt = mysqli_prepare($link, "SHOW VARIABLES LIKE 'port'");
1210
mysqli_stmt_execute($stmt);
1311

ext/mysqli/tests/gh9590.phpt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@ mysqli
55
posix
66
--SKIPIF--
77
<?php
8-
require_once 'skipifconnectfailure.inc';
9-
10-
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
11-
die("skip cannot connect");
12-
8+
require_once __DIR__ . '/test_setup/test_helpers.inc';
9+
$link = mysqli_connect_or_skip();
1310
if (mysqli_get_server_version($link) < 50012)
1411
die("skip Test needs SQL function SLEEP() available as of MySQL 5.0.12");
1512

ext/mysqli/tests/mysqli_begin_transaction.phpt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,8 @@ mysqli_begin_transaction()
44
mysqli
55
--SKIPIF--
66
<?php
7-
require_once 'skipifconnectfailure.inc';
8-
9-
require_once 'connect.inc';
10-
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
11-
die(sprintf("skip Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
12-
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';;
8+
$link = mysqli_connect_or_skip();
139
if (!have_innodb($link))
1410
die(sprintf("skip Needs InnoDB support, [%d] %s", $link->errno, $link->error));
1511
?>

ext/mysqli/tests/mysqli_change_user_old.phpt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,8 @@ mysqli_change_user(), MySQL < 5.6
44
mysqli
55
--SKIPIF--
66
<?php
7-
require_once 'skipifconnectfailure.inc';
8-
9-
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
10-
die(sprintf("SKIP Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
11-
$host, $user, $db, $port, $socket));
12-
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
139
if (mysqli_get_server_version($link) >= 50600 && mysqli_get_server_version($link) < 10_00_00)
1410
die("SKIP For MySQL < 5.6.0");
1511
?>

ext/mysqli/tests/mysqli_fetch_assoc_bit.phpt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ mysqli_fetch_assoc() - BIT
44
mysqli
55
--SKIPIF--
66
<?php
7-
require_once 'skipifconnectfailure.inc';
8-
9-
require_once 'table.inc';
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';;
8+
$link = mysqli_connect_or_skip();
109
if (mysqli_get_server_version($link) < 50003)
1110
// b'001' syntax not supported before 5.0.3
1211
die("skip Syntax used for test not supported with MySQL Server before 5.0.3");

ext/mysqli/tests/mysqli_query_unicode.phpt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ mysqli_query() - unicode (cyrillic)
44
mysqli
55
--SKIPIF--
66
<?php
7-
require_once 'skipifconnectfailure.inc';
8-
require_once 'table.inc';
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
99
if (!$res = mysqli_query($link, "SHOW CHARACTER SET LIKE 'utf8'"))
1010
die("skip UTF8 chatset seems not available");
11-
mysqli_free_result($res);
12-
mysqli_close($link);
1311
?>
1412
--FILE--
1513
<?php

ext/mysqli/tests/mysqli_real_escape_string_big5.phpt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@ mysqli_real_escape_string() - big5
44
mysqli
55
--SKIPIF--
66
<?php
7-
8-
require_once 'skipifconnectfailure.inc';
9-
10-
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
11-
die(sprintf("skip Cannot connect to MySQL, [%d] %s\n",
12-
mysqli_connect_errno(), mysqli_connect_error()));
13-
}
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
149
if (!mysqli_set_charset($link, 'big5'))
1510
die(sprintf("skip Cannot set charset 'big5'"));
16-
mysqli_close($link);
1711
?>
1812
--FILE--
1913
<?php

ext/mysqli/tests/mysqli_real_escape_string_eucjpms.phpt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@ mysqli_real_escape_string() - eucjpms
44
mysqli
55
--SKIPIF--
66
<?php
7-
8-
require_once 'skipifconnectfailure.inc';
9-
10-
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
11-
die(sprintf("skip Cannot connect to MySQL, [%d] %s\n",
12-
mysqli_connect_errno(), mysqli_connect_error()));
13-
}
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
149
if (!mysqli_set_charset($link, 'eucjpms'))
1510
die(sprintf("skip Cannot set charset 'eucjpms'"));
16-
mysqli_close($link);
1711
?>
1812
--FILE--
1913
<?php

ext/mysqli/tests/mysqli_real_escape_string_euckr.phpt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@ mysqli_real_escape_string() - euckr
44
mysqli
55
--SKIPIF--
66
<?php
7-
8-
require_once 'skipifconnectfailure.inc';
9-
10-
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
11-
die(sprintf("skip Cannot connect to MySQL, [%d] %s\n",
12-
mysqli_connect_errno(), mysqli_connect_error()));
13-
}
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
149
if (!mysqli_set_charset($link, 'euckr'))
1510
die(sprintf("skip Cannot set charset 'euckr'"));
16-
mysqli_close($link);
1711
?>
1812
--FILE--
1913
<?php

ext/mysqli/tests/mysqli_real_escape_string_gb2312.phpt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@ mysqli_real_escape_string() - gb2312
44
mysqli
55
--SKIPIF--
66
<?php
7-
8-
require_once 'skipifconnectfailure.inc';
9-
10-
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
11-
die(sprintf("skip Cannot connect to MySQL, [%d] %s\n",
12-
mysqli_connect_errno(), mysqli_connect_error()));
13-
}
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
149
if (!mysqli_set_charset($link, 'gb2312'))
1510
die(sprintf("skip Cannot set charset 'gb2312'"));
16-
mysqli_close($link);
1711
?>
1812
--FILE--
1913
<?php

ext/mysqli/tests/mysqli_real_escape_string_gbk.phpt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@ mysqli_real_escape_string() - gbk
44
mysqli
55
--SKIPIF--
66
<?php
7-
require_once 'skipifconnectfailure.inc';
8-
9-
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
10-
die(sprintf("skip Cannot connect to MySQL, [%d] %s\n",
11-
mysqli_connect_errno(), mysqli_connect_error()));
12-
}
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
139
if (!mysqli_set_charset($link, 'gbk'))
1410
die(sprintf("skip Cannot set charset 'gbk'"));
15-
16-
mysqli_close($link);
1711
?>
1812
--FILE--
1913
<?php

ext/mysqli/tests/mysqli_real_escape_string_sjis.phpt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,10 @@ mysqli_real_escape_string() - sjis
44
mysqli
55
--SKIPIF--
66
<?php
7-
require_once 'skipifconnectfailure.inc';
8-
9-
if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
10-
die(sprintf("skip Cannot connect to MySQL, [%d] %s\n",
11-
mysqli_connect_errno(), mysqli_connect_error()));
12-
}
7+
require_once __DIR__ . '/test_setup/test_helpers.inc';
8+
$link = mysqli_connect_or_skip();
139
if (!mysqli_set_charset($link, 'sjis'))
1410
die(sprintf("skip Cannot set charset 'sjis'"));
15-
mysqli_close($link);
1611
?>
1712
--FILE--
1813
<?php

ext/mysqli/tests/test_setup/test_helpers.inc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,15 @@ function default_mysqli_connect(): \mysqli{
108108
);
109109
}
110110
function mysqli_check_skip_test(): void {
111+
mysqli_connect_or_skip();
112+
}
113+
function mysqli_connect_or_skip() {
111114
try {
112115
default_mysqli_connect();
113116
} catch (\mysqli_sql_exception) {
114117
die(sprintf("skip Can't connect to MySQL Server - [%d] %s", mysqli_connect_errno(), mysqli_connect_error()));
115118
}
119+
return $link;
116120
}
117121
function have_innodb(mysqli $link): bool {
118122
$res = $link->query("SELECT SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE = 'InnoDB'");

0 commit comments

Comments
 (0)