helly Wed Dec 5 14:54:08 2007 UTC Modified files: (Branch: PHP_5_3) /php-src run-tests.php Log: - - Allow to check the out,exp and diff results on console while executing the tests
http://cvs.php.net/viewvc.cgi/php-src/run-tests.php?r1=1.226.2.37.2.35.2.4&r2=1.226.2.37.2.35.2.5&diff_format=u Index: php-src/run-tests.php diff -u php-src/run-tests.php:1.226.2.37.2.35.2.4 php-src/run-tests.php:1.226.2.37.2.35.2.5 --- php-src/run-tests.php:1.226.2.37.2.35.2.4 Wed Dec 5 13:55:46 2007 +++ php-src/run-tests.php Wed Dec 5 14:54:08 2007 @@ -24,7 +24,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: run-tests.php,v 1.226.2.37.2.35.2.4 2007/12/05 13:55:46 helly Exp $ */ +/* $Id: run-tests.php,v 1.226.2.37.2.35.2.5 2007/12/05 14:54: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 @@ -260,7 +260,7 @@ $no_clean = false; $cfgtypes = array('show', 'keep'); -$cfgfiles = array('skip', 'php', 'clean'); +$cfgfiles = array('skip', 'php', 'clean', 'out', 'diff', 'exp'); $cfg = array(); foreach($cfgtypes as $type) { $cfg[$type] = array(); @@ -285,11 +285,28 @@ $switch = substr($argv[$i],1,1); $repeat = substr($argv[$i],0,1) == '-'; while ($repeat) { - $repeat = false; if (!$is_switch) { $switch = substr($argv[$i],1,1); } $is_switch = true; + if ($repeat) { + foreach($cfgtypes as $type) { + if (strpos($switch, '--'.$type) === 0) { + foreach($cfgfiles as $file) { + if ($switch == '--'.$type.'-'.$file) { + $cfg[$type][$file] = true; + $is_switch = false; + break; + } + } + } + } + } + if (!$is_switch) { + $is_switch = true; + break; + } + $repeat = false; switch($switch) { case 'r': case 'l': @@ -327,15 +344,6 @@ $cfg['keep'][$file] = true; } break; - case '--keep-skip': - $cfg['keep']['skip'] = true; - break; - case '--keep-php': - $cfg['keep']['php'] = true; - break; - case '--keep-clean': - $cfg['keep']['clean'] = true; - break; //case 'l' case 'm': $leak_check = true; @@ -369,15 +377,6 @@ $cfg['show'][$file] = true; } break; - case '--show-skip': - $cfg['show']['skip'] = true; - break; - case '--show-php': - $cfg['show']['php'] = true; - break; - case '--show-clean': - $cfg['show']['clean'] = true; - break; case '--temp-source': $temp_source = $argv[++$i]; break; @@ -407,7 +406,7 @@ $html_output = is_resource($html_file); break; case '--version': - echo '$Revision: 1.226.2.37.2.35.2.4 $'."\n"; + echo '$Revision: 1.226.2.37.2.35.2.5 $'."\n"; exit(1); case 'u': @@ -425,8 +424,8 @@ php run-tests.php [options] [files] [directories] Options: - -l <file> Read the testfiles to be executed from <file>. After the test - has finished all failed tests are written to the same <file>. + -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 (same as: -r <file> -w <file>). @@ -444,13 +443,15 @@ with value 'bar'). -m Test for memory leaks with Valgrind. - + -N Always set (Test with unicode_semantics set off in PHP 6). - - -s <file> Write output to <file>. + + -p <php> Specify PHP executable to run. -q Quiet, no user interaction (same as environment NO_INTERACTION). + -s <file> Write output to <file>. + --verbose -v Verbose mode. @@ -458,21 +459,25 @@ -h This Help. --html <file> Generate HTML output. - + --temp-source <sdir> --temp-target <tdir> [--temp-urlbase <url>] - Write temporary files to <tdir> by replacing <sdir> from the - filenames to generate with <tdir>. If --html is being used and + Write temporary files to <tdir> by replacing <sdir> from the + filenames to generate with <tdir>. If --html is being used and <url> given then the generated links are relative and prefixed with the given url. In general you want to make <sdir> the path - to your source files and <tdir> some pach in your web page + to your source files and <tdir> some pach in your web page hierarchy with <url> pointing to <tdir>. --keep-[all|php|skip|clean] - Do not delete 'all' files, 'php' test file, 'skip' or 'clean' + Do not delete 'all' files, 'php' test file, 'skip' or 'clean' file. - --show-[all|php|skip|clean] - Show 'all' files, 'php' test file, 'skip' or 'clean' file. + --show-[all|php|skip|clean|exp|diff|out] + Show 'all' files, 'php' test file, 'skip' or 'clean' file. You + can also use this to show the output 'out', the expected result + 'exp' or the difference between them 'exp'. The result types + get written independent of the log format, however 'diff' only + exists when a test fails. --no-clean Do not execute clean section if any. @@ -949,6 +954,23 @@ } // +// Show file or result block +// +function show_file_block($file, $block, $section=NULL) +{ + global $cfg; + + if ($cfg['show'][$file]) { + if (is_null($section)) { + $section = strtoupper($file); + } + echo "\n========".$section."========\n"; + echo rtrim($block); + echo "\n========DONE========\n"; + } +} + +// // Run an individual test case. // function run_test($php, $file, $env) @@ -1128,7 +1150,7 @@ } $temp_filenames = array( 'file' => $copy_file, - 'diff' => $diff_filename, + 'diff' => $diff_filename, 'log' => $log_filename, 'exp' => $exp_filename, 'out' => $output_filename, @@ -1144,7 +1166,7 @@ $section_text['FILE'] = "# original source file: $shortname\n" . $section_text['FILE']; } - // unlink old test results + // unlink old test results @unlink($diff_filename); @unlink($log_filename); @unlink($exp_filename); @@ -1196,11 +1218,7 @@ $warn = false; if (array_key_exists('SKIPIF', $section_text)) { if (trim($section_text['SKIPIF'])) { - if ($cfg['show']['skip']) { - echo "\n========SKIP========\n"; - echo $section_text['SKIPIF']; - echo "========DONE========\n"; - } + show_file_block('skip', $section_text['SKIPIF']); save_text($test_skipif, $section_text['SKIPIF'], $temp_skipif); $extra = substr(PHP_OS, 0, 3) !== "WIN" ? "unset REQUEST_METHOD; unset QUERY_STRING; unset PATH_TRANSLATED; unset SCRIPT_FILENAME; unset REQUEST_METHOD;": ""; @@ -1307,11 +1325,7 @@ } // We've satisfied the preconditions - run the test! - if ($cfg['show']['php']) { - echo "\n========TEST========\n"; - echo $section_text['FILE']; - echo "========DONE========\n"; - } + show_file_block('php', $section_text['FILE'], 'TEST'); save_text($test_file, $section_text['FILE'], $temp_file); if (array_key_exists('GET', $section_text)) { $query_string = trim($section_text['GET']); @@ -1406,11 +1420,7 @@ 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"; - } + show_file_block('clean', $section_text['CLEAN']); save_text($test_clean, trim($section_text['CLEAN']), $temp_clean); if (!$no_clean) { $clean_params = array(); @@ -1485,12 +1495,14 @@ $output_headers = join("\n", $output_headers); } + show_file_block('out', $output); if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) { if (isset($section_text['EXPECTF'])) { $wanted = trim($section_text['EXPECTF']); } else { $wanted = trim($section_text['EXPECTREGEX']); } + show_file_block('exp', $wanted); $wanted_re = preg_replace('/\r\n/',"\n",$wanted); if (isset($section_text['EXPECTF'])) { $wanted_re = preg_quote($wanted_re, '/'); @@ -1527,6 +1539,7 @@ } else { $wanted = trim($section_text['EXPECT']); $wanted = preg_replace('/\r\n/',"\n",$wanted); + show_file_block('exp', $wanted); // compare and leave on success if (!strcmp($output, $wanted)) { $passed = true; @@ -1569,17 +1582,19 @@ if (strpos($log_format,'E') !== FALSE && file_put_contents($exp_filename, $wanted) === FALSE) { error("Cannot create expected test output - $exp_filename"); } - + // write .out if (strpos($log_format,'O') !== FALSE && file_put_contents($output_filename, $output) === FALSE) { error("Cannot create test output - $output_filename"); } - + // write .diff - if (strpos($log_format,'D') !== FALSE && file_put_contents($diff_filename, generate_diff($wanted,$wanted_re,$output)) === FALSE) { + $diff = generate_diff($wanted,$wanted_re,$output); + show_file_block('diff', $diff); + if (strpos($log_format,'D') !== FALSE && file_put_contents($diff_filename, $diff) === FALSE) { error("Cannot create test diff - $diff_filename"); } - + // write .log if (strpos($log_format,'L') !== FALSE && file_put_contents($log_filename, " ---- EXPECTED OUTPUT
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php