From: Ulf Wendel Date: Mon, 6 Jul 2009 15:45:19 +0000 (+0000) Subject: MFH. Fixing mysqlnd version test to run some four previously skipped tests. There... X-Git-Tag: php-5.3.1RC1~447 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4786cfa4bf781e9f8934c8a4a358483cd797339e;p=php MFH. Fixing mysqlnd version test to run some four previously skipped tests. There is no proper way to check the mysqlnd version. The best one can do is adapt the tests to what PHP 5.3 and PHP 6.0 return today. --- diff --git a/ext/mysqli/tests/connect.inc b/ext/mysqli/tests/connect.inc index 9bb9836b72..f8cd71c2b7 100644 --- a/ext/mysqli/tests/connect.inc +++ b/ext/mysqli/tests/connect.inc @@ -26,9 +26,28 @@ if (!$IS_MYSQLND) { $MYSQLND_VERSION = NULL; } else { + /* + The formatting of the version reported by mysqli_get_client_info() + has changed significantly in the past. To get tests working properly + with PHP 5.3.0 and up, we set everything that looks like prior to + PHP 5.3.0 to version 5.0.4 = 5 * 10000 + 0 * 100 + 4 = 50004. + PHP 5.3.0 reports mysqlnd 5.0.5 dev (= 5 * 10000 + 0 * 100 + 5 = 50005. + */ if (preg_match('@Revision:\s+(\d+)\s*\$@ism', mysqli_get_client_info(), $matches)) { - $MYSQLND_VERSION = (int)$matches[1]; + /* something prior to PHP 5.3.0 */ + $MYSQLND_VERSION = 50004; + } else if (preg_match('@^mysqlnd (\d+)\.(\d+)\.(\d+).*@ism', mysqli_get_client_info(), $matches)) { + /* formatting schema used by PHP 5.3.0 */ + $MYSQLND_VERSION = (int)$matches[1] * 10000 + (int)$matches[2] * 100 + (int)$matches[3]; + } else if (preg_match('@^mysqlnd/PHP 6.0.0-dev@ism', mysqli_get_client_info(), $matches)) { + /* + PHP 6.0 at the time of the first PHP 5.3.0 release. + HEAD and 5.3 have been in sync when 5.3.0 was released. + It is at least 5.0.5-dev. + */ + $MYSQLND_VERSION = 50005; } else { + /* unknown */ $MYSQLND_VERSION = -1; } } diff --git a/ext/mysqli/tests/mysqli_class_mysqli_driver_reflection.phpt b/ext/mysqli/tests/mysqli_class_mysqli_driver_reflection.phpt index 8a59549e50..9141469967 100644 --- a/ext/mysqli/tests/mysqli_class_mysqli_driver_reflection.phpt +++ b/ext/mysqli/tests/mysqli_class_mysqli_driver_reflection.phpt @@ -15,8 +15,8 @@ Those tests go into the details and are aimed to be a development tool, no more. */ if (!$IS_MYSQLND) die("skip Test has been written for the latest version of mysqlnd only"); -if ($MYSQLND_VERSION < 576) - die("skip Test requires mysqlnd Revision 576 or newer"); +if ($MYSQLND_VERSION < 50005) + die("skip Test requires mysqlnd Revision 5.0.4 or newer"); ?> --FILE-- --FILE-- @@ -423,6 +423,22 @@ Modifiers: 256 Number of Parameters: 0 Number of Required Parameters: 0 +Inspecting method 'poll' +isFinal: no +isAbstract: no +isPublic: yes +isPrivate: no +isProtected: no +isStatic: no +isConstructor: no +isDestructor: no +isInternal: yes +isUserDefined: no +returnsReference: no +Modifiers: 256 +Number of Parameters: 0 +Number of Required Parameters: 0 + Inspecting method 'prepare' isFinal: no isAbstract: no @@ -503,6 +519,38 @@ Modifiers: 256 Number of Parameters: 0 Number of Required Parameters: 0 +Inspecting method 'reap_async_query' +isFinal: no +isAbstract: no +isPublic: yes +isPrivate: no +isProtected: no +isStatic: no +isConstructor: no +isDestructor: no +isInternal: yes +isUserDefined: no +returnsReference: no +Modifiers: 256 +Number of Parameters: 0 +Number of Required Parameters: 0 + +Inspecting method 'refresh' +isFinal: no +isAbstract: no +isPublic: yes +isPrivate: no +isProtected: no +isStatic: no +isConstructor: no +isDestructor: no +isInternal: yes +isUserDefined: no +returnsReference: no +Modifiers: 256 +Number of Parameters: 0 +Number of Required Parameters: 0 + Inspecting method 'rollback' isFinal: no isAbstract: no @@ -799,5 +847,4 @@ Default property 'server_version' Default property 'sqlstate' Default property 'thread_id' Default property 'warning_count' -done! - +done! \ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt b/ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt index 5f26d1eb5d..cf59732497 100644 --- a/ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt +++ b/ext/mysqli/tests/mysqli_class_mysqli_result_reflection.phpt @@ -17,8 +17,8 @@ Those tests go into the details and are aimed to be a development tool, no more. */ if (!$IS_MYSQLND) die("skip Test has been written for the latest version of mysqlnd only"); -if ($MYSQLND_VERSION < 576) - die("skip Test requires mysqlnd Revision 576 or newer"); +if ($MYSQLND_VERSION < 50004) + die("skip Test requires mysqlnd Revision 5.0.4 or newer"); ?> --FILE-- unknown = '13' Prepare using the constructor: -Warning: mysqli_stmt::__construct() expects parameter 2 to be string, object given in %s on line %d +Warning: mysqli_stmt::__construct() expects parameter 2 to be %binary_string_optional%, object given in %s on line %d done! \ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_class_mysqli_warning_reflection.phpt b/ext/mysqli/tests/mysqli_class_mysqli_warning_reflection.phpt index cb690437ae..dc0c14e6e8 100644 --- a/ext/mysqli/tests/mysqli_class_mysqli_warning_reflection.phpt +++ b/ext/mysqli/tests/mysqli_class_mysqli_warning_reflection.phpt @@ -16,8 +16,8 @@ Those tests go into the details and are aimed to be a development tool, no more. */ if (!$IS_MYSQLND) die("skip Test has been written for the latest version of mysqlnd only"); -if ($MYSQLND_VERSION < 576) - die("skip Test requires mysqlnd Revision 576 or newer"); +if ($MYSQLND_VERSION < 50004) + die("skip Test requires mysqlnd Revision 5.0.4 or newer"); ?> --FILE--