summaryrefslogtreecommitdiff
path: root/ext/curl/tests
diff options
context:
space:
mode:
Diffstat (limited to 'ext/curl/tests')
-rw-r--r--ext/curl/tests/bug46739.phpt3
-rw-r--r--ext/curl/tests/bug48207.phpt47
-rw-r--r--ext/curl/tests/curl_CURLOPT_READDATA.phpt44
-rw-r--r--ext/curl/tests/curl_close_basic.phpt19
-rw-r--r--ext/curl/tests/curl_copy_handle_basic.phpt30
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_001.phpt42
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_002.phpt49
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_004.phpt44
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_005.phpt52
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_006.phpt37
-rw-r--r--ext/curl/tests/curl_copy_handle_basic_007.phpt45
-rw-r--r--ext/curl/tests/curl_copy_handle_variation1.phpt32
-rw-r--r--ext/curl/tests/curl_copy_handle_variation2.phpt44
-rw-r--r--ext/curl/tests/curl_error_basic.phpt33
-rw-r--r--ext/curl/tests/curl_multi_close_basic.phpt19
-rw-r--r--ext/curl/tests/curl_multi_getcontent_basic3.phpt59
-rw-r--r--ext/curl/tests/curl_multi_getcontent_error1.phpt51
-rw-r--r--ext/curl/tests/curl_multi_getcontent_error2.phpt51
-rw-r--r--ext/curl/tests/curl_multi_getcontent_error3.phpt53
-rw-r--r--ext/curl/tests/curl_multi_getcontent_error4.phpt66
-rw-r--r--ext/curl/tests/curl_multi_init_basic.phpt31
-rw-r--r--ext/curl/tests/curl_multi_select_basic1.phpt27
-rw-r--r--ext/curl/tests/curl_setopt_CURLOPT_FOLLOWLOCATION_open_basedir.phpt22
-rw-r--r--ext/curl/tests/curl_setopt_CURLOPT_READFUNCTION.phpt54
-rw-r--r--ext/curl/tests/curl_setopt_array_basic.phpt55
-rw-r--r--ext/curl/tests/curl_setopt_basic001.phpt35
-rw-r--r--ext/curl/tests/curl_setopt_basic002.phpt50
-rw-r--r--ext/curl/tests/curl_setopt_basic003.phpt43
-rw-r--r--ext/curl/tests/curl_setopt_basic004.phpt44
-rw-r--r--ext/curl/tests/curl_setopt_error.phpt44
-rw-r--r--ext/curl/tests/curl_testdata1.txt1
-rw-r--r--ext/curl/tests/curl_testdata2.txt1
-rw-r--r--ext/curl/tests/curl_version_error.phpt32
-rw-r--r--ext/curl/tests/curl_version_variation1.phpt162
-rw-r--r--ext/curl/tests/curl_write_callback.phpt36
-rw-r--r--ext/curl/tests/curl_write_file.phpt38
-rw-r--r--ext/curl/tests/curl_write_return.phpt33
-rw-r--r--ext/curl/tests/curl_write_stdout.phpt30
-rw-r--r--ext/curl/tests/curl_writeheader_callback.phpt30
-rw-r--r--ext/curl/tests/responder/get.php3
40 files changed, 1588 insertions, 3 deletions
diff --git a/ext/curl/tests/bug46739.phpt b/ext/curl/tests/bug46739.phpt
index 52bfbc8ff..895bba755 100644
--- a/ext/curl/tests/bug46739.phpt
+++ b/ext/curl/tests/bug46739.phpt
@@ -5,9 +5,6 @@ Bug #46739 (array returned by curl_getinfo should contain content_type key)
if (!extension_loaded("curl")) {
exit("skip curl extension not loaded");
}
-if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
- exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
-}
?>
--FILE--
<?php
diff --git a/ext/curl/tests/bug48207.phpt b/ext/curl/tests/bug48207.phpt
new file mode 100644
index 000000000..b6caa618c
--- /dev/null
+++ b/ext/curl/tests/bug48207.phpt
@@ -0,0 +1,47 @@
+--TEST--
+Test curl_setopt() CURLOPT_FILE readonly file handle
+--CREDITS--
+Mark van der Velden
+#testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+/*
+ * Description : Adds a file which stores the received data from curl_exec();
+ * Source code : ext/curl/multi.c
+ * Test documentation: http://wiki.php.net/qa/temp/ext/curl
+ */
+
+// Figure out what handler to use
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+if(!empty($host)) {
+
+ // Use the set Environment variable
+ $url = "$host/get.php";
+
+} else {
+
+ // Create a temporary file for the test
+ $tempname = tempnam(sys_get_temp_dir(), 'CURL_HANDLE');
+ $url = 'file://'. $tempname;
+
+ // add the test data to the file
+ file_put_contents($tempname, "Hello World!\nHello World!");
+}
+
+
+$tempfile = tempnam(sys_get_temp_dir(), 'CURL_FILE_HANDLE');
+
+$ch = curl_init($url);
+$fp = fopen($tempfile, "r"); // Opening 'fubar' with the incorrect readonly flag
+curl_setopt($ch, CURLOPT_FILE, $fp);
+curl_exec($ch);
+curl_close($ch);
+is_file($tempfile) and @unlink($tempfile);
+isset($tempname) and is_file($tempname) and @unlink($tempname);
+?>
+--EXPECTF--
+Warning: curl_setopt(): the provided file handle is not writable in %s on line %d
+Hello World!
+Hello World!
diff --git a/ext/curl/tests/curl_CURLOPT_READDATA.phpt b/ext/curl/tests/curl_CURLOPT_READDATA.phpt
new file mode 100644
index 000000000..00f3ea95a
--- /dev/null
+++ b/ext/curl/tests/curl_CURLOPT_READDATA.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test CURLOPT_READDATA without a callback function
+--CREDITS--
+Mattijs Hoitink mattijshoitink@gmail.com
+#Testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+// The URL to POST to
+$url = getenv('PHP_CURL_HTTP_REMOTE_SERVER') . '/get.php?test=post';
+
+// Create a temporary file to read the data from
+$tempname = tempnam(sys_get_temp_dir(), 'CURL_DATA');
+$datalen = file_put_contents($tempname, "hello=world&smurf=blue");
+
+ob_start();
+
+$ch = curl_init($url);
+curl_setopt($ch, CURLOPT_URL, $url);
+curl_setopt($ch, CURLOPT_POST, true);
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+curl_setopt($ch, CURLOPT_READDATA, fopen($tempname, 'rb'));
+curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:', "Content-Length: {$datalen}"));
+
+if (false === $response = curl_exec($ch)) {
+ echo 'Error #' . curl_errno($ch) . ': ' . curl_error($ch);
+} else {
+ echo $response;
+}
+
+curl_close($ch);
+
+// Clean the temporary file
+@unlink($tempname);
+
+--EXPECT--
+array(2) {
+ ["hello"]=>
+ string(5) "world"
+ ["smurf"]=>
+ string(4) "blue"
+}
diff --git a/ext/curl/tests/curl_close_basic.phpt b/ext/curl/tests/curl_close_basic.phpt
new file mode 100644
index 000000000..9c01b02f7
--- /dev/null
+++ b/ext/curl/tests/curl_close_basic.phpt
@@ -0,0 +1,19 @@
+--TEST--
+curl_close
+--CREDITS--
+Stefan Koopmanschap <stefan@php.net>
+#testfest Utrecht 2009
+--SKIPIF--
+<?php
+if (!extension_loaded('curl')) print 'skip';
+?>
+--FILE--
+<?php
+$ch = curl_init();
+curl_close($ch);
+var_dump($ch);
+?>
+===DONE===
+--EXPECTF--
+resource(%d) of type (Unknown)
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_basic.phpt b/ext/curl/tests/curl_copy_handle_basic.phpt
new file mode 100644
index 000000000..1a6ff4169
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_basic.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test curl_copy_handle() function with basic functionality
+--CREDITS--
+Francesco Fullone ff@ideato.it
+#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+ if (!extension_loaded("curl")) exit("skip curl extension not loaded");
+?>
+--FILE--
+<?php
+echo "*** Testing curl_copy_handle(): basic ***\n";
+
+// create a new cURL resource
+$ch = curl_init();
+
+// set URL and other appropriate options
+curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/');
+curl_setopt($ch, CURLOPT_HEADER, 0);
+
+// copy the handle
+$ch2 = curl_copy_handle($ch);
+
+var_dump(curl_getinfo($ch) === curl_getinfo($ch2));
+?>
+===DONE===
+--EXPECTF--
+*** Testing curl_copy_handle(): basic ***
+bool(true)
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_basic_001.phpt b/ext/curl/tests/curl_copy_handle_basic_001.phpt
new file mode 100644
index 000000000..db4bf0233
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_basic_001.phpt
@@ -0,0 +1,42 @@
+--TEST--
+Test curl_copy_handle() with simple get
+--CREDITS--
+Rick Buitenman <rick@meritos.nl>
+#testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+ $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+ echo '*** Testing curl copy handle with simple GET ***' . "\n";
+
+ $url = "{$host}/get.php?test=getpost&get_param=Hello%20World";
+ $ch = curl_init();
+
+ ob_start(); // start output buffering
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use
+
+ $copy = curl_copy_handle($ch);
+ curl_close($ch);
+
+ $curl_content = curl_exec($copy);
+ curl_close($copy);
+
+ var_dump( $curl_content );
+?>
+===DONE===
+--EXPECTF--
+*** Testing curl copy handle with simple GET ***
+string(106) "array(2) {
+ ["test"]=>
+ string(7) "getpost"
+ ["get_param"]=>
+ string(11) "Hello World"
+}
+array(0) {
+}
+"
+===DONE=== \ No newline at end of file
diff --git a/ext/curl/tests/curl_copy_handle_basic_002.phpt b/ext/curl/tests/curl_copy_handle_basic_002.phpt
new file mode 100644
index 000000000..8a3582384
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_basic_002.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Test curl_copy_handle() with simple POST
+--CREDITS--
+Rick Buitenman <rick@meritos.nl>
+#testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+ $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+ echo '*** Testing curl copy handle with simple POST ***' . "\n";
+
+ $url = "{$host}/get.php?test=getpost";
+ $ch = curl_init();
+
+ ob_start(); // start output buffering
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, "Hello=World&Foo=Bar&Person=John%20Doe");
+ curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use
+
+ $copy = curl_copy_handle($ch);
+ curl_close($ch);
+
+ $curl_content = curl_exec($copy);
+ curl_close($copy);
+
+ var_dump( $curl_content );
+?>
+===DONE===
+--XFAIL--
+This test fails, the copy seems to be missing the CURLOPT_POSTFIELDS after the original is closed
+--EXPECTF--
+*** Testing curl copy handle with simple POST ***
+string(163) "array(1) {
+ ["test"]=>
+ string(7) "getpost"
+}
+array(3) {
+ ["Hello"]=>
+ string(5) "World"
+ ["Foo"]=>
+ string(3) "Bar"
+ ["Person"]=>
+ string(8) "John Doe"
+}
+"
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_basic_004.phpt b/ext/curl/tests/curl_copy_handle_basic_004.phpt
new file mode 100644
index 000000000..2b75eb6a4
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_basic_004.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test curl_copy_handle() after exec()
+--CREDITS--
+Rick Buitenman <rick@meritos.nl>
+#testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+ $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+ echo '*** Test curl_copy_handle() after exec() ***' . "\n";
+
+ $url = "{$host}/get.php?test=getpost&get_param=Hello%20World";
+ $ch = curl_init();
+
+ ob_start(); // start output buffering
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use
+
+
+ $curl_content = curl_exec($ch);
+ $copy = curl_copy_handle($ch);
+ curl_close($ch);
+
+ $curl_content_copy = curl_exec($copy);
+ curl_close($copy);
+
+ var_dump( $curl_content_copy );
+?>
+===DONE===
+--EXPECTF--
+*** Test curl_copy_handle() after exec() ***
+string(106) "array(2) {
+ ["test"]=>
+ string(7) "getpost"
+ ["get_param"]=>
+ string(11) "Hello World"
+}
+array(0) {
+}
+"
+===DONE=== \ No newline at end of file
diff --git a/ext/curl/tests/curl_copy_handle_basic_005.phpt b/ext/curl/tests/curl_copy_handle_basic_005.phpt
new file mode 100644
index 000000000..dcc7e47af
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_basic_005.phpt
@@ -0,0 +1,52 @@
+--TEST--
+Test curl_copy_handle() after exec() with POST
+--CREDITS--
+Rick Buitenman <rick@meritos.nl>
+#testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+ $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+ echo '*** Test curl_copy_handle() after exec() with POST ***' . "\n";
+
+ $url = "{$host}/get.php?test=getpost";
+ $ch = curl_init();
+
+ ob_start(); // start output buffering
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, "Hello=World&Foo=Bar&Person=John%20Doe");
+ curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use
+
+
+ $curl_content = curl_exec($ch);
+ $copy = curl_copy_handle($ch);
+ curl_close($ch);
+
+ $curl_content_copy = curl_exec($copy);
+ curl_close($copy);
+
+ var_dump( $curl_content_copy );
+?>
+===DONE===
+--XFAIL--
+This test fails, the output of the copy seems to be corrupted if the original is closed after exec()
+--EXPECTF--
+*** Test curl_copy_handle() after exec() with POST ***
+string(163) "array(1) {
+ ["test"]=>
+ string(7) "getpost"
+}
+array(3) {
+ ["Hello"]=>
+ string(5) "World"
+ ["Foo"]=>
+ string(3) "Bar"
+ ["Person"]=>
+ string(8) "John Doe"
+}
+"
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_basic_006.phpt b/ext/curl/tests/curl_copy_handle_basic_006.phpt
new file mode 100644
index 000000000..d2374c721
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_basic_006.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Test curl_copy_handle() with User Agent
+--CREDITS--
+Rick Buitenman <rick@meritos.nl>
+#testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+ $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+ echo '*** Testing curl copy handle with User Agent ***' . "\n";
+
+ $url = "{$host}/get.php?test=useragent";
+ $ch = curl_init();
+
+ ob_start(); // start output buffering
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_USERAGENT, 'cURL phpt');
+ curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use
+
+ $copy = curl_copy_handle($ch);
+
+ var_dump( curl_exec($ch) );
+ var_dump( curl_exec($copy) );
+
+ curl_close($ch); // can not close original handle before curl_exec($copy) since it causes char * inputs to be invalid (see also: http://curl.haxx.se/libcurl/c/curl_easy_duphandle.html)
+ curl_close($copy);
+
+?>
+===DONE===
+--EXPECTF--
+*** Testing curl copy handle with User Agent ***
+string(9) "cURL phpt"
+string(9) "cURL phpt"
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_basic_007.phpt b/ext/curl/tests/curl_copy_handle_basic_007.phpt
new file mode 100644
index 000000000..a51d9f6df
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_basic_007.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test curl_copy_handle() with simple POST
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+ $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+ echo '*** Testing curl copy handle with simple POST using array as arguments ***' . "\n";
+
+ $url = "{$host}/get.php?test=getpost";
+ $ch = curl_init();
+
+ ob_start(); // start output buffering
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, array("Hello" => "World", "Foo" => "Bar", "Person" => "John Doe"));
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); // Disable Expect: header (lighttpd does not support it :)
+ curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use
+
+ $copy = curl_copy_handle($ch);
+ curl_close($ch);
+
+ $curl_content = curl_exec($copy);
+ curl_close($copy);
+
+ var_dump( $curl_content );
+?>
+===DONE===
+--EXPECTF--
+*** Testing curl copy handle with simple POST using array as arguments ***
+string(163) "array(1) {
+ ["test"]=>
+ string(7) "getpost"
+}
+array(3) {
+ ["Hello"]=>
+ string(5) "World"
+ ["Foo"]=>
+ string(3) "Bar"
+ ["Person"]=>
+ string(8) "John Doe"
+}
+"
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_variation1.phpt b/ext/curl/tests/curl_copy_handle_variation1.phpt
new file mode 100644
index 000000000..da4522192
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_variation1.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test curl_copy_handle() change options in one handle
+--CREDITS--
+Francesco Fullone ff@ideato.it
+#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+ if (!extension_loaded("curl")) exit("skip curl extension not loaded");
+?>
+--FILE--
+<?php
+echo "*** Testing curl_copy_handle(): basic ***\n";
+
+// create a new cURL resource
+$ch = curl_init();
+
+// set URL and other appropriate options
+curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/');
+
+// copy the handle
+$ch2 = curl_copy_handle($ch);
+
+// change the CURLOPT_URL for the second handle
+curl_setopt($ch2, CURLOPT_URL, 'http://www.bar.com/');
+
+var_dump(curl_getinfo($ch) === curl_getinfo($ch2));
+?>
+===DONE===
+--EXPECTF--
+*** Testing curl_copy_handle(): basic ***
+bool(false)
+===DONE===
diff --git a/ext/curl/tests/curl_copy_handle_variation2.phpt b/ext/curl/tests/curl_copy_handle_variation2.phpt
new file mode 100644
index 000000000..924bf6a47
--- /dev/null
+++ b/ext/curl/tests/curl_copy_handle_variation2.phpt
@@ -0,0 +1,44 @@
+--TEST--
+Test curl_copy_handle() add options to the handles
+--CREDITS--
+Francesco Fullone ff@ideato.it
+#PHPTestFest Cesena Italia on 2009-06-20
+--SKIPIF--
+<?php
+ if (!extension_loaded("curl")) exit("skip curl extension not loaded");
+?>
+--COMMENT--
+the only way to test if a option is setten on a curl handle is using the curl_getinfo() function.
+but this can only check on a limited amount of options...
+--FILE--
+<?php
+echo "*** Testing curl_copy_handle(): add options after copy ***\n";
+
+// create a new cURL resource
+$ch = curl_init();
+
+// copy the handle
+$ch2 = curl_copy_handle($ch);
+var_dump(curl_getinfo($ch) === curl_getinfo($ch2));
+
+// add some CURLOPT to the second handle
+curl_setopt($ch2, CURLOPT_URL, 'http://www.example.com/');
+
+var_dump(curl_getinfo($ch) === curl_getinfo($ch2));
+
+// add same CURLOPT to the first handle
+curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/');
+var_dump(curl_getinfo($ch) === curl_getinfo($ch2));
+
+// change a CURLOPT in the second handle
+curl_setopt($ch2, CURLOPT_URL, 'http://www.bar.com/');
+var_dump(curl_getinfo($ch) === curl_getinfo($ch2));
+?>
+===DONE===
+--EXPECTF--
+*** Testing curl_copy_handle(): add options after copy ***
+bool(true)
+bool(false)
+bool(true)
+bool(false)
+===DONE===
diff --git a/ext/curl/tests/curl_error_basic.phpt b/ext/curl/tests/curl_error_basic.phpt
new file mode 100644
index 000000000..c9aa9ef8a
--- /dev/null
+++ b/ext/curl/tests/curl_error_basic.phpt
@@ -0,0 +1,33 @@
+--TEST--
+curl_error() function - basic test for curl_error using a fake url
+--CREDITS--
+Mattijs Hoitink mattijshoitink@gmail.com
+#Testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+/*
+ * Prototype: string curl_error(resource $ch)
+ * Description: Returns a clear text error message for the last cURL operation.
+ * Source: ext/curl/interface.c
+ * Documentation: http://wiki.php.net/qa/temp/ext/curl
+ */
+
+// Fake URL to trigger an error
+$url = "fakeURL";
+
+echo "== Testing curl_error with a fake URL ==\n";
+
+// cURL handler
+$ch = curl_init($url);
+
+ob_start(); // start output buffering
+curl_exec($ch);
+echo "Error: " . curl_error($ch);
+curl_close($ch);
+
+?>
+--EXPECT--
+== Testing curl_error with a fake URL ==
+Error: Couldn't resolve host 'fakeURL'
diff --git a/ext/curl/tests/curl_multi_close_basic.phpt b/ext/curl/tests/curl_multi_close_basic.phpt
new file mode 100644
index 000000000..28865bc86
--- /dev/null
+++ b/ext/curl/tests/curl_multi_close_basic.phpt
@@ -0,0 +1,19 @@
+--TEST--
+curl_multi_close
+--CREDITS--
+Stefan Koopmanschap <stefan@php.net>
+#testfest Utrecht 2009
+--SKIPIF--
+<?php
+if (!extension_loaded('curl')) print 'skip';
+?>
+--FILE--
+<?php
+$ch = curl_multi_init();
+curl_multi_close($ch);
+var_dump($ch);
+?>
+===DONE===
+--EXPECTF--
+resource(%d) of type (Unknown)
+===DONE===
diff --git a/ext/curl/tests/curl_multi_getcontent_basic3.phpt b/ext/curl/tests/curl_multi_getcontent_basic3.phpt
new file mode 100644
index 000000000..1434c58d0
--- /dev/null
+++ b/ext/curl/tests/curl_multi_getcontent_basic3.phpt
@@ -0,0 +1,59 @@
+--TEST--
+Curl_multi_getcontent() basic test with different sources (local file/http)
+--CREDITS--
+Rein Velt (rein@velt.org)
+#TestFest Utrecht 20090509
+--SKIPIF--
+<?php
+if (!extension_loaded('curl')) print 'skip';
+?>
+--FILE--
+<?php
+ //CURL_MULTI_GETCONTENT TEST
+
+ //CREATE RESOURCES
+ $ch1=curl_init();
+ $ch2=curl_init();
+
+ //SET URL AND OTHER OPTIONS
+ curl_setopt($ch1, CURLOPT_URL, "http://php.net/robots.txt");
+ curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata2.txt");
+ curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
+
+ //CREATE MULTIPLE CURL HANDLE
+ $mh=curl_multi_init();
+
+ //ADD THE 2 HANDLES
+ curl_multi_add_handle($mh,$ch1);
+ curl_multi_add_handle($mh,$ch2);
+
+ //EXECUTE
+ $running=0;
+ do {
+ curl_multi_exec($mh,$running);
+ } while ($running>0);
+
+ $results1=curl_multi_getcontent($ch1);
+ $results2=curl_multi_getcontent($ch2);
+
+ //CLOSE
+ curl_multi_remove_handle($mh,$ch1);
+ curl_multi_remove_handle($mh,$ch2);
+ curl_multi_close($mh);
+
+ echo $results1;
+ echo $results2;
+
+?>
+--EXPECT--
+User-agent: *
+Disallow: /backend/
+Disallow: /distributions/
+Disallow: /stats/
+Disallow: /source.php
+Disallow: /search.php
+Disallow: /mod.php
+Disallow: /manual/add-note.php
+CURL2
+
diff --git a/ext/curl/tests/curl_multi_getcontent_error1.phpt b/ext/curl/tests/curl_multi_getcontent_error1.phpt
new file mode 100644
index 000000000..88de0d7d3
--- /dev/null
+++ b/ext/curl/tests/curl_multi_getcontent_error1.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Curl_multi_getcontent() error test
+--CREDITS--
+Rein Velt (rein@velt.org)
+#TestFest Utrecht 20090509
+--SKIPIF--
+<?php
+if (!extension_loaded('curl')) print 'skip';
+?>
+--FILE--
+<?php
+ //CURL_MULTI_GETCONTENT TEST
+
+ //CREATE RESOURCES
+ $ch1=curl_init();
+ $ch2=curl_init();
+
+ //SET URL AND OTHER OPTIONS
+ curl_setopt($ch1, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata1.txt");
+ curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata2.txt");
+ curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
+
+ //CREATE MULTIPLE CURL HANDLE
+ $mh=curl_multi_init();
+
+ //ADD THE 2 HANDLES
+ curl_multi_add_handle($mh,$ch1);
+ curl_multi_add_handle($mh,$ch2);
+
+ //EXECUTE
+ $running=0;
+ do {
+ curl_multi_exec($mh,$running);
+ } while ($running>0);
+
+ $results1=curl_multi_getcontent(); //no parameter
+ $results2=curl_multi_getcontent($ch2);
+
+ //CLOSE
+ curl_multi_remove_handle($mh,$ch1);
+ curl_multi_remove_handle($mh,$ch2);
+ curl_multi_close($mh);
+
+ echo $results1;
+ echo $results2;
+
+?>
+--EXPECTF--
+Warning: curl_multi_getcontent() expects exactly 1 parameter, 0 given in %s on line %d
+CURL2
diff --git a/ext/curl/tests/curl_multi_getcontent_error2.phpt b/ext/curl/tests/curl_multi_getcontent_error2.phpt
new file mode 100644
index 000000000..ad837d828
--- /dev/null
+++ b/ext/curl/tests/curl_multi_getcontent_error2.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Curl_multi_getcontent() error test
+--CREDITS--
+Rein Velt (rein@velt.org)
+#TestFest Utrecht 20090509
+--SKIPIF--
+<?php
+if (!extension_loaded('curl')) print 'skip';
+?>
+--FILE--
+<?php
+ //CURL_MULTI_GETCONTENT TEST
+
+ //CREATE RESOURCES
+ $ch1=curl_init();
+ $ch2=curl_init();
+
+ //SET URL AND OTHER OPTIONS
+ curl_setopt($ch1, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata1.txt");
+ curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata2.txt");
+ curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
+
+ //CREATE MULTIPLE CURL HANDLE
+ $mh=curl_multi_init();
+
+ //ADD THE 2 HANDLES
+ curl_multi_add_handle($mh,$ch1);
+ curl_multi_add_handle($mh,$ch2);
+
+ //EXECUTE
+ $running=0;
+ do {
+ curl_multi_exec($mh,$running);
+ } while ($running>0);
+
+ $results1=curl_multi_getcontent($ch1,$ch2); //no parameter
+ $results2=curl_multi_getcontent($ch2);
+
+ //CLOSE
+ curl_multi_remove_handle($mh,$ch1);
+ curl_multi_remove_handle($mh,$ch2);
+ curl_multi_close($mh);
+
+ echo $results1;
+ echo $results2;
+
+?>
+--EXPECTF--
+Warning: curl_multi_getcontent() expects exactly 1 parameter, 2 given in %s on line %d
+CURL2
diff --git a/ext/curl/tests/curl_multi_getcontent_error3.phpt b/ext/curl/tests/curl_multi_getcontent_error3.phpt
new file mode 100644
index 000000000..6ffc6b736
--- /dev/null
+++ b/ext/curl/tests/curl_multi_getcontent_error3.phpt
@@ -0,0 +1,53 @@
+--TEST--
+Curl_multi_getcontent() error test
+--CREDITS--
+Rein Velt (rein@velt.org)
+#TestFest Utrecht 20090509
+--SKIPIF--
+<?php
+if (!extension_loaded('curl')) print 'skip';
+?>
+--FILE--
+<?php
+ //CURL_MULTI_GETCONTENT TEST
+
+ //CREATE RESOURCES
+ $ch1=curl_init();
+ $ch2=curl_init();
+
+ //SET URL AND OTHER OPTIONS
+ curl_setopt($ch1, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata1.txt");
+ curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata2.txt");
+ curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
+
+ //CREATE MULTIPLE CURL HANDLE
+ $mh=curl_multi_init();
+
+ //ADD THE 2 HANDLES
+ curl_multi_add_handle($mh,$ch1);
+ curl_multi_add_handle($mh,$ch2);
+
+ //EXECUTE
+ $running=0;
+ do {
+ curl_multi_exec($mh,$running);
+ } while ($running>0);
+
+ $ch1="string";
+
+ $results1=curl_multi_getcontent($ch1); //incorrect parameter type
+ $results2=curl_multi_getcontent($ch2);
+
+ //CLOSE
+ //curl_multi_remove_handle($mh,$ch1);
+ curl_multi_remove_handle($mh,$ch2);
+ curl_multi_close($mh);
+
+ echo $results1;
+ echo $results2;
+
+?>
+--EXPECTF--
+Warning: curl_multi_getcontent() expects parameter 1 to be resource, %unicode_string_optional% given in %s on line %d
+CURL2
diff --git a/ext/curl/tests/curl_multi_getcontent_error4.phpt b/ext/curl/tests/curl_multi_getcontent_error4.phpt
new file mode 100644
index 000000000..68928647a
--- /dev/null
+++ b/ext/curl/tests/curl_multi_getcontent_error4.phpt
@@ -0,0 +1,66 @@
+--TEST--
+Curl_multi_getcontent() error test with undefined handle
+--CREDITS--
+Rein Velt (rein@velt.org)
+#TestFest Utrecht 20090509
+--SKIPIF--
+<?php
+if (!extension_loaded('curl')) print 'skip';
+?>
+--FILE--
+<?php
+ //CURL_MULTI_GETCONTENT TEST
+
+ //CREATE RESOURCES
+ //$ch1=undefined;
+ $ch2=curl_init();
+
+ //SET URL AND OTHER OPTIONS
+ curl_setopt($ch1, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata1.txt");
+ curl_setopt($ch2, CURLOPT_URL, "file://".dirname(__FILE__)."/curl_testdata2.txt");
+ curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
+
+ //CREATE MULTIPLE CURL HANDLE
+ $mh=curl_multi_init();
+
+ //ADD THE 2 HANDLES
+ curl_multi_add_handle($mh,$ch1);
+ curl_multi_add_handle($mh,$ch2);
+
+ //EXECUTE
+ $running=0;
+ do {
+ curl_multi_exec($mh,$running);
+ } while ($running>0);
+
+
+ $results1=curl_multi_getcontent($ch1); //incorrect parameter type
+ $results2=curl_multi_getcontent($ch2);
+
+ //CLOSE
+ //curl_multi_remove_handle($mh,$ch1);
+ curl_multi_remove_handle($mh,$ch2);
+ curl_multi_close($mh);
+
+ echo $results1;
+ echo $results2;
+
+?>
+--EXPECTF--
+Notice: Undefined variable: ch1 in %s on line %d
+
+Warning: curl_setopt() expects parameter 1 to be resource, null given in %s on line %d
+
+Notice: Undefined variable: ch1 in %s on line %d
+
+Warning: curl_setopt() expects parameter 1 to be resource, null given in %s on line %d
+
+Notice: Undefined variable: ch1 in %s on line %d
+
+Warning: curl_multi_add_handle() expects parameter 2 to be resource, null given in %s on line %d
+
+Notice: Undefined variable: ch1 in %s on line %d
+
+Warning: curl_multi_getcontent() expects parameter 1 to be resource, null given in %s on line %d
+CURL2
diff --git a/ext/curl/tests/curl_multi_init_basic.phpt b/ext/curl/tests/curl_multi_init_basic.phpt
new file mode 100644
index 000000000..0fd865df7
--- /dev/null
+++ b/ext/curl/tests/curl_multi_init_basic.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Test curl_multi_init()
+--CREDITS--
+Mark van der Velden
+#testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+/* Prototype : resource curl_multi_init(void)
+ * Description : Returns a new cURL multi handle
+ * Source code : ext/curl/multi.c
+ * Test documentation: http://wiki.php.net/qa/temp/ext/curl
+ */
+
+// start testing
+echo "*** Testing curl_multi_init(void); ***\n";
+
+//create the multiple cURL handle
+$mh = curl_multi_init();
+var_dump($mh);
+
+curl_multi_close($mh);
+var_dump($mh);
+?>
+===DONE===
+--EXPECTF--
+*** Testing curl_multi_init(void); ***
+resource(%d) of type (curl_multi)
+resource(%d) of type (Unknown)
+===DONE===
diff --git a/ext/curl/tests/curl_multi_select_basic1.phpt b/ext/curl/tests/curl_multi_select_basic1.phpt
new file mode 100644
index 000000000..7ae812412
--- /dev/null
+++ b/ext/curl/tests/curl_multi_select_basic1.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test curl_multi_select()
+--CREDITS--
+Ivo Jansch <ivo@ibuildings.com>
+#testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+/* Prototype : resource curl_multi_select($mh, $timeout=1.0])
+ * Description : Get all the sockets associated with the cURL extension, which can then be
+ * "selected"
+ * Source code : ?
+ * Test documentation: http://wiki.php.net/qa/temp/ext/curl
+ */
+
+
+//create the multiple cURL handle
+$mh = curl_multi_init();
+echo curl_multi_select($mh)."\n";
+
+curl_multi_close($mh);
+?>
+===DONE===
+--EXPECTF--
+%r(0|-1)%r
+===DONE===
diff --git a/ext/curl/tests/curl_setopt_CURLOPT_FOLLOWLOCATION_open_basedir.phpt b/ext/curl/tests/curl_setopt_CURLOPT_FOLLOWLOCATION_open_basedir.phpt
new file mode 100644
index 000000000..68465e6da
--- /dev/null
+++ b/ext/curl/tests/curl_setopt_CURLOPT_FOLLOWLOCATION_open_basedir.phpt
@@ -0,0 +1,22 @@
+--TEST--
+CURLOPT_FOLLOWLOCATION case check safe_mode and open_basedir
+--CREDITS--
+WHITE new media architects - Dennis
+--INI--
+open_basedir = DIRECTORY_SEPARATOR."tmp";
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) print "skip cURL not loaded";
+?>
+--FILE--
+<?php
+print (ini_get("OPEN_BASEDIR"));
+$ch = curl_init();
+$succes = curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
+curl_close($ch);
+var_dump($succes);
+?>
+--EXPECTF--
+Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when %r(in safe_mode or an )?%ropen_basedir is set in %s.php on line %d
+bool(false)
+
diff --git a/ext/curl/tests/curl_setopt_CURLOPT_READFUNCTION.phpt b/ext/curl/tests/curl_setopt_CURLOPT_READFUNCTION.phpt
new file mode 100644
index 000000000..9de2c0fab
--- /dev/null
+++ b/ext/curl/tests/curl_setopt_CURLOPT_READFUNCTION.phpt
@@ -0,0 +1,54 @@
+--TEST--
+cURL option CURLOPT_READFUNCTION
+--CREDITS--
+WHITE new media architects - Jeroen Vermeulen
+#testfest Utrecht 2009
+--SKIPIF--
+<?php
+if (!extension_loaded("curl")) print "skip cURL extension not loaded";
+?>
+--FILE--
+<?php
+function custom_readfunction($oCurl, $hReadHandle, $iMaxOut)
+{
+ $sData = fread($hReadHandle,$iMaxOut-10); # -10 to have space to add "custom:"
+ if (!empty($sData))
+ {
+ $sData = "custom:".$sData;
+ }
+ return $sData;
+}
+
+$sFileBase = dirname(__FILE__).DIRECTORY_SEPARATOR.'curl_opt_CURLOPT_READFUNCTION';
+$sReadFile = $sFileBase.'_in.tmp';
+$sWriteFile = $sFileBase.'_out.tmp';
+$sWriteUrl = 'file://'.$sWriteFile;
+
+file_put_contents($sReadFile,'contents of tempfile');
+$hReadHandle = fopen($sReadFile, 'r');
+
+$oCurl = curl_init();
+curl_setopt($oCurl, CURLOPT_URL, $sWriteUrl);
+curl_setopt($oCurl, CURLOPT_UPLOAD, 1);
+curl_setopt($oCurl, CURLOPT_READFUNCTION, "custom_readfunction" );
+curl_setopt($oCurl, CURLOPT_INFILE, $hReadHandle );
+curl_exec($oCurl);
+curl_close($oCurl);
+
+fclose ($hReadHandle);
+
+$sOutput = file_get_contents($sWriteFile);
+var_dump($sOutput);
+?>
+===DONE===
+--CLEAN--
+<?php
+$sFileBase = dirname(__FILE__).DIRECTORY_SEPARATOR.'curl_opt_CURLOPT_READFUNCTION';
+$sReadFile = $sFileBase.'_in.tmp';
+$sWriteFile = $sFileBase.'_out.tmp';
+unlink($sReadFile);
+unlink($sWriteFile);
+?>
+--EXPECT--
+string(27) "custom:contents of tempfile"
+===DONE===
diff --git a/ext/curl/tests/curl_setopt_array_basic.phpt b/ext/curl/tests/curl_setopt_array_basic.phpt
new file mode 100644
index 000000000..877079bca
--- /dev/null
+++ b/ext/curl/tests/curl_setopt_array_basic.phpt
@@ -0,0 +1,55 @@
+--TEST--
+curl_setopt_array() function - tests setting multiple cURL options with curl_setopt_array()
+--CREDITS--
+Mattijs Hoitink mattijshoitink@gmail.com
+#Testfest Utrecht 2009
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+/*
+ * Prototype: bool curl_setopt_array(resource $ch, array $options)
+ * Description: Sets multiple options for a cURL session.
+ * Source: ext/curl/interface.c
+ * Documentation: http://wiki.php.net/qa/temp/ext/curl
+ */
+
+// Figure out what handler to use
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+if (!empty($host)) {
+ // Use the set Environment variable
+ $url = "{$host}/get.php?test=get";
+} else {
+ // Create a temporary file for the test
+ $tempname = tempnam(sys_get_temp_dir(), 'CURL_HANDLE');
+ $url = 'file://'. $tempname;
+ // add the test data to the file
+ file_put_contents($tempname, "Hello World!\nHello World!");
+}
+
+// Start the test
+echo '== Starting test curl_setopt_array($ch, $options); ==' . "\n";
+
+// curl handler
+$ch = curl_init();
+
+// options for the curl handler
+$options = array (
+ CURLOPT_URL => $url,
+ CURLOPT_RETURNTRANSFER => 1
+);
+
+ob_start(); // start output buffering
+
+curl_setopt_array($ch, $options);
+$returnContent = curl_exec($ch);
+curl_close($ch);
+
+var_dump($returnContent);
+
+?>
+--EXPECT--
+== Starting test curl_setopt_array($ch, $options); ==
+string(25) "Hello World!
+Hello World!"
+
diff --git a/ext/curl/tests/curl_setopt_basic001.phpt b/ext/curl/tests/curl_setopt_basic001.phpt
new file mode 100644
index 000000000..4167c0532
--- /dev/null
+++ b/ext/curl/tests/curl_setopt_basic001.phpt
@@ -0,0 +1,35 @@
+--TEST--
+curl_setopt basic tests.
+--CREDITS--
+Paul Sohier
+#phptestfest utrecht
+--INI--
+safe_mode=On
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+// start testing
+echo "*** Testing curl_setopt with CURLOPT_FOLLOWLOCATION in safemode\n";
+
+$url = "{$host}/";
+$ch = curl_init();
+
+ob_start(); // start output buffering
+curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
+
+$curl_content = curl_exec($ch);
+curl_close($ch);
+
+var_dump( $curl_content );
+?>
+--EXPECTF--
+PHP Warning: Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
+*** Testing curl_setopt with CURLOPT_FOLLOWLOCATION in safemode
+
+Warning: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in %s on line %d
+bool(false)
+
diff --git a/ext/curl/tests/curl_setopt_basic002.phpt b/ext/curl/tests/curl_setopt_basic002.phpt
new file mode 100644
index 000000000..051703fb0
--- /dev/null
+++ b/ext/curl/tests/curl_setopt_basic002.phpt
@@ -0,0 +1,50 @@
+--TEST--
+curl_setopt basic tests with CURLOPT_STDERR.
+--CREDITS--
+Paul Sohier
+#phptestfest utrecht
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+// start testing
+echo "*** Testing curl_setopt with CURLOPT_STDERR\n";
+
+$temp_file = tempnam(sys_get_temp_dir(), 'CURL_STDERR');
+
+$handle = fopen($temp_file, 'w');
+
+$url = "{$host}/";
+$ch = curl_init();
+
+curl_setopt($ch, CURLOPT_VERBOSE, 1);
+curl_setopt($ch, CURLOPT_STDERR, $handle);
+$curl_content = curl_exec($ch);
+
+fclose($handle);
+unset($handle);
+var_dump( file_get_contents($temp_file) );
+@unlink($temp_file);
+
+ob_start(); // start output buffering
+$handle = fopen($temp_file, 'w');
+curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use
+curl_setopt($ch, CURLOPT_STDERR, $handle);
+$data = curl_exec($ch);
+ob_end_clean();
+
+fclose($handle);
+unset($handle);
+var_dump( file_get_contents($temp_file) );
+@unlink($temp_file);
+
+curl_close($ch);
+
+?>
+--EXPECTF--
+*** Testing curl_setopt with CURLOPT_STDERR
+string(%d) "%S"
+string(%d) "%S"
diff --git a/ext/curl/tests/curl_setopt_basic003.phpt b/ext/curl/tests/curl_setopt_basic003.phpt
new file mode 100644
index 000000000..47ae0f773
--- /dev/null
+++ b/ext/curl/tests/curl_setopt_basic003.phpt
@@ -0,0 +1,43 @@
+--TEST--
+curl_setopt() call with CURLOPT_HTTPHEADER
+--CREDITS--
+Paul Sohier
+#phptestfest utrecht
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+// start testing
+echo "*** curl_setopt() call with CURLOPT_HTTPHEADER\n";
+
+$url = "{$host}/";
+$ch = curl_init();
+
+curl_setopt($ch, CURLOPT_HTTPHEADER, 1);
+
+$curl_content = curl_exec($ch);
+curl_close($ch);
+
+var_dump( $curl_content );
+
+$ch = curl_init();
+
+ob_start(); // start output buffering
+curl_setopt($ch, CURLOPT_HTTPHEADER, array());
+curl_setopt($ch, CURLOPT_URL, $host);
+
+$curl_content = curl_exec($ch);
+ob_end_clean();
+curl_close($ch);
+
+var_dump( $curl_content );
+?>
+--EXPECTF--
+*** curl_setopt() call with CURLOPT_HTTPHEADER
+
+Warning: curl_setopt(): You must pass either an object or an array with the CURLOPT_HTTPHEADER, CURLOPT_QUOTE, CURLOPT_HTTP200ALIASES and CURLOPT_POSTQUOTE arguments in %s on line %d
+bool(false)
+bool(true)
diff --git a/ext/curl/tests/curl_setopt_basic004.phpt b/ext/curl/tests/curl_setopt_basic004.phpt
new file mode 100644
index 000000000..63f956162
--- /dev/null
+++ b/ext/curl/tests/curl_setopt_basic004.phpt
@@ -0,0 +1,44 @@
+--TEST--
+curl_setopt() call with CURLOPT_RETURNTRANSFER
+--CREDITS--
+Paul Sohier
+#phptestfest utrecht
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+// start testing
+echo "*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 1\n";
+
+$url = "{$host}/";
+$ch = curl_init();
+
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+curl_setopt($ch, CURLOPT_URL, $url);
+
+$curl_content = curl_exec($ch);
+curl_close($ch);
+
+var_dump( $curl_content );
+
+echo "*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 0\n";
+
+$ch = curl_init();
+
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
+curl_setopt($ch, CURLOPT_URL, $url);
+ob_start();
+$curl_content = curl_exec($ch);
+ob_end_clean();
+curl_close($ch);
+
+var_dump( $curl_content );
+?>
+--EXPECTF--
+*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 1
+string(%d) "%a"
+*** curl_setopt() call with CURLOPT_RETURNTRANSFER set to 0
+bool(true)
diff --git a/ext/curl/tests/curl_setopt_error.phpt b/ext/curl/tests/curl_setopt_error.phpt
new file mode 100644
index 000000000..5489b34e2
--- /dev/null
+++ b/ext/curl/tests/curl_setopt_error.phpt
@@ -0,0 +1,44 @@
+--TEST--
+curl_setopt() basic parameter test
+--CREDITS--
+Paul Sohier
+#phptestfest utrecht
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+echo "*** curl_setopt() call with incorrect parameters\n";
+$ch = curl_init();
+curl_setopt();
+curl_setopt(false);
+
+curl_setopt($ch);
+curl_setopt($ch, false);
+curl_setopt($ch, -1);
+curl_setopt($ch, '');
+curl_setopt($ch, 1, false);
+
+curl_setopt(false, false, false);
+curl_setopt($ch, '', false);
+curl_setopt($ch, 1, '');
+curl_setopt($ch, -1, 0);
+?>
+--EXPECTF--
+*** curl_setopt() call with incorrect parameters
+
+Warning: curl_setopt() expects exactly 3 parameters, 0 given in %s on line %d
+
+Warning: curl_setopt() expects exactly 3 parameters, 1 given in %s on line %d
+
+Warning: curl_setopt() expects exactly 3 parameters, 1 given in %s on line %d
+
+Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d
+
+Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d
+
+Warning: curl_setopt() expects exactly 3 parameters, 2 given in %s on line %d
+
+Warning: curl_setopt() expects parameter 1 to be resource, boolean given in %s on line %d
+
+Warning: curl_setopt() expects parameter 2 to be long, %unicode_string_optional% given in %s on line %d
+
diff --git a/ext/curl/tests/curl_testdata1.txt b/ext/curl/tests/curl_testdata1.txt
new file mode 100644
index 000000000..dc1e44627
--- /dev/null
+++ b/ext/curl/tests/curl_testdata1.txt
@@ -0,0 +1 @@
+CURL1
diff --git a/ext/curl/tests/curl_testdata2.txt b/ext/curl/tests/curl_testdata2.txt
new file mode 100644
index 000000000..3b9f76f77
--- /dev/null
+++ b/ext/curl/tests/curl_testdata2.txt
@@ -0,0 +1 @@
+CURL2
diff --git a/ext/curl/tests/curl_version_error.phpt b/ext/curl/tests/curl_version_error.phpt
new file mode 100644
index 000000000..f9de8dd32
--- /dev/null
+++ b/ext/curl/tests/curl_version_error.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Test curl_version() function : error conditions
+--SKIPIF--
+<?php
+if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ die('skip - curl extension not available in this build');
+}
+?>
+--FILE--
+<?php
+
+/* Prototype : array curl_version ([ int $age ] )
+ * Description: Returns information about the cURL version.
+ * Source code: ext/curl/interface.c
+*/
+
+echo "*** Testing curl_version() : error conditions ***\n";
+
+echo "\n-- Testing curl_version() function with more than expected no. of arguments --\n";
+$extra_arg = 10;
+var_dump( curl_version(1, $extra_arg) );
+
+?>
+===Done===
+--EXPECTF--
+*** Testing curl_version() : error conditions ***
+
+-- Testing curl_version() function with more than expected no. of arguments --
+
+Warning: curl_version() expects at most 1 parameter, 2 given in %s on line %d
+NULL
+===Done===
diff --git a/ext/curl/tests/curl_version_variation1.phpt b/ext/curl/tests/curl_version_variation1.phpt
new file mode 100644
index 000000000..4b8676099
--- /dev/null
+++ b/ext/curl/tests/curl_version_variation1.phpt
@@ -0,0 +1,162 @@
+--TEST--
+Test curl_version() function : usage variations - test values for $ascii argument
+--SKIPIF--
+<?php
+if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
+ die('skip - curl extension not available in this build');
+}
+?>
+--FILE--
+<?php
+
+/* Prototype : array curl_version ([ int $age ] )
+ * Description: Returns information about the cURL version.
+ * Source code: ext/curl/interface.c
+*/
+
+echo "*** Testing curl_version() function: with unexpected inputs for 'age' argument ***\n";
+
+//get an unset variable
+$unset_var = 'string_val';
+unset($unset_var);
+
+//defining a class
+class sample {
+ public function __toString() {
+ return "sample object";
+ }
+}
+
+//getting the resource
+$file_handle = fopen(__FILE__, "r");
+
+// array with different values for $input
+$inputs = array (
+
+ // integer values
+ 0,
+ 1,
+ 255,
+ 256,
+ PHP_INT_MAX,
+ -PHP_INT_MAX,
+
+ // float values
+ 10.5,
+ -20.5,
+ 10.1234567e10,
+
+ // array values
+ array(),
+ array(0),
+ array(1, 2),
+
+ //string values
+ "ABC",
+ 'abc',
+ "2abc",
+
+ // boolean values
+ true,
+ false,
+ TRUE,
+ FALSE,
+
+ // null values
+ NULL,
+ null,
+
+ // objects
+ new sample(),
+
+ // resource
+ $file_handle,
+
+ // undefined variable
+ @$undefined_var,
+
+ // unset variable
+ @$unset_var
+);
+
+// loop through with each element of the $inputs array to test curl_version() function
+$count = 1;
+foreach($inputs as $input) {
+ echo "-- Iteration $count --\n";
+ var_dump( is_array(curl_version($input)) );
+ $count ++;
+}
+
+fclose($file_handle); //closing the file handle
+
+?>
+===Done===
+--EXPECTF--
+*** Testing curl_version() function: with unexpected inputs for 'age' argument ***
+-- Iteration 1 --
+bool(true)
+-- Iteration 2 --
+bool(true)
+-- Iteration 3 --
+bool(true)
+-- Iteration 4 --
+bool(true)
+-- Iteration 5 --
+bool(true)
+-- Iteration 6 --
+bool(true)
+-- Iteration 7 --
+bool(true)
+-- Iteration 8 --
+bool(true)
+-- Iteration 9 --
+bool(true)
+-- Iteration 10 --
+
+Warning: curl_version() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+-- Iteration 11 --
+
+Warning: curl_version() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+-- Iteration 12 --
+
+Warning: curl_version() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+-- Iteration 13 --
+
+Warning: curl_version() expects parameter 1 to be long, string given in %s on line %d
+bool(false)
+-- Iteration 14 --
+
+Warning: curl_version() expects parameter 1 to be long, string given in %s on line %d
+bool(false)
+-- Iteration 15 --
+
+Notice: A non well formed numeric value encountered in %s on line %d
+bool(true)
+-- Iteration 16 --
+bool(true)
+-- Iteration 17 --
+bool(true)
+-- Iteration 18 --
+bool(true)
+-- Iteration 19 --
+bool(true)
+-- Iteration 20 --
+bool(true)
+-- Iteration 21 --
+bool(true)
+-- Iteration 22 --
+
+Warning: curl_version() expects parameter 1 to be long, object given in %s on line %d
+bool(false)
+-- Iteration 23 --
+
+Warning: curl_version() expects parameter 1 to be long, resource given in %s on line %d
+bool(false)
+-- Iteration 24 --
+bool(true)
+-- Iteration 25 --
+bool(true)
+===Done===
diff --git a/ext/curl/tests/curl_write_callback.phpt b/ext/curl/tests/curl_write_callback.phpt
new file mode 100644
index 000000000..c0b733ee4
--- /dev/null
+++ b/ext/curl/tests/curl_write_callback.phpt
@@ -0,0 +1,36 @@
+--TEST--
+Test curl option CURLOPT_WRITEFUNCTION
+--CREDITS--
+Mathieu Kooiman <mathieuk@gmail.com>
+Dutch UG, TestFest 2009, Utrecht
+--DESCRIPTION--
+Writes the value 'test' to a temporary file. Use curl to access this file, passing the output into a callback. Tests the PHP_CURL_USER case in curl_write.
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+
+function curl_callback($curl_handle, $received_data)
+{
+ echo $received_data;
+ return strlen($received_data);
+}
+
+$log_file = tempnam(sys_get_temp_dir(), 'php-curl-test');
+
+$fp = fopen($log_file, 'w+');
+fwrite($fp, "test");
+fclose($fp);
+
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'curl_callback');
+curl_setopt($ch, CURLOPT_URL, 'file://' . $log_file);
+curl_exec($ch);
+curl_close($ch);
+
+// cleanup
+unlink($log_file);
+
+?>
+--EXPECT--
+test
diff --git a/ext/curl/tests/curl_write_file.phpt b/ext/curl/tests/curl_write_file.phpt
new file mode 100644
index 000000000..95d2b0ea4
--- /dev/null
+++ b/ext/curl/tests/curl_write_file.phpt
@@ -0,0 +1,38 @@
+--TEST--
+Test curl option CURLOPT_FILE
+--CREDITS--
+Mathieu Kooiman <mathieuk@gmail.com>
+Dutch UG, TestFest 2009, Utrecht
+--DESCRIPTION--
+Writes the value 'test' to a temporary file. Use curl to access this file and store the output in another temporary file. Tests the PHP_CURL_FILE case in curl_write().
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+
+$test_file = tempnam(sys_get_temp_dir(), 'php-curl-test');
+$log_file = tempnam(sys_get_temp_dir(), 'php-curl-test');
+
+$fp = fopen($log_file, 'w+');
+fwrite($fp, "test");
+fclose($fp);
+
+$testfile_fp = fopen($test_file, 'w+');
+
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_FILE, $testfile_fp);
+curl_setopt($ch, CURLOPT_URL, 'file://' . $log_file);
+curl_exec($ch);
+curl_close($ch);
+
+fclose($testfile_fp);
+
+echo file_get_contents($test_file);
+
+// cleanup
+unlink($test_file);
+unlink($log_file);
+
+?>
+--EXPECT--
+test
diff --git a/ext/curl/tests/curl_write_return.phpt b/ext/curl/tests/curl_write_return.phpt
new file mode 100644
index 000000000..1ddc55157
--- /dev/null
+++ b/ext/curl/tests/curl_write_return.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test curl option CURLOPT_RETURNTRANSFER
+--CREDITS--
+Mathieu Kooiman <mathieuk@gmail.com>
+Dutch UG, TestFest 2009, Utrecht
+--DESCRIPTION--
+Writes the value 'test' to a temporary file. Use curl to access this file and have it return the content from curl_exec(). Tests the PHP_CURL_RETURN case
+of curl_write().
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+
+$log_file = tempnam(sys_get_temp_dir(), 'php-curl-test');
+
+$fp = fopen($log_file, 'w+');
+fwrite($fp, "test");
+fclose($fp);
+
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+curl_setopt($ch, CURLOPT_URL, 'file://' . $log_file);
+$result = curl_exec($ch);
+curl_close($ch);
+
+echo $result;
+
+// cleanup
+unlink($log_file);
+
+?>
+--EXPECT--
+test
diff --git a/ext/curl/tests/curl_write_stdout.phpt b/ext/curl/tests/curl_write_stdout.phpt
new file mode 100644
index 000000000..893b27e7d
--- /dev/null
+++ b/ext/curl/tests/curl_write_stdout.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test curl option CURLOPT_FILE with STDOUT handle
+--CREDITS--
+Mathieu Kooiman <mathieuk@gmail.com>
+Dutch UG, TestFest 2009, Utrecht
+--DESCRIPTION--
+Writes the value 'test' to a temporary file. Use curl to access this file and store the output in another temporary file. Tests the PHP_CURL_FILE case in curl_write().
+--SKIPIF--
+<?php if (!extension_loaded("curl")) print "skip"; ?>
+--FILE--
+<?php
+
+$log_file = tempnam(sys_get_temp_dir(), 'php-curl-test');
+
+$fp = fopen($log_file, 'w+');
+fwrite($fp, "test");
+fclose($fp);
+
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_FILE, STDOUT);
+curl_setopt($ch, CURLOPT_URL, 'file://' . $log_file);
+curl_exec($ch);
+curl_close($ch);
+
+// cleanup
+unlink($log_file);
+
+?>
+--EXPECT--
+test
diff --git a/ext/curl/tests/curl_writeheader_callback.phpt b/ext/curl/tests/curl_writeheader_callback.phpt
new file mode 100644
index 000000000..ae0075c84
--- /dev/null
+++ b/ext/curl/tests/curl_writeheader_callback.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test curl option CURLOPT_HEADERFUNCTION
+--CREDITS--
+Mathieu Kooiman <mathieuk@gmail.com>
+Dutch UG, TestFest 2009, Utrecht
+--DESCRIPTION--
+Hit the host identified by PHP_CURL_HTTP_REMOTE_SERVER and determine that the headers are sent to the callback specified for CURLOPT_HEADERFUNCTION. Different test servers specified for PHP_CURL_HTTP_REMOTE_SERVER might return different sets of headers. Just test for HTTP/1.1 200 OK.
+--SKIPIF--
+<?php if (!extension_loaded("curl") || false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) print "skip"; ?>
+--FILE--
+<?php
+
+function curl_header_callback($curl_handle, $data)
+{
+ if (strtolower(substr($data,0, 4)) == 'http')
+ echo $data;
+}
+
+$host = getenv('PHP_CURL_HTTP_REMOTE_SERVER');
+
+$ch = curl_init();
+curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'curl_header_callback');
+curl_setopt($ch, CURLOPT_URL, $host);
+curl_exec($ch);
+curl_close($ch);
+
+?>
+--EXPECTF--
+HTTP/1.1 %d %s
diff --git a/ext/curl/tests/responder/get.php b/ext/curl/tests/responder/get.php
index 26dd5198a..e77faa57d 100644
--- a/ext/curl/tests/responder/get.php
+++ b/ext/curl/tests/responder/get.php
@@ -1,5 +1,8 @@
<?php
switch($_GET['test']) {
+ case 'post':
+ var_dump($_POST);
+ break;
case 'getpost':
var_dump($_GET);
var_dump($_POST);