diff options
author | Jani Taskinen <jani@php.net> | 2009-12-21 15:44:58 +0000 |
---|---|---|
committer | Jani Taskinen <jani@php.net> | 2009-12-21 15:44:58 +0000 |
commit | 4bba459d8f14ca77d89865c2b6e4c800b9d6c2e9 (patch) | |
tree | 960298c3ad3405e6c889a50f385f3fa921f62db3 /run-tests.php | |
parent | d0a956c2b72e5fd9956fb815606aa7139df40957 (diff) | |
download | php-git-4bba459d8f14ca77d89865c2b6e4c800b9d6c2e9.tar.gz |
- Sync (and KEEP it synced!)
Diffstat (limited to 'run-tests.php')
-rwxr-xr-x | run-tests.php | 58 |
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); } |