summaryrefslogtreecommitdiff
path: root/run-tests.php
diff options
context:
space:
mode:
authorMichael Wallner <mike@php.net>2012-03-17 09:35:25 +0000
committerMichael Wallner <mike@php.net>2012-03-17 09:35:25 +0000
commita07759a01354b88a5807a023127da81dc1bc5ac9 (patch)
tree7ad85e714ca23c59927b8c43f87bfba7a7925144 /run-tests.php
parent1ef5fa8710e9e03f530a0a281efc8759b961a009 (diff)
downloadphp-git-a07759a01354b88a5807a023127da81dc1bc5ac9.tar.gz
add --PUT-- section support based on POST_RAW
Diffstat (limited to 'run-tests.php')
-rwxr-xr-xrun-tests.php44
1 files changed, 42 insertions, 2 deletions
diff --git a/run-tests.php b/run-tests.php
index 893eb9b616..4549659ce2 100755
--- a/run-tests.php
+++ b/run-tests.php
@@ -1342,8 +1342,8 @@ 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']) || !empty($section_text['EXPECTHEADERS'])) {
+ /* For GET/POST/PUT 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['PUT']) || !empty($section_text['COOKIE']) || !empty($section_text['EXPECTHEADERS'])) {
if (isset($php_cgi)) {
$old_php = $php;
$php = $php_cgi . ' -C ';
@@ -1718,6 +1718,46 @@ TEST $file
save_text($tmp_post, $request);
$cmd = "$php $pass_options $ini_settings -f \"$test_file\" 2>&1 < \"$tmp_post\"";
+ } elseif (array_key_exists('PUT', $section_text) && !empty($section_text['PUT'])) {
+
+ $post = trim($section_text['PUT']);
+ $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;
+ }
+
+ if ($started) {
+ $request .= "\n";
+ }
+
+ $started = true;
+ $request .= $line;
+ }
+
+ $env['CONTENT_LENGTH'] = strlen($request);
+ $env['REQUEST_METHOD'] = 'PUT';
+
+ if (empty($request)) {
+ if ($JUNIT) {
+ $JUNIT['test_total']++;
+ $JUNIT['test_error']++;
+ $JUNIT['result_xml'] .= '<testcase classname="'.$shortname.'" name="'.htmlspecialchars($tested, ENT_QUOTES).'" time="'.$test_execution_time.'">'."\n";
+ $JUNIT['result_xml'] .= '<error type="BORKED" message="empty $request" />'."\n";
+ $JUNIT['result_xml'] .= '</testcase>'."\n";
+ }
+ return 'BORKED';
+ }
+
+ save_text($tmp_post, $request);
+ $cmd = "$php $pass_options $ini_settings -f \"$test_file\" 2>&1 < \"$tmp_post\"";
+
} else if (array_key_exists('POST', $section_text) && !empty($section_text['POST'])) {
$post = trim($section_text['POST']);