diff options
author | Marcus Boerger <helly@php.net> | 2007-12-05 14:54:08 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2007-12-05 14:54:08 +0000 |
commit | d28117190f00202bd20a2ba701f5c1eb63feb9a4 (patch) | |
tree | 42a378e6628ac916c62ab129abe64e24ea57b7db /run-tests.php | |
parent | bbf7260cde54dfe1867f826b833d987f880524b9 (diff) | |
download | php-git-d28117190f00202bd20a2ba701f5c1eb63feb9a4.tar.gz |
- - Allow to check the out,exp and diff results on console while executing the tests
Diffstat (limited to 'run-tests.php')
-rwxr-xr-x | run-tests.php | 121 |
1 files changed, 68 insertions, 53 deletions
diff --git a/run-tests.php b/run-tests.php index 7a67f1a699..a65fbc7011 100755 --- a/run-tests.php +++ b/run-tests.php @@ -260,7 +260,7 @@ $conf_passed = null; $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 @@ if (isset($argc) && $argc > 1) { $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 @@ if (isset($argc) && $argc > 1) { $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 @@ if (isset($argc) && $argc > 1) { $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; @@ -425,8 +424,8 @@ Synopsis: 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 @@ Options: 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 @@ Options: -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 @@ function run_all_tests($test_files, $env, $redir_tested = NULL) } // +// 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 @@ TEST $file } $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 @@ TEST $file $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 @@ TEST $file $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 @@ TEST $file } // 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 @@ COMMAND $cmd 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 @@ COMMAND $cmd $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 @@ COMMAND $cmd } 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 @@ COMMAND $cmd 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 |