helly Wed Nov 30 19:26:45 2005 EDT
Modified files:
/php-src run-tests.php
Log:
- Add support for valgrind testing (Nuno)
http://cvs.php.net/diff.php/php-src/run-tests.php?r1=1.239&r2=1.240&ty=u
Index: php-src/run-tests.php
diff -u php-src/run-tests.php:1.239 php-src/run-tests.php:1.240
--- php-src/run-tests.php:1.239 Sat Nov 26 13:07:49 2005
+++ php-src/run-tests.php Wed Nov 30 19:26:44 2005
@@ -23,7 +23,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: run-tests.php,v 1.239 2005/11/26 18:07:49 helly Exp $ */
+/* $Id: run-tests.php,v 1.240 2005/12/01 00:26:44 helly Exp $ */
/* Sanity check to ensure that pcre extension needed by this script is
available.
* In the event it is not, print a nice error message indicating that this
script will
@@ -274,6 +274,9 @@
$ini_overwrites[] =
'unicode.output_encoding=utf-8';
$ini_overwrites[] =
'unicode.from_error_mode=U_INVALID_SUBSTITUTE';
break;
+ case 'm':
+ $GLOBALS['leak_check'] = 1;
+ break;
default:
echo "Illegal switch specified!\n";
case "h":
@@ -302,6 +305,8 @@
-u Test with unicode_semantics set on.
+ -m Test for memory leaks with Valgrind
+
-v Verbose mode.
-h <file> This Help.
@@ -682,7 +687,7 @@
return $data;
} else if ($n > 0) {
$line = fread($pipes[1], 8192);
- if (strlen($line) == 0) {
+ if ($line === false) {
/* EOF */
break;
}
@@ -861,9 +866,10 @@
$tmp_skipif = $tmp . DIRECTORY_SEPARATOR . uniqid('/phpt.');
$tmp_file = $tmp . DIRECTORY_SEPARATOR .
preg_replace('/\.phpt$/','.php',basename($file));
$tmp_post = $tmp . DIRECTORY_SEPARATOR . uniqid('/phpt.');
+ $tmp_relative_file = str_replace(dirname(__FILE__).DIRECTORY_SEPARATOR,
'', $tmp_file) . 't';
if (is_array($IN_REDIRECT)) {
- $tested = $IN_REDIRECT['prefix'] . ' ' .
trim($section_text['TEST']) . " [$tmp_file]";
+ $tested = $IN_REDIRECT['prefix'] . ' ' .
trim($section_text['TEST']) . " [$tmp_relative_file]";
$section_text['FILE'] = "# original source file: $shortname\n"
. $section_text['FILE'];
}
@@ -1077,6 +1083,10 @@
}
}
+ if (isset($GLOBALS['leak_check'])) {
+ $cmd = 'valgrind --tool=memcheck ' . $cmd;
+ }
+
if ($DETAILED) echo "
CONTENT_LENGTH = " . getenv("CONTENT_LENGTH") . "
CONTENT_TYPE = " . getenv("CONTENT_TYPE") . "
@@ -1100,6 +1110,31 @@
@unlink($tmp_post);
+ if (isset($GLOBALS['leak_check'])) { // leak check
+ preg_match_all('/==\d+== +\w+ lost: (\d+) bytes/S', $out,
$matches);
+ $leak = false;
+
+ foreach ($matches[1] as $m) {
+ if ($m) { // we got a leak
+ $leak = true;
+ break;
+ }
+ }
+
+ if (!$leak && !preg_match('/==\d+== ERROR SUMMARY: [1-9]\d*
errors/', $out)) {
+ if (isset($old_php)) {
+ $php = $old_php;
+ }
+ echo "PASS $tested\n";
+ return 'PASSED';
+ }
+
+ $output = $out;
+ $wanted = '';
+ $warn = false;
+
+ } else { // normal testing
+
// Does the output match what is expected?
$output = trim($out);
$output = preg_replace('/\r\n/',"\n",$output);
@@ -1158,6 +1193,8 @@
$wanted_re = NULL;
}
+ } //end of non-valgrind testing
+
// Test failed so we need to report details.
if ($warn) {
show_result("WARN", $tested, $file, $info);
@@ -1190,7 +1227,7 @@
// write .diff
if (strpos($log_format,'D') !== FALSE) {
$log = fopen($diff_filename,'wt') or error("Cannot create test
log - $diff_filename");
- fwrite($log,generate_diff($wanted,$wanted_re,$output));
+ fwrite($log, isset($GLOBALS['leak_check']) ? '' :
generate_diff($wanted,$wanted_re,$output));
fclose($log);
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php