helly           Wed Oct  5 20:35:10 2005 EDT

  Modified files:              
    /php-src    run-tests.php 
  Log:
  - Fix faillog and make it understand/handle redirected tests
  
  
http://cvs.php.net/diff.php/php-src/run-tests.php?r1=1.232&r2=1.233&ty=u
Index: php-src/run-tests.php
diff -u php-src/run-tests.php:1.232 php-src/run-tests.php:1.233
--- php-src/run-tests.php:1.232 Mon Oct  3 14:15:54 2005
+++ php-src/run-tests.php       Wed Oct  5 20:35:08 2005
@@ -23,7 +23,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: run-tests.php,v 1.232 2005/10/03 18:15:54 helly Exp $ */
+/* $Id: run-tests.php,v 1.233 2005/10/06 00:35:08 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
@@ -217,6 +217,7 @@
 // Determine the tests to be run.
 
 $test_files = array();
+$redir_tests = array();
 $test_results = array();
 $PHP_FAILED_TESTS = array('BORKED' => array(), 'FAILED' => array());
 
@@ -232,22 +233,30 @@
                                case 'r':
                                case 'l':
                                        $test_list = @file($argv[++$i]);
-                                       if (is_array($test_list) && 
count($test_list)) {
-                                               $test_files = 
array_merge($test_files, $test_list);
+                                       if ($test_list) {
+                                               foreach($test_list as $test) {
+                                                       $matches = array();
+                                                       if 
(preg_match('/^#.*\[(.*)\]\:\s+(.*)$/', $test, $matches)) {
+                                                               $redir_tests[] 
= array($matches[1], $matches[2]);
+                                                       } else if 
(strlen($test)) {
+                                                               $test_files[] = 
trim($test);
+                                                       }
+                                               }
                                        }
                                        if ($switch != 'l') {
                                                break;
                                        }
                                        $i--;
-                               case 'v':
-                                       $DETAILED = true;
-                                       break;
+                                       // break left intentionally
                                case 'w':
                                        $failed_tests_file = fopen($argv[++$i], 
'w+t');
                                        break;
                                case 'a':
                                        $failed_tests_file = fopen($argv[++$i], 
'a+t');
                                        break;
+                               case 'v':
+                                       $DETAILED = true;
+                                       break;
                                case 'n':
                                        if (!$pass_option_n) {
                                                $pass_options .= ' -n';
@@ -277,7 +286,7 @@
     -l <file>   Read the testfiles to be executed from <file>. After the test 
                 has finished all failed tests are written to the same <file>. 
                 If the list is empty and no further test is specified then
-                all tests are executed.
+                all tests are executed (same as: -r <file> -w <file>).
 
     -r <file>   Read the testfiles to be executed from <file>.
 
@@ -311,9 +320,7 @@
                }
        }
        $test_files = array_unique($test_files);
-       for($i = 0; $i < count($test_files); $i++) {
-               $test_files[$i] = trim($test_files[$i]);
-       }
+       $test_files = array_merge($test_files, $redir_tests);
 
        // Run selected tests.
        $test_cnt = count($test_files);
@@ -324,7 +331,7 @@
                $start_time = time();
                $test_idx = 0;
                foreach($test_files AS $name) {
-                       $test_results[$name] = 
run_test($php,$name,$test_cnt,++$test_idx);
+                       $test_results[is_array($name) ? $name[0] : $name] = 
run_test($php,$name,$test_cnt,++$test_idx);
                        if ($failed_tests_file && ($test_results[$name] == 
'FAILED' || $test_results[$name] == 'WARNED')) {
                                fwrite($failed_tests_file, "$name\n");
                        }
@@ -409,9 +416,21 @@
        closedir($o);
 }
 
+function test_name($name)
+{
+       if (is_array($name)) {
+               return $name[0] . ':' . $name[1];
+       } else {
+               return $name;
+       }
+}
+
 function test_sort($a, $b)
 {
        global $cwd;
+       
+       $a = test_name($a);
+       $b = test_name($b);
 
        $ta = strpos($a, "{$cwd}/tests")===0 ? 1 + (strpos($a, 
"{$cwd}/tests/run-test")===0 ? 1 : 0) : 0;
        $tb = strpos($b, "{$cwd}/tests")===0 ? 1 + (strpos($b, 
"{$cwd}/tests/run-test")===0 ? 1 : 0) : 0;
@@ -695,6 +714,10 @@
 function run_test($php, $file, $test_cnt, $test_idx)
 {
        global $log_format, $info_params, $ini_overwrites, $cwd, 
$PHP_FAILED_TESTS, $pass_options, $DETAILED, $IN_REDIRECT;
+       
+       $org_file = $file;
+       
+       if (is_array($file)) $file = $file[0];
 
        if ($DETAILED) echo "
 =================
@@ -884,7 +907,11 @@
                $IN_REDIRECT['dir'] = realpath(dirname($file));
                $IN_REDIRECT['prefix'] = trim($section_text['TEST']);
 
-               find_files($IN_REDIRECT['TESTS']);
+               if (is_array($org_file)) {
+                       $test_files[] = $org_file[1];
+               } else {
+                       find_files($IN_REDIRECT['TESTS']);
+               }
                $test_cnt += count($test_files);
                $GLOBALS['test_cnt'] = $test_cnt;
 
@@ -901,7 +928,7 @@
                        $result = run_test($php, $name, $test_cnt, ++$test_idx);
                        $test_results[$tested . ': ' . $name] = $result;
                        if ($failed_tests_file && ($result == 'FAILED' || 
$result == 'WARNED')) {
-                               fwrite($failed_tests_file, "$tested: $name\n");
+                               fwrite($failed_tests_file, "# $tested: 
$name\n");
                        }
                }
 

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

Reply via email to