]> granicus.if.org Git - php/commitdiff
Add support for run-tests.php to output all test results
authorSara Golemon <pollita@php.net>
Sat, 6 May 2017 23:10:46 +0000 (16:10 -0700)
committerJoe Watkins <krakjoe@php.net>
Mon, 8 May 2017 04:49:56 +0000 (05:49 +0100)
./run-tests.php -W outfile.txt

PASS foo/bar.phpt
FAIL baz/qux.phpt

run-tests.php

index 3bfbf76ce0159f39679d52304be832e92f67d67a..7f8653f1b329a8f67e082cabef512b863d1e7462 100755 (executable)
@@ -459,6 +459,7 @@ $test_results = array();
 $PHP_FAILED_TESTS = array('BORKED' => array(), 'FAILED' => array(), 'WARNED' => array(), 'LEAKED' => array(), 'XFAILED' => array(), 'SLOW' => array());
 
 // If parameters given assume they represent selected tests to run.
+$result_tests_file= false;
 $failed_tests_file= false;
 $pass_option_n = false;
 $pass_options = '';
@@ -559,6 +560,9 @@ if (isset($argc) && $argc > 1) {
                                case 'a':
                                        $failed_tests_file = fopen($argv[++$i], 'a+t');
                                        break;
+                               case 'W':
+                                       $result_tests_file = fopen($argv[++$i], 'w+t');
+                                       break;
                                case 'c':
                                        $conf_passed = $argv[++$i];
                                        break;
@@ -694,6 +698,8 @@ Options:
 
     -a <file>   Same as -w but append rather then truncating <file>.
 
+    -W <file>   Write a list of all tests and their result status to <file>.
+
     -c <file>   Look for php.ini in directory <file> or use <file> as ini.
 
     -n          Pass -n option to the php binary (Do not use a php.ini).
@@ -826,6 +832,10 @@ HELP;
                        fclose($failed_tests_file);
                }
 
+               if ($result_tests_file) {
+                       fclose($result_tests_file);
+               }
+
                compute_summary();
                if ($html_output) {
                        fwrite($html_file, "<hr/>\n" . get_summary(false, true));
@@ -959,6 +969,10 @@ if ($failed_tests_file) {
        fclose($failed_tests_file);
 }
 
+if ($result_tests_file) {
+       fclose($result_tests_file);
+}
+
 // Summarize results
 
 if (0 == count($test_results)) {
@@ -1160,7 +1174,7 @@ function system_with_timeout($commandline, $env = null, $stdin = null, $captureS
 
 function run_all_tests($test_files, $env, $redir_tested = null)
 {
-       global $test_results, $failed_tests_file, $php, $test_idx;
+       global $test_results, $failed_tests_file, $result_tests_file, $php, $test_idx;
 
        foreach($test_files as $name) {
 
@@ -1183,6 +1197,9 @@ function run_all_tests($test_files, $env, $redir_tested = null)
                        if ($failed_tests_file && ($result == 'XFAILED' || $result == 'FAILED' || $result == 'WARNED' || $result == 'LEAKED')) {
                                fwrite($failed_tests_file, "$index\n");
                        }
+                       if ($result_tests_file) {
+                               fwrite($result_tests_file, "$result\t$index\n");
+                       }
                }
        }
 }