diff options
| author | Ondřej Surý <ondrej@sury.org> | 2010-03-09 11:57:54 +0100 |
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2010-03-09 11:57:54 +0100 |
| commit | 855a09f4eded707941180c9d90acd17c25e29447 (patch) | |
| tree | a40947efaa9876f31b6ee3956c3f3775768143bb /run-tests.php | |
| parent | c852c28a88fccf6e34a2cb091fdfa72bce2b59c7 (diff) | |
| download | php-855a09f4eded707941180c9d90acd17c25e29447.tar.gz | |
Imported Upstream version 5.3.2upstream/5.3.2
Diffstat (limited to 'run-tests.php')
| -rwxr-xr-x | run-tests.php | 66 |
1 files changed, 52 insertions, 14 deletions
diff --git a/run-tests.php b/run-tests.php index 81f218b10..3eeba95c1 100755 --- a/run-tests.php +++ b/run-tests.php @@ -4,7 +4,7 @@ +----------------------------------------------------------------------+ | PHP Version 5, 6 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2009 The PHP Group | + | Copyright (c) 1997-2010 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -24,7 +24,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: run-tests.php 286503 2009-07-29 10:06:55Z cellog $ */ +/* $Id: run-tests.php 293036 2010-01-03 09:23:27Z sebastian $ */ /* 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 @@ -80,6 +80,13 @@ if (PHP_VERSION_ID < 50300) { } } +// (unicode) is available from 6.0.0 +if (PHP_VERSION_ID < 60000) { + define('STRING_TYPE', 'string'); +} else { + define('STRING_TYPE', 'unicode'); +} + // If timezone is not set, use UTC. if (ini_get('date.timezone') == '') { date_default_timezone_set('UTC'); @@ -355,8 +362,8 @@ function save_or_mail_results() if ($sum_results['FAILED']) { foreach ($PHP_FAILED_TESTS['FAILED'] as $test_info) { $failed_tests_data .= $sep . $test_info['name'] . $test_info['info']; - $failed_tests_data .= $sep . file_get_contents(realpath($test_info['output'])); - $failed_tests_data .= $sep . file_get_contents(realpath($test_info['diff'])); + $failed_tests_data .= $sep . file_get_contents(realpath($test_info['output']), FILE_BINARY); + $failed_tests_data .= $sep . file_get_contents(realpath($test_info['diff']), FILE_BINARY); $failed_tests_data .= $sep . "\n\n"; } $status = "failed"; @@ -634,7 +641,7 @@ if (isset($argc) && $argc > 1) { $html_output = is_resource($html_file); break; case '--version': - echo '$Revision: 286503 $' . "\n"; + echo '$Revision: 293036 $' . "\n"; exit(1); default: @@ -1130,6 +1137,21 @@ function show_file_block($file, $block, $section = null) } } +function binary_section($section) +{ + return PHP_MAJOR_VERSION < 6 || + ( + $section == 'FILE' || + $section == 'FILEEOF' || + $section == 'EXPECT' || + $section == 'EXPECTF' || + $section == 'EXPECTREGEX' || + $section == 'EXPECTHEADERS' || + $section == 'SKIPIF' || + $section == 'CLEAN' + ); +} + // // Run an individual test case. // @@ -1159,7 +1181,7 @@ TEST $file // Load the sections of the test file. $section_text = array('TEST' => ''); - $fp = fopen($file, "rt") or error("Cannot open test file: $file"); + $fp = fopen($file, "rb") or error("Cannot open test file: $file"); $borked = false; $bork_info = ''; @@ -1187,28 +1209,42 @@ TEST $file while (!feof($fp)) { $line = fgets($fp); + if ($line === false) { + break; + } + // Match the beginning of a section. - if (preg_match('/^--([_A-Z]+)--/', $line, $r)) { + if (preg_match(b'/^--([_A-Z]+)--/', $line, $r)) { $section = $r[1]; + settype($section, STRING_TYPE); if (isset($section_text[$section])) { $bork_info = "duplicated $section section"; $borked = true; } - $section_text[$section] = ''; + $section_text[$section] = binary_section($section) ? b'' : ''; $secfile = $section == 'FILE' || $section == 'FILEEOF' || $section == 'FILE_EXTERNAL'; $secdone = false; continue; } + if (!binary_section($section)) { + $line = unicode_decode($line, "utf-8"); + if ($line == false) { + $bork_info = "cannot read test"; + $borked = true; + break; + } + } + // Add to the section text. if (!$secdone) { $section_text[$section] .= $line; } // End of actual test? - if ($secfile && preg_match('/^===DONE===\s*$/', $line)) { + if ($secfile && preg_match(b'/^===DONE===\s*$/', $line)) { $secdone = true; } } @@ -1233,7 +1269,7 @@ TEST $file } if (@count($section_text['FILEEOF']) == 1) { - $section_text['FILE'] = preg_replace("/[\r\n]+$/", '', $section_text['FILEEOF']); + $section_text['FILE'] = preg_replace(b"/[\r\n]+$/", b'', $section_text['FILEEOF']); unset($section_text['FILEEOF']); } @@ -1242,7 +1278,7 @@ TEST $file $section_text['FILE_EXTERNAL'] = dirname($file) . '/' . trim(str_replace('..', '', $section_text['FILE_EXTERNAL'])); if (file_exists($section_text['FILE_EXTERNAL'])) { - $section_text['FILE'] = file_get_contents($section_text['FILE_EXTERNAL']); + $section_text['FILE'] = file_get_contents($section_text['FILE_EXTERNAL'], FILE_BINARY); unset($section_text['FILE_EXTERNAL']); } else { $bork_info = "could not load --FILE_EXTERNAL-- " . dirname($file) . '/' . trim($section_text['FILE_EXTERNAL']); @@ -1426,7 +1462,7 @@ TEST $file $env['USE_ZEND_ALLOC'] = '1'; } - $output = system_with_timeout("$extra $php $pass_options -q $ini_settings $test_skipif", $env); + $output = system_with_timeout("$extra $php $pass_options -q $ini_settings -d display_errors=0 $test_skipif", $env); if (!$cfg['keep']['skip']) { @unlink($test_skipif); @@ -1776,7 +1812,9 @@ COMMAND $cmd // quote a non re portion of the string $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), b'/'); // add the re unquoted. - $temp = $temp . b'(' . substr($wanted_re, $start+2, ($end - $start-2)). b')'; + if ($end > $start) { + $temp = $temp . b'(' . substr($wanted_re, $start+2, ($end - $start-2)). b')'; + } $startOffset = $end + 2; } $wanted_re = $temp; @@ -1956,7 +1994,7 @@ $output function comp_line($l1, $l2, $is_reg) { if ($is_reg) { - return preg_match((binary) "/^$l1$/s", (binary) $l2); + return preg_match(b'/^'. (binary) $l1 . b'$/s', (binary) $l2); } else { return !strcmp((binary) $l1, (binary) $l2); } |
