summaryrefslogtreecommitdiff
path: root/ext/pdo_mysql
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-12-11 12:04:44 +0100
committerNikita Popov <nikita.ppv@gmail.com>2020-12-11 12:20:02 +0100
commit4e51059d5246a42c43fc963bf9add11e985df184 (patch)
treec264ad59e27a087c1b2af5ba279a3af21f5f7172 /ext/pdo_mysql
parent43741a3f26c5094fa818f60744f11139940ccf08 (diff)
downloadphp-git-4e51059d5246a42c43fc963bf9add11e985df184.tar.gz
PDO MySQL: Fix libmysql option test
The fact that getAttribute() fails for various libmysqlclient-only options is a known issue, and the test was taking that into account. However, the change of the default error mode broke the handling. We need to handle the exceptions now.
Diffstat (limited to 'ext/pdo_mysql')
-rw-r--r--ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt69
1 files changed, 32 insertions, 37 deletions
diff --git a/ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt b/ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt
index 1838336050..c186689932 100644
--- a/ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql___construct_options_libmysql.phpt
@@ -27,57 +27,52 @@ if (MySQLPDOTest::isPDOMySQLnd())
$tmp, gettype($tmp),
$option_desc);
} catch (PDOException $e) {
- printf("[%03d] %s\n", $offset, $e->getMessage());
+ echo "Failed to getAttribute() for $option_desc\n";
}
-
}
- try {
-
- $dsn = MySQLPDOTest::getDSN();
- $user = PDO_MYSQL_TEST_USER;
- $pass = PDO_MYSQL_TEST_PASS;
+ $dsn = MySQLPDOTest::getDSN();
+ $user = PDO_MYSQL_TEST_USER;
+ $pass = PDO_MYSQL_TEST_PASS;
- $valid_options = array();
- $valid_options[PDO::MYSQL_ATTR_MAX_BUFFER_SIZE] = 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE';
- $valid_options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'PDO::MYSQL_ATTR_INIT_COMMAND';
- $valid_options[PDO::MYSQL_ATTR_READ_DEFAULT_FILE] = 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE';
- $valid_options[PDO::MYSQL_ATTR_READ_DEFAULT_GROUP] = 'PDO::MYSQL_ATTR_READ_DEFAULT_GROUP';
+ $valid_options = array();
+ $valid_options[PDO::MYSQL_ATTR_MAX_BUFFER_SIZE] = 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE';
+ $valid_options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'PDO::MYSQL_ATTR_INIT_COMMAND';
+ $valid_options[PDO::MYSQL_ATTR_READ_DEFAULT_FILE] = 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE';
+ $valid_options[PDO::MYSQL_ATTR_READ_DEFAULT_GROUP] = 'PDO::MYSQL_ATTR_READ_DEFAULT_GROUP';
- $defaults[PDO::MYSQL_ATTR_MAX_BUFFER_SIZE] = 1048576;
- /* TODO getAttribute() does not handle it */
- $defaults[PDO::MYSQL_ATTR_INIT_COMMAND] = '';
- $defaults[PDO::MYSQL_ATTR_READ_DEFAULT_FILE] = false;
- $defaults[PDO::MYSQL_ATTR_READ_DEFAULT_GROUP] = false;
+ $defaults[PDO::MYSQL_ATTR_MAX_BUFFER_SIZE] = 1048576;
+ /* TODO getAttribute() does not handle it */
+ $defaults[PDO::MYSQL_ATTR_INIT_COMMAND] = '';
+ $defaults[PDO::MYSQL_ATTR_READ_DEFAULT_FILE] = false;
+ $defaults[PDO::MYSQL_ATTR_READ_DEFAULT_GROUP] = false;
- $db = new PDO($dsn, $user, $pass);
- foreach ($valid_options as $option => $name) {
- /* TODO getAttribute() is pretty poor in supporting the options, suppress errors */
- $tmp = @$db->getAttribute($option);
+ $db = new PDO($dsn, $user, $pass);
+ foreach ($valid_options as $option => $name) {
+ try {
+ $tmp = $db->getAttribute($option);
if ($tmp !== $defaults[$option])
printf("[001] Expecting default value for '%s' of '%s'/%s, getAttribute() reports setting '%s'/%s\n",
$name, $defaults[$option], gettype($defaults[$option]),
$tmp, gettype($tmp));
+ } catch (PDOException $e) {
+ echo "Failed to getAttribute() for $name\n";
}
+ }
- set_option_and_check(26, PDO::MYSQL_ATTR_READ_DEFAULT_FILE, true, 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE');
- set_option_and_check(27, PDO::MYSQL_ATTR_READ_DEFAULT_FILE, false, 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE');
-
- set_option_and_check(30, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, -1, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE', true);
- set_option_and_check(31, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, PHP_INT_MAX, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE');
- set_option_and_check(32, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, 1, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE');
-
+ set_option_and_check(26, PDO::MYSQL_ATTR_READ_DEFAULT_FILE, true, 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE');
+ set_option_and_check(27, PDO::MYSQL_ATTR_READ_DEFAULT_FILE, false, 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE');
- } catch (PDOException $e) {
- printf("[001] %s, [%s] %s\n",
- $e->getMessage(),
- (is_object($db)) ? $db->errorCode() : 'n/a',
- (is_object($db)) ? implode(' ', $db->errorInfo()) : 'n/a');
- }
+ set_option_and_check(30, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, -1, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE', true);
+ set_option_and_check(31, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, PHP_INT_MAX, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE');
+ set_option_and_check(32, PDO::MYSQL_ATTR_MAX_BUFFER_SIZE, 1, 'PDO::MYSQL_ATTR_MAX_BUFFER_SIZE');
- print "done!";
+ print "done!\n";
?>
--EXPECT--
-[001] Expecting default value for 'PDO::MYSQL_ATTR_INIT_COMMAND' of ''/string, getAttribute() reports setting ''/boolean
-[026] Expecting '1'/boolean got ''/boolean' for options 'PDO::MYSQL_ATTR_READ_DEFAULT_FILE'
+Failed to getAttribute() for PDO::MYSQL_ATTR_INIT_COMMAND
+Failed to getAttribute() for PDO::MYSQL_ATTR_READ_DEFAULT_FILE
+Failed to getAttribute() for PDO::MYSQL_ATTR_READ_DEFAULT_GROUP
+Failed to getAttribute() for PDO::MYSQL_ATTR_READ_DEFAULT_FILE
+Failed to getAttribute() for PDO::MYSQL_ATTR_READ_DEFAULT_FILE
done!