summaryrefslogtreecommitdiff
path: root/run-tests.php
diff options
context:
space:
mode:
authorJani Taskinen <jani@php.net>2009-12-21 15:44:58 +0000
committerJani Taskinen <jani@php.net>2009-12-21 15:44:58 +0000
commit4bba459d8f14ca77d89865c2b6e4c800b9d6c2e9 (patch)
tree960298c3ad3405e6c889a50f385f3fa921f62db3 /run-tests.php
parentd0a956c2b72e5fd9956fb815606aa7139df40957 (diff)
downloadphp-git-4bba459d8f14ca77d89865c2b6e4c800b9d6c2e9.tar.gz
- Sync (and KEEP it synced!)
Diffstat (limited to 'run-tests.php')
-rwxr-xr-xrun-tests.php58
1 files changed, 48 insertions, 10 deletions
diff --git a/run-tests.php b/run-tests.php
index a5c374060f..8c543b780d 100755
--- a/run-tests.php
+++ b/run-tests.php
@@ -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";
@@ -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']);
@@ -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);
}