1
0
mirror of https://github.com/php/php-src.git synced 2026-04-27 01:48:26 +02:00

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

This commit is contained in:
Greg Beaver
2008-01-05 21:05:06 +00:00
parent f316766afe
commit f61ba6295a
+18 -4
View File
@@ -1034,7 +1034,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;
}
@@ -1060,7 +1060,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;
}
@@ -1068,6 +1068,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;
@@ -1093,7 +1104,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 ';
@@ -1355,12 +1366,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);