summaryrefslogtreecommitdiff
path: root/run-tests.php
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2010-03-09 11:57:54 +0100
committerOndřej Surý <ondrej@sury.org>2010-03-09 11:57:54 +0100
commit855a09f4eded707941180c9d90acd17c25e29447 (patch)
treea40947efaa9876f31b6ee3956c3f3775768143bb /run-tests.php
parentc852c28a88fccf6e34a2cb091fdfa72bce2b59c7 (diff)
downloadphp-855a09f4eded707941180c9d90acd17c25e29447.tar.gz
Imported Upstream version 5.3.2upstream/5.3.2
Diffstat (limited to 'run-tests.php')
-rwxr-xr-xrun-tests.php66
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);
}