]> granicus.if.org Git - php/commitdiff
- Add CLEAN section which contains optional cleanup code executed even when
authorMarcus Boerger <helly@php.net>
Wed, 4 Jan 2006 15:07:49 +0000 (15:07 +0000)
committerMarcus Boerger <helly@php.net>
Wed, 4 Jan 2006 15:07:49 +0000 (15:07 +0000)
  the test fails and which can be prevented by --no-clean switch

run-tests.php

index 334fd0e9ed2f079cea2a92e781057424df16983c..fb3e3f04f5093ce997b6da9062e593d40f7ddf11 100755 (executable)
@@ -247,9 +247,10 @@ $temp_source = null;
 $temp_target = null;
 $temp_urlbase = null;
 $conf_passed = null;
+$no_clean = false;
 
 $cfgtypes = array('show', 'keep');
-$cfgfiles = array('skip', 'php');
+$cfgfiles = array('skip', 'php', 'clean');
 $cfg = array();
 foreach($cfgtypes as $type) {
        $cfg[$type] = array();
@@ -322,6 +323,9 @@ if (isset($argc) && $argc > 1) {
                                case '--keep-php':
                                        $cfg['keep']['php'] = true;
                                        break;
+                               case '--keep-clean':
+                                       $cfg['keep']['clean'] = true;
+                                       break;
                                //case 'l'
                                case 'm':
                                        $leak_check = true;
@@ -336,6 +340,9 @@ if (isset($argc) && $argc > 1) {
                                        $unicode_and_native = false;
                                        $unicode_testing = false;
                                        break;
+                               case '--no-clean':
+                                       $no_clean = true;
+                                       break;
                                case 'q':
                                        putenv('NO_INTERACTION=1');
                                        break;
@@ -355,6 +362,9 @@ if (isset($argc) && $argc > 1) {
                                case '--show-php':
                                        $cfg['show']['php'] = true;
                                        break;
+                               case '--show-clean':
+                                       $cfg['show']['clean'] = true;
+                                       break;
                                case '--temp-source':
                                        $temp_source = $argv[++$i];
                                        break;
@@ -454,11 +464,14 @@ Options:
                 to your source files and <tdir> some pach in your web page 
                 hierarchy with <url> pointing to <tdir>.
 
-    --keep-[all|php|skip]
-                Do not delete 'all' files, 'php' test file, 'skip' file.
+    --keep-[all|php|skip|clean]
+                Do not delete 'all' files, 'php' test file, 'skip' or 'clean' 
+                file.
 
-    --show-[all|php|skip]
-                Show 'all' files, 'php' test file, 'skip' file.
+    --show-[all|php|skip|clean]
+                Show 'all' files, 'php' test file, 'skip' or 'clean' file.
+
+    --no-clean  Do not execute clean section if any.
 
 HELP;
                                        exit(1);
@@ -924,6 +937,7 @@ function run_test($php, $file, $env, $unicode_semantics)
        global $log_format, $info_params, $ini_overwrites, $cwd, $PHP_FAILED_TESTS;
        global $pass_options, $DETAILED, $IN_REDIRECT, $test_cnt, $test_idx;
        global $leak_check, $temp_source, $temp_target, $cfg, $environment;
+       global $no_clean;
        global $unicode_and_native;
 
        $temp_filenames = null;
@@ -1062,14 +1076,17 @@ TEST $file
        $memcheck_filename = $temp_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'mem';
        $temp_file         = $temp_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'php';
        $test_file         = $test_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'php';
-       $temp_skipif       = $temp_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'skip';
-       $test_skipif       = $test_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'skip';
+       $temp_skipif       = $temp_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'skip.php';
+       $test_skipif       = $test_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'skip.php';
+       $temp_clean        = $temp_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'clean.php';
+       $test_clean        = $test_dir . DIRECTORY_SEPARATOR . basename($file,'phpt').$pu.'clean.php';
        $tmp_post          = $temp_dir . DIRECTORY_SEPARATOR . uniqid('/phpt.');
        $tmp_relative_file = str_replace(dirname(__FILE__).DIRECTORY_SEPARATOR, '', $test_file) . 't';
 
        if ($temp_source && $temp_target) {
-               $temp_skipif  .= '.phps';
-               $temp_file    .= '.phps';
+               $temp_skipif  .= 's';
+               $temp_file    .= 's';
+               $temp_clean   .= 's';
                $copy_file     = $temp_dir . DIRECTORY_SEPARATOR . basename(is_array($file) ? $file[1] : $file).'.phps';
                if (!is_dir(dirname($copy_file))) {
                        @mkdir(dirname($copy_file), 0777, true) or error("Cannot create output directory - " . dirname($copy_file));
@@ -1085,7 +1102,8 @@ TEST $file
                        'out'  => $output_filename,
                        'mem'  => $memcheck_filename,
                        'php'  => $temp_file,
-                       'skip' => $temp_skipif);
+                       'skip' => $temp_skipif,
+                       'clean'=> $temp_clean);
        }
 
        if (is_array($IN_REDIRECT)) {
@@ -1105,6 +1123,8 @@ TEST $file
        @unlink($temp_skipif);
        @unlink($test_skipif);
        @unlink($tmp_post);
+       @unlink($temp_clean);
+       @unlink($test_clean);
 
        // Reset environment from any previous test.
        $env['REDIRECT_STATUS']='';
@@ -1141,7 +1161,9 @@ TEST $file
                        $extra = substr(PHP_OS, 0, 3) !== "WIN" ?
                                "unset REQUEST_METHOD; unset QUERY_STRING; unset PATH_TRANSLATED; unset SCRIPT_FILENAME; unset REQUEST_METHOD;": "";
                        $output = system_with_timeout("$extra $php -q $skipif_params $test_skipif", $env);
-                       @unlink($test_skipif);
+                       if (!$cfg['keep']['skip']) {
+                               @unlink($test_skipif);
+                       }
                        if (!strncasecmp('skip', trim($output), 4)) {
                                $reason = (eregi("^skip[[:space:]]*(.+)\$", trim($output))) ? eregi_replace("^skip[[:space:]]*(.+)\$", "\\1", trim($output)) : FALSE;
                                if ($reason) {
@@ -1332,6 +1354,28 @@ COMMAND $cmd
 
        $out = system_with_timeout($cmd, $env);
 
+       if (array_key_exists('CLEAN', $section_text) && (!$no_clean || $cfg['keep']['clean'])) {
+               if (trim($section_text['CLEAN'])) {
+                       if ($cfg['show']['clean']) {
+                               echo "\n========CLEAN=======\n";
+                               echo $section_text['CLEAN'];
+                               echo "========DONE========\n";
+                       }
+                       save_text($test_clean, trim($section_text['CLEAN']), $temp_clean);
+                       if (!$no_clean) {
+                               $clean_params = array();
+                               settings2array($ini_overwrites,$clean_params);
+                               settings2params($clean_params);
+                               $extra = substr(PHP_OS, 0, 3) !== "WIN" ?
+                                       "unset REQUEST_METHOD; unset QUERY_STRING; unset PATH_TRANSLATED; unset SCRIPT_FILENAME; unset REQUEST_METHOD;": "";
+                               system_with_timeout("$extra $php -q $clean_params $clean_skipif", $env);
+                       }
+                       if (!$cfg['keep']['clean']) {
+                               @unlink($test_clean);
+                       }
+               }
+       }
+
        @unlink($tmp_post);
 
        $leaked = false;