Hello Dmitry,

  that still looks wrong. Wrong in the sense that we should maybe find a
way that handles memcheck and memcheck -q in a similar way.

marcus

Thursday, December 1, 2005, 8:30:03 AM, you wrote:

> Sorry. I attached wrong patch.

> Dmitry.

>> -----Original Message-----
>> From: Dmitry Stogov [mailto:[EMAIL PROTECTED] 
>> Sent: Thursday, December 01, 2005 10:28 AM
>> To: 'Marcus Boerger'; Nuno Lopes
>> Cc: 'php-cvs@lists.php.net'
>> Subject: RE: [PHP-CVS] cvs: php-src / run-tests.php 
>> 
>> 
>> GREAT!
>> 
>> In addition, it would be nice to support "--suppressions" 
>> valgrind option. On my system (FC4), valgrind always produces 
>> the same pthread specific error on any run. Se patch in attachment.
>> 
>> Also it is possible to run valgrind wih "-q" option, so 
>> valgrind will print it's own messages only on real errors, 
>> and you will not need filter them.
>> 
>> Thanks. Dmitry.
>> 
>> > -----Original Message-----
>> > From: Marcus Boerger [mailto:[EMAIL PROTECTED]
>> > Sent: Thursday, December 01, 2005 3:27 AM
>> > To: php-cvs@lists.php.net
>> > Subject: [PHP-CVS] cvs: php-src / run-tests.php 
>> > 
>> > 
>> > 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
>> > 
>> > 
>> 



Best regards,
 Marcus

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to