summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Beaver <cellog@php.net>2008-01-05 21:05:14 +0000
committerGreg Beaver <cellog@php.net>2008-01-05 21:05:14 +0000
commit32f4ff69b574a33fece08f8fc904be8e904cd3c1 (patch)
tree11f041104d0191184afc03c2d7853350542e30a0
parentd380d052af654ce1d66a10722336822e96d1a885 (diff)
downloadphp-git-32f4ff69b574a33fece08f8fc904be8e904cd3c1.tar.gz
implement --FILE_EXTERNAL-- section for using an external file as --FILE--, use CGI for --EXPECTHEADERS--, fix --POST_RAW--
-rwxr-xr-xrun-tests.php22
1 files changed, 18 insertions, 4 deletions
diff --git a/run-tests.php b/run-tests.php
index 1486bdc5de..a431e9494d 100755
--- a/run-tests.php
+++ b/run-tests.php
@@ -1004,7 +1004,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;
}
@@ -1030,7 +1030,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;
}
@@ -1038,6 +1038,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;
@@ -1063,7 +1074,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 ';
@@ -1333,12 +1344,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);