Browse Source

- Sync (and KEEP it synced!)

PHP-5.2.1RC1
Jani Taskinen 17 years ago
parent
commit
ff3da6b299
  1. 58
      run-tests.php

58
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 timezone is not set, use UTC.
if (ini_get('date.timezone') == '') { if (ini_get('date.timezone') == '') {
date_default_timezone_set('UTC'); date_default_timezone_set('UTC');
@ -355,8 +362,8 @@ function save_or_mail_results()
if ($sum_results['FAILED']) { if ($sum_results['FAILED']) {
foreach ($PHP_FAILED_TESTS['FAILED'] as $test_info) { foreach ($PHP_FAILED_TESTS['FAILED'] as $test_info) {
$failed_tests_data .= $sep . $test_info['name'] . $test_info['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"; $failed_tests_data .= $sep . "\n\n";
} }
$status = "failed"; $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. // Run an individual test case.
// //
@ -1159,7 +1181,7 @@ TEST $file
// Load the sections of the test file. // Load the sections of the test file.
$section_text = array('TEST' => ''); $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; $borked = false;
$bork_info = ''; $bork_info = '';
@ -1187,28 +1209,42 @@ TEST $file
while (!feof($fp)) { while (!feof($fp)) {
$line = fgets($fp); $line = fgets($fp);
if ($line === false) {
break;
}
// Match the beginning of a section. // Match the beginning of a section.
if (preg_match('/^--([_A-Z]+)--/', $line, $r)) {
if (preg_match(b'/^--([_A-Z]+)--/', $line, $r)) {
$section = $r[1]; $section = $r[1];
settype($section, STRING_TYPE);
if (isset($section_text[$section])) { if (isset($section_text[$section])) {
$bork_info = "duplicated $section section"; $bork_info = "duplicated $section section";
$borked = true; $borked = true;
} }
$section_text[$section] = '';
$section_text[$section] = binary_section($section) ? b'' : '';
$secfile = $section == 'FILE' || $section == 'FILEEOF' || $section == 'FILE_EXTERNAL'; $secfile = $section == 'FILE' || $section == 'FILEEOF' || $section == 'FILE_EXTERNAL';
$secdone = false; $secdone = false;
continue; 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. // Add to the section text.
if (!$secdone) { if (!$secdone) {
$section_text[$section] .= $line; $section_text[$section] .= $line;
} }
// End of actual test? // End of actual test?
if ($secfile && preg_match('/^===DONE===\s*$/', $line)) {
if ($secfile && preg_match(b'/^===DONE===\s*$/', $line)) {
$secdone = true; $secdone = true;
} }
} }
@ -1233,7 +1269,7 @@ TEST $file
} }
if (@count($section_text['FILEEOF']) == 1) { 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']); unset($section_text['FILEEOF']);
} }
@ -1242,7 +1278,7 @@ TEST $file
$section_text['FILE_EXTERNAL'] = dirname($file) . '/' . trim(str_replace('..', '', $section_text['FILE_EXTERNAL'])); $section_text['FILE_EXTERNAL'] = dirname($file) . '/' . trim(str_replace('..', '', $section_text['FILE_EXTERNAL']));
if (file_exists($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']); unset($section_text['FILE_EXTERNAL']);
} else { } else {
$bork_info = "could not load --FILE_EXTERNAL-- " . dirname($file) . '/' . trim($section_text['FILE_EXTERNAL']); $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 // quote a non re portion of the string
$temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), b'/'); $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), b'/');
// add the re unquoted. // 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; $startOffset = $end + 2;
} }
$wanted_re = $temp; $wanted_re = $temp;
@ -1956,7 +1994,7 @@ $output
function comp_line($l1, $l2, $is_reg) function comp_line($l1, $l2, $is_reg)
{ {
if ($is_reg) { if ($is_reg) {
return preg_match((binary) "/^$l1$/s", (binary) $l2);
return preg_match(b'/^'. (binary) $l1 . b'$/s', (binary) $l2);
} else { } else {
return !strcmp((binary) $l1, (binary) $l2); return !strcmp((binary) $l1, (binary) $l2);
} }

Loading…
Cancel
Save