diff options
Diffstat (limited to 'ext/mysqli/tests/mysqli_debug_append.phpt')
-rw-r--r-- | ext/mysqli/tests/mysqli_debug_append.phpt | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/ext/mysqli/tests/mysqli_debug_append.phpt b/ext/mysqli/tests/mysqli_debug_append.phpt new file mode 100644 index 0000000..f916995 --- /dev/null +++ b/ext/mysqli/tests/mysqli_debug_append.phpt @@ -0,0 +1,93 @@ +--TEST-- +mysqli_debug() - append to trace file +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once('skipifemb.inc'); +require_once('skipifconnectfailure.inc'); + +if (!function_exists('mysqli_debug')) + die("skip: mysqli_debug() not available"); + +if (!defined('MYSQLI_DEBUG_TRACE_ENABLED')) + die("skip: can't say for sure if mysqli_debug works"); + +if (defined('MYSQLI_DEBUG_TRACE_ENABLED') && !MYSQLI_DEBUG_TRACE_ENABLED) + die("skip: debug functionality not enabled"); + +if (!$IS_MYSQLND) + die("SKIP Libmysql feature not sufficiently spec'd in MySQL C API documentation"); +?> +--FILE-- +<?php + require_once('connect.inc');; + + if (true !== ($tmp = mysqli_debug(sprintf('d:t:O,%s/mysqli_debug_phpt.trace', sys_get_temp_dir())))) + printf("[001] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); + + // table.inc will create a database connection and run some SQL queries, therefore + // the debug file should have entries + require_once('table.inc'); + + clearstatcache(); + $trace_file = sprintf('%s/mysqli_debug_phpt.trace', sys_get_temp_dir()); + if (!file_exists($trace_file)) + printf("[002] Trace file '%s' has not been created\n", $trace_file); + if (filesize($trace_file) < 50) + printf("[003] Trace file '%s' is very small. filesize() reports only %d bytes. Please check.\n", + $trace_file, + filesize($trace_file)); + + // will mysqli_debug() mind if the trace file gets removed? + unlink($trace_file); + clearstatcache(); + + if (!$fp = fopen($trace_file, 'w')) { + printf("[004] Cannot create trace file to test append mode\n"); + } else { + + if (!fwrite($fp, (binary) 'mysqli_debug.phpt test line')) + printf("[005] Cannot write to trace file.\n"); + fclose($fp); + + if (true !== ($tmp = mysqli_debug(sprintf('d:a,%s', $trace_file)))) + printf("[006] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); + + if (!$res = mysqli_query($link, 'SELECT * FROM test')) + printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); + else + mysqli_free_result($res); + + $trace = file_get_contents($trace_file); + if (!strstr($trace, 'mysqli_debug.phpt test line')) + printf("[008] Cannot find original file content any more. Seems that the trace file got overwritten and not appended. Please check."); + + if (true !== ($tmp = mysqli_debug(sprintf('d:A,%s', $trace_file)))) + printf("[009] Expecting boolean/true, got %s/%s\n", gettype($tmp), $tmp); + + if (!$res = mysqli_query($link, 'SELECT * FROM test')) + printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); + else + mysqli_free_result($res); + + if (!strstr(file_get_contents($trace_file), $trace)) + printf("[011] Cannot find original file content any more. Seems that the trace file got overwritten and not appended. Please check."); + } + + // what will happen if we create new trace entries...? + unlink($trace_file); + clearstatcache(); + if (file_exists($trace_file)) + printf("[012] Could not remove trace file '%s'.\n", $trace_file); + + mysqli_close($link); + print "done"; + if ($IS_MYSQLND) + print "libmysql/DBUG package prints some debug info here." +?> +--CLEAN-- +<?php + require_once("clean_table.inc"); +?> +--EXPECTF-- +done%s |