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