uw Mon Jul 23 12:13:15 2007 UTC
Added files:
/php-src/ext/mysqli/tests mysqli_set_local_infile_default.phpt
mysqli_set_local_infile_handler_bad_character.phpt
mysqli_set_local_infile_handler_buffer_overflow.phpt
mysqli_set_local_infile_handler_closefile.phpt
mysqli_set_local_infile_handler_close_link.phpt
mysqli_set_local_infile_handler_kill_link.phpt
mysqli_set_local_infile_handler_negative_len.phpt
mysqli_set_local_infile_handler_nested_call.phpt
mysqli_set_local_infile_handler_new_query.phpt
mysqli_set_local_infile_handler_nofileop.phpt
mysqli_set_local_infile_handler.phpt
mysqli_set_local_infile_handler_replace_buffer.phpt
mysqli_set_local_infile_handler_short_len.phpt
mysqli_set_local_infile_handler_unregister.phpt
Log:
Tests that deal with mysqli_set_local_infile_handler() and
mysqli_set_local_infile_default()
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_default.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_default.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_default.phpt
--TEST--
mysqli_set_local_infile_default()
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
$link = $tmp = null;
if (!is_null($tmp = @mysqli_set_local_infile_default()))
printf("[001] Expecting NULL got %s/%s\n", gettype($tmp), $tmp);
if (!is_null($tmp = @mysqli_set_local_infile_default($link)))
printf("[002] Expecting NULL got %s/%s\n", gettype($tmp), $tmp);
include("table.inc");
if (!is_null($tmp = @mysqli_set_local_infile_default($link, 'foo')))
printf("[003] Expecting NULL got %s/%s\n", gettype($tmp), $tmp);
function callback_simple($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation);
$invocation++;
if (!is_resource($fp))
printf("[012] First argument passed to callback is not
a resource but %s/%s\n",
$fp, gettype($fp));
if (!$buffer = fread($fp, $buflen)) {
if ($invocation == 1) {
printf("[013] Cannot read from stream\n");
$error = 'Cannot read from stream';
} else {
return strlen($buffer);
}
}
$lines = explode("\n", $buffer);
if (count($lines) != 4 && strlen($buffer) > 0) {
printf("[014] Test is too simple to handle a buffer of
size %d that cannot hold all lines\n", $buflen);
$error = 'Parser too simple';
}
$buffer = '';
foreach ($lines as $k => $line) {
if ('' === trim($line))
continue;
$columns = explode(';', $line);
if (empty($columns)) {
printf("[015] Cannot parse columns\n");
$error = 'Cannot parse columns';
}
// increase id column value
$columns[0] += 1;
$buffer .= implode(';', $columns);
$buffer .= "\n";
}
return strlen($buffer);
}
$file = create_standard_csv(4);
$expected = array(
array('id' => 98, 'label' => 'x'),
array('id' => 99, 'label' => 'y'),
array('id' => 100, 'label' => 'z'),
);
try_handler(10, $link, $file, 'callback_simple', $expected);
$expected = array(
array('id' => 97, 'label' => 'x'),
array('id' => 98, 'label' => 'y'),
array('id' => 99, 'label' => 'z'),
);
try_handler(20, $link, $file, 'default', $expected);
$expected = array(
array('id' => 98, 'label' => 'x'),
array('id' => 99, 'label' => 'y'),
array('id' => 100, 'label' => 'z'),
);
try_handler(30, $link, $file, 'callback_simple', $expected);
mysqli_close($link);
if (!is_null($tmp = @mysqli_set_local_infile_default($link)))
printf("[300] Expecting NULL/NULL got %s/%s\n", $tmp,
gettype($tmp));
print "done!";
?>
--EXPECTF--
Callback set to 'callback_simple'
Callback: 0
Callback: 1
Callback set to 'default'
Callback set to 'callback_simple'
Callback: 2
Callback: 3
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt?view=markup&rev=1.1
Index:
php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt
--TEST--
mysqli_set_local_infile_handler() - random ASCII character including \0
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('connect.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_bad_character($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
$num_chars = (ini_get('unicode.semantics')) ? (floor($buflen /
2) - 10) : ($buflen - 5);
$part1 = floor($num_chars / 2);
$part2 = $num_chars - $part1;
$buffer = '';
for ($i = 0; $i < $part1; $i++)
$buffer .= chr(mt_rand(0, 255));
$buffer .= ';"';
for ($i = 0; $i < $part2; $i++)
$buffer .= chr(mt_rand(0, 255));
$buffer .= '";';
if ($invocation > 10)
return 0;
return strlen($buffer);
}
$file = create_standard_csv(5);
/* we feed the handler with random data, therefore we cannot specify
and expected rows */
try_handler(20, $link, $file, 'callback_bad_character');
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_bad_character'
Callback: 0
Callback: 1
Callback: 2
Callback: 3
Callback: 4
Callback: 5
Callback: 6
Callback: 7
Callback: 8
Callback: 9
Callback: 10
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt?view=markup&rev=1.1
Index:
php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt
+++
php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt
--TEST--
mysqli_set_local_infile_handler() - buffer overflow
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
include_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_buffer_overflow($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation);
$buffer = fread($fp, $buflen);
$buffer = str_repeat(';', $buflen * 2);
return strlen($buffer);
}
$file = create_standard_csv(5);
$expected = array();
try_handler(20, $link, $file, 'callback_buffer_overflow', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_buffer_overflow'
Callback: 0
Warning: mysqli_query(): Too much data returned in %s on line %d
[022] LOAD DATA failed, [%d] Too much data returned
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt
--TEST--
mysqli_set_local_infile_handler() - do not use the file pointer
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
include "connect.inc";
include("table.inc");
require_once('local_infile_tools.inc');
function callback_closefile($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
flush();
if (is_resource($fp))
fclose($fp);
$buffer = "1;'a';\n";
if ($invocation > 10)
return 0;
return strlen($buffer);
}
$file = create_standard_csv(1);
$expected = array(array('id' => 1, 'label' => 'a'));
try_handler(20, $link, $file, 'callback_closefile', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_closefile'
Callback: 0
Callback: 1
Callback: 2
Callback: 3
Callback: 4
Callback: 5
Callback: 6
Callback: 7
Callback: 8
Callback: 9
Callback: 10
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt
--TEST--
mysqli_set_local_infile_handler() - close database link
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
include "connect.inc";
include("table.inc");
require_once('local_infile_tools.inc');
function callback_close_link($fp, &$buffer, $buflen, &$error) {
global $link;
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
flush();
if (is_object($link))
mysqli_close($link);
$buffer = "1;'a';\n";
if ($invocation > 10)
return 0;
return strlen($buffer);
}
$file = create_standard_csv(1);
$expected = array(array('id' => 1, 'label' => 'a'));
try_handler(20, $link, $file, 'callback_close_link', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_close_link'
Callback: 0
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt
--TEST--
mysqli_set_local_infile_handler() - kill database link
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
include "connect.inc";
include("table.inc");
require_once('local_infile_tools.inc');
function callback_kill_link($fp, &$buffer, $buflen, &$error) {
global $link;
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
flush();
if (is_object($link))
mysqli_kill($link, mysqli_thread_id($link));
$buffer = "1;'a';\n";
if ($invocation > 10)
return 0;
mysqli_set_local_infile_default($link);
return strlen($buffer);
}
$file = create_standard_csv(1);
$expected = array(array('id' => 1, 'label' => 'a'));
try_handler(20, $link, $file, 'callback_kill_link', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_kill_link'
Callback: 0
[022] LOAD DATA failed, [2000] Can't execute load data local init callback
function
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt?view=markup&rev=1.1
Index:
php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt
--TEST--
mysqli_set_local_infile_handler() - negative return value/buflen to indicate an
error
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_negative_len($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation);
$buffer = fread($fp, $buflen);
$error = "negative length means error";
return -1;
}
$file = create_standard_csv(1);
$expected = array();
try_handler(20, $link, $file, 'callback_negative_len', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_negative_len'
Callback: 0
Warning: mysqli_query(): negative length means error in %s on line %d
[022] LOAD DATA failed, [2000] negative length means error
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt
--TEST--
mysqli_set_local_infile_handler() - nested calls
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_simple($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback - callback_simple(): %d\n", $invocation);
$invocation++;
if (!is_resource($fp))
printf("[012] First argument passed to callback is not
a resource but %s/%s\n",
$fp, gettype($fp));
if (!$buffer = fread($fp, $buflen)) {
if ($invocation == 1) {
printf("[013] Cannot read from stream\n");
$error = 'Cannot read from stream';
} else {
return strlen($buffer);
}
}
$lines = explode("\n", $buffer);
if (count($lines) != 4 && strlen($buffer) > 0) {
printf("[014] Test is too simple to handle a buffer of
size %d that cannot hold all lines\n", $buflen);
$error = 'Parser too simple';
}
$buffer = '';
foreach ($lines as $k => $line) {
if ('' === trim($line))
continue;
$columns = explode(';', $line);
if (empty($columns)) {
printf("[015] Cannot parse columns\n");
$error = 'Cannot parse columns';
}
// increase id column value
$columns[0] += 1;
$buffer .= implode(';', $columns);
$buffer .= "\n";
}
/* report the wrong length */
return strlen($buffer);
}
function callback_report_short_len($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback - report_short_len(): %d\n", $invocation++);
return callback_simple($fp, $buffer, $buflen, $error);
}
$file = create_standard_csv(1);
$expected = array(
array('id' => 98, 'label' => 'x'),
array('id' => 99, 'label' => 'y'),
array('id' => 100, 'label' => 'z'),
);
try_handler(20, $link, $file, 'callback_report_short_len', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_report_short_len'
Callback - report_short_len(): 0
Callback - callback_simple(): 0
Callback - report_short_len(): 1
Callback - callback_simple(): 1
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt
--TEST--
mysqli_set_local_infile_handler() - run new query on db link
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_new_query($fp, &$buffer, $buflen, &$error) {
global $link;
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
flush();
if (is_object($link)) {
if (!$res = mysqli_query($link, "SELECT id, label FROM
test")) {
printf("[Callback 001 - %03d] Cannot run query,
[%d] %s\n",
$invocation, mysqli_errno($link),
mysqli_error($link));
}
if ($res)
mysqli_free_result($res);
}
$buffer = "1;'a';\n";
if ($invocation > 10)
return 0;
mysqli_set_local_infile_default($link);
return strlen($buffer);
}
$file = create_standard_csv(1);
$expected = array(array('id' => 1, 'label' => 'a'));
try_handler(20, $link, $file, 'callback_new_query', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_new_query'
Callback: 0
[Callback 001 - 001] Cannot run query, [2014] Commands out of sync; you can't
run this command now
[022] LOAD DATA failed, [2000] Can't execute load data local init callback
function
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt
--TEST--
mysqli_set_local_infile_handler() - do not use the file pointer
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_nofileop($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
flush();
$buffer = "1;'a';\n";
if ($invocation > 10)
return 0;
return strlen($buffer);
}
$file = create_standard_csv(1);
$expected = array(array('id' => 1, 'label' => 'a'));
try_handler(20, $link, $file, 'callback_nofileop', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_nofileop'
Callback: 0
Callback: 1
Callback: 2
Callback: 3
Callback: 4
Callback: 5
Callback: 6
Callback: 7
Callback: 8
Callback: 9
Callback: 10
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt
--TEST--
mysqli_set_local_infile_handler()
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('connect.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_simple($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation);
$invocation++;
if (!is_resource($fp))
printf("[012] First argument passed to callback is not
a resource but %s/%s\n",
$fp, gettype($fp));
if (!$buffer = fread($fp, $buflen)) {
if ($invocation == 1) {
printf("[013] Cannot read from stream\n");
$error = 'Cannot read from stream';
} else {
return strlen($buffer);
}
}
$lines = explode("\n", $buffer);
if (count($lines) != 4 && strlen($buffer) > 0) {
printf("[014] Test is too simple to handle a buffer of
size %d that cannot hold all lines\n", $buflen);
$error = 'Parser too simple';
}
$buffer = '';
foreach ($lines as $k => $line) {
if ('' === trim($line))
continue;
$columns = explode(';', $line);
if (empty($columns)) {
printf("[015] Cannot parse columns\n");
$error = 'Cannot parse columns';
}
// increase id column value
$columns[0] += 1;
$buffer .= implode(';', $columns);
$buffer .= "\n";
}
return strlen($buffer);
}
function callback_fclose($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
fclose($fp);
return strlen($buffer);
}
function callback_closefile($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
flush();
if (is_resource($fp))
fclose($fp);
$buffer = "1;'a';\n";
if ($invocation > 10)
return 0;
return strlen($buffer);
}
function callback_invalid_args($fp, &$buffer, $buflen) {
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
$buffer = fread($fp, $buflen);
return strlen($buffer);
}
function callback_error($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
$buffer = fread($fp, $buflen);
$error = 'How to access this error?';
return -1;
}
if (!is_null($tmp = @mysqli_set_local_infile_handler()))
printf("[001] Expecting NULL/NULL got %s/%s\n", $tmp,
gettype($tmp));
$handle = null;
if (!is_null($tmp = @mysqli_set_local_infile_handler($handle)))
printf("[002] Expecting NULL/NULL got %s/%s\n", $tmp,
gettype($tmp));
$handle = @new mysqli();
if (!is_null($tmp = @mysqli_set_local_infile_handler($handle,
'callback_simple')))
printf("[003] Expecting NULL/NULL got %s/%s\n", $tmp,
gettype($tmp));
if (false !== ($tmp = @mysqli_set_local_infile_handler($link,
'unknown')))
printf("[004] Expecting false/boolean got %s/%s\n", $tmp,
gettype($tmp));
$file = create_standard_csv(5);
$expected = array(
array('id' => 98, 'label' => 'x'),
array('id' => 99, 'label' => 'y'),
array('id' => 100, 'label' => 'z'),
);
try_handler(10, $link, $file, 'callback_simple', $expected);
$expected = array();
try_handler(20, $link, $file, 'callback_fclose', $expected);
$expected = array();
try_handler(30, $link, $file, 'callback_invalid_args', $expected);
$expected = array();
try_handler(40, $link, $file, 'callback_error', $expected);
mysqli_close($link);
if (!is_null($tmp = @mysqli_set_local_infile_handler($link,
'callback_simple')))
printf("[300] Expecting NULL/NULL got %s/%s\n", $tmp,
gettype($tmp));
print "done!";
?>
--EXPECTF--
Callback set to 'callback_simple'
Callback: 0
Callback: 1
Callback set to 'callback_fclose'
Callback: 0
Callback set to 'callback_invalid_args'
Should bail!
Callback set to 'callback_error'
Callback: 0
Warning: mysqli_query(): How to access this error? in %s on line %d
[042] LOAD DATA failed, [2000] How to access this error?
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt?view=markup&rev=1.1
Index:
php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt
--TEST--
mysqli_set_local_infile_handler() - replace buffer pointer
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_replace_buffer($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
flush();
$buffer = fread($fp, $buflen);
$ret = "1;'a';\n";
$buffer = $ret;
$num_chars = (ini_get('unicode.semantics')) ? floor($buflen /
2) : $buflen;
assert(strlen($buffer) < $num_chars);
if ($invocation > 10)
return 0;
return strlen($buffer);
}
$file = create_standard_csv(1);
$expected = array(array('id' => 1, 'label' => 'a'));
if (!try_handler(20, $link, $file, 'callback_replace_buffer',
$expected))
printf("[008] Failure\n");
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_replace_buffer'
Callback: 0
Callback: 1
Callback: 2
Callback: 3
Callback: 4
Callback: 5
Callback: 6
Callback: 7
Callback: 8
Callback: 9
Callback: 10
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt
--TEST--
mysqli_set_local_infile_handler() - report shorter buffer
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_short_len($fp, &$buffer, $buflen, &$error) {
static $invocation = 0;
printf("Callback: %d\n", $invocation);
$invocation++;
if (!is_resource($fp))
printf("[012] First argument passed to callback is not
a resource but %s/%s\n",
$fp, gettype($fp));
if (!$buffer = fread($fp, $buflen)) {
if ($invocation == 1) {
printf("[013] Cannot read from stream\n");
$error = 'Cannot read from stream';
} else {
return strlen($buffer);
}
}
$lines = explode("\n", $buffer);
if (count($lines) != 4 && strlen($buffer) > 0) {
printf("[014] Test is too simple to handle a buffer of
size %d that cannot hold all lines\n", $buflen);
$error = 'Parser too simple';
}
$buffer = '';
foreach ($lines as $k => $line) {
if ('' === trim($line))
continue;
$columns = explode(';', $line);
if (empty($columns)) {
printf("[015] Cannot parse columns\n");
$error = 'Cannot parse columns';
}
// increase id column value
$columns[0] += 1;
$buffer .= implode(';', $columns);
$buffer .= "\n";
}
/* report the wrong length */
return strlen($buffer) - 1;
}
$file = create_standard_csv(1);
$expected = array(
array('id' => 98, 'label' => 'x'),
array('id' => 99, 'label' => 'y'),
array('id' => 100, 'label' => 'z'),
);
try_handler(20, $link, $file, 'callback_short_len', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_short_len'
Callback: 0
Warning: mysqli_query(): Mismatch between the return value of the callback and
the content length of the buffer. in %s on line %d
[022] LOAD DATA failed, [2000] Mismatch between the return value of the
callback and the content length of the buffer.
[024/0] [0] ''
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt
+++ php-src/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt
--TEST--
mysqli_set_local_infile_handler() - do not use the file pointer
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
if (!function_exists('mysqli_set_local_infile_handler'))
die("skip - function not available.");
require_once('connect.inc');
if (!$TEST_EXPERIMENTAL)
die("skip - experimental (= unsupported) feature");
?>
--FILE--
<?php
require_once('connect.inc');
require_once('local_infile_tools.inc');
require_once('table.inc');
function callback_unregister($fp, &$buffer, $buflen, &$error) {
global $link;
static $invocation = 0;
printf("Callback: %d\n", $invocation++);
flush();
if (is_resource($fp))
fclose($fp);
$buffer = "1;'a';\n";
if ($invocation > 10)
return 0;
mysqli_set_local_infile_default($link);
return strlen($buffer);
}
$file = create_standard_csv(1);
$expected = array(array('id' => 1, 'label' => 'a'));
try_handler(20, $link, $file, 'callback_unregister', $expected);
mysqli_close($link);
print "done!";
?>
--EXPECTF--
Callback set to 'callback_unregister'
Callback: 0
[022] LOAD DATA failed, [2000] Can't execute load data local init callback
function
done!
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php