From: Hannes Magnusson Date: Mon, 17 Dec 2007 11:34:55 +0000 (+0000) Subject: MFB5.3: - Allow to specify php executable on commandline X-Git-Tag: RELEASE_2_0_0a1~1147 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=02663e3456c880d35be4c1141d106fa8d89a53a6;p=php MFB5.3: - Allow to specify php executable on commandline MFB5.3: - Allow to check the out,exp and diff results on console while executing the tests --- diff --git a/run-tests.php b/run-tests.php index fc48fa0309..dff348b1a7 100755 --- a/run-tests.php +++ b/run-tests.php @@ -113,8 +113,10 @@ if (getenv('TEST_PHP_CGI_EXECUTABLE')) { $environment['TEST_PHP_CGI_EXECUTABLE'] = $php_cgi; } -if ($argc !=2 || ($argv[1] != '-h' && $argv[1] != '-help' && $argv != '--help')) +function verify_config() { + global $php; + if (empty($php) || !file_exists($php)) { error("environment variable TEST_PHP_EXECUTABLE must be set to specify PHP executable!"); } @@ -254,7 +256,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(); @@ -279,11 +281,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': @@ -321,15 +340,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; @@ -348,6 +358,10 @@ if (isset($argc) && $argc > 1) { case '--no-clean': $no_clean = true; break; + case 'p': + $php = $argv[++$i]; + putenv("TEST_PHP_EXECUTABLE=$php"); + break; case 'q': putenv('NO_INTERACTION=1'); break; @@ -361,15 +375,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; @@ -423,8 +428,8 @@ Synopsis: php run-tests.php [options] [files] [directories] Options: - -l Read the testfiles to be executed from . After the test - has finished all failed tests are written to the same . + -l Read the testfiles to be executed from . After the test + has finished all failed tests are written to the same . If the list is empty and no further test is specified then all tests are executed (same as: -r -w ). @@ -448,11 +453,13 @@ Options: -m Test for memory leaks with Valgrind. -N Test with unicode.semantics set off. - - -s Write output to . + -p Specify PHP executable to run. + -q Quiet, no user interaction (same as environment NO_INTERACTION). + -s Write output to . + --verbose -v Verbose mode. @@ -460,21 +467,25 @@ Options: -h This Help. --html Generate HTML output. - + --temp-source --temp-target [--temp-urlbase ] - Write temporary files to by replacing from the - filenames to generate with . If --html is being used and + Write temporary files to by replacing from the + filenames to generate with . If --html is being used and given then the generated links are relative and prefixed with the given url. In general you want to make the path - to your source files and some pach in your web page + to your source files and some pach in your web page hierarchy with pointing to . --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. @@ -514,6 +525,7 @@ HELP; // Run selected tests. $test_cnt = count($test_files); if ($test_cnt) { + verify_config(); write_information($html_output); usort($test_files, "test_sort"); $start_time = time(); @@ -549,6 +561,7 @@ HELP; } } +verify_config(); write_information($html_output); // Compile a list of all test files (*.phpt). @@ -964,6 +977,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. // @@ -1151,7 +1181,7 @@ TEST $file } $temp_filenames = array( 'file' => $copy_file, - 'diff' => $diff_filename, + 'diff' => $diff_filename, 'log' => $log_filename, 'exp' => $exp_filename, 'out' => $output_filename, @@ -1167,7 +1197,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); @@ -1229,11 +1259,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;": ""; @@ -1366,11 +1392,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']); @@ -1484,11 +1506,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(); @@ -1563,12 +1581,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, '/'); @@ -1609,6 +1629,7 @@ COMMAND $cmd $wanted = unicode_encode($wanted, ini_get('unicode.output_encoding')); } $wanted = preg_replace('/\r\n/',"\n",$wanted); + show_file_block('exp', $wanted); // compare and leave on success if (!strcmp($output, $wanted)) { $passed = true; @@ -1651,17 +1672,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