Browse Source

implement --FILE_EXTERNAL-- section for using an external file as --FILE--, use CGI for --EXPECTHEADERS--, fix --POST_RAW--

experimental/first_unicode_implementation
Greg Beaver 19 years ago
parent
commit
0e5371eea7
  1. 22
      run-tests.php

22
run-tests.php

@ -1056,7 +1056,7 @@ TEST $file
if (preg_match('/^--([_A-Z]+)--/', $line, $r)) {
$section = $r[1];
$section_text[$section] = '';
$secfile = $section == 'FILE' || $section == 'FILEEOF';
$secfile = $section == 'FILE' || $section == 'FILEEOF' || $section == 'FILE_EXTERNAL';
$secdone = false;
continue;
}
@ -1082,7 +1082,7 @@ TEST $file
$borked = false;
}
} else {
if (@count($section_text['FILE']) + @count($section_text['FILEEOF']) != 1) {
if (@count($section_text['FILE']) + @count($section_text['FILEEOF']) + @count($section_text['FILE_EXTERNAL']) != 1) {
$bork_info = "missing section --FILE--";
$borked = true;
}
@ -1090,6 +1090,17 @@ TEST $file
$section_text['FILE'] = preg_replace("/[\r\n]+$/", '', $section_text['FILEEOF']);
unset($section_text['FILEEOF']);
}
if (@count($section_text['FILE_EXTERNAL']) == 1) {
// don't allow tests to retrieve files from anywhere but this subdirectory
$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']);
unset($section_text['FILE_EXTERNAL']);
} else {
$bork_info = "could not load --FILE_EXTERNAL-- " . dirname($file) . '/' . trim($section_text['FILE_EXTERNAL']);
$borked = true;
}
}
if ((@count($section_text['EXPECT']) + @count($section_text['EXPECTF']) + @count($section_text['EXPECTREGEX'])) != 1) {
$bork_info = "missing section --EXPECT--, --EXPECTF-- or --EXPECTREGEX--";
$borked = true;
@ -1120,7 +1131,7 @@ TEST $file
$tested = trim($section_text['TEST']);
/* For GET/POST tests, check if cgi sapi is available and if it is, use it. */
if (!empty($section_text['GET']) || !empty($section_text['POST']) || !empty($section_text['POST_RAW']) || !empty($section_text['COOKIE'])) {
if (!empty($section_text['GET']) || !empty($section_text['POST']) || !empty($section_text['POST_RAW']) || !empty($section_text['COOKIE']) || !empty($section_text['EXPECTHEADERS'])) {
if (isset($php_cgi)) {
$old_php = $php;
$php = $php_cgi .' -C ';
@ -1418,12 +1429,15 @@ TEST $file
$raw_lines = explode("\n", $post);
$request = '';
$started = false;
foreach ($raw_lines as $line) {
if (empty($env['CONTENT_TYPE']) && preg_match('/^Content-Type:(.*)/i', $line, $res)) {
$env['CONTENT_TYPE'] = trim(str_replace("\r", '', $res[1]));
continue;
}
$request .= $line . "\n";
if ($started) $request .= "\n";
$started = true;
$request .= $line;
}
$env['CONTENT_LENGTH'] = strlen($request);

Loading…
Cancel
Save