]> granicus.if.org Git - php/commitdiff
add tests for proc_open() and pipes
authorAntony Dovgal <tony2001@php.net>
Thu, 18 Dec 2014 13:02:49 +0000 (16:02 +0300)
committerAntony Dovgal <tony2001@php.net>
Fri, 29 May 2015 14:35:12 +0000 (17:35 +0300)
ext/standard/tests/general_functions/proc_open_pipes.inc [new file with mode: 0644]
ext/standard/tests/general_functions/proc_open_pipes1.phpt [new file with mode: 0644]
ext/standard/tests/general_functions/proc_open_pipes2.phpt [new file with mode: 0644]
ext/standard/tests/general_functions/proc_open_pipes3.phpt [new file with mode: 0644]

diff --git a/ext/standard/tests/general_functions/proc_open_pipes.inc b/ext/standard/tests/general_functions/proc_open_pipes.inc
new file mode 100644 (file)
index 0000000..0d98946
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+function create_sleep_script()
+{
+       $fname = dirname(__FILE__) . DIRECTORY_SEPARATOR . "proc_open_pipes_sleep.php";
+
+       if (!file_exists($fname)) {
+               file_put_contents($fname, "<?php\nsleep(1);\n");
+       }
+
+       return $fname;
+}
+
+function unlink_sleep_script()
+{
+       $fname = dirname(__FILE__) . DIRECTORY_SEPARATOR . "proc_open_pipes_sleep.php";
+
+       if (file_exists($fname)) {
+               unlink($fname);
+       }
+}
+
diff --git a/ext/standard/tests/general_functions/proc_open_pipes1.phpt b/ext/standard/tests/general_functions/proc_open_pipes1.phpt
new file mode 100644 (file)
index 0000000..f6472e2
--- /dev/null
@@ -0,0 +1,86 @@
+--TEST--
+proc_open() with > 16 pipes 
+--FILE--
+<?php
+
+include dirname(__FILE__) . "/proc_open_pipes.inc";
+
+for ($i = 3; $i<= 30; $i++) {
+       $spec[$i] = array('pipe', 'w');
+}
+
+$php = getenv("TEST_PHP_EXECUTABLE");
+$callee = create_sleep_script();
+proc_open("$php $callee", $spec, $pipes);
+
+var_dump(count($spec));
+var_dump($pipes);
+
+?>
+--CLEAN--
+<?php
+include dirname(__FILE__) . "/proc_open_pipes.inc";
+
+unlink_sleep_script();
+
+?>
+--EXPECTF--
+int(28)
+array(28) {
+  [3]=>
+  resource(%d) of type (Unknown)
+  [4]=>
+  resource(%d) of type (Unknown)
+  [5]=>
+  resource(%d) of type (Unknown)
+  [6]=>
+  resource(%d) of type (Unknown)
+  [7]=>
+  resource(%d) of type (Unknown)
+  [8]=>
+  resource(%d) of type (Unknown)
+  [9]=>
+  resource(%d) of type (Unknown)
+  [10]=>
+  resource(%d) of type (Unknown)
+  [11]=>
+  resource(%d) of type (Unknown)
+  [12]=>
+  resource(%d) of type (Unknown)
+  [13]=>
+  resource(%d) of type (Unknown)
+  [14]=>
+  resource(%d) of type (Unknown)
+  [15]=>
+  resource(%d) of type (Unknown)
+  [16]=>
+  resource(%d) of type (Unknown)
+  [17]=>
+  resource(%d) of type (Unknown)
+  [18]=>
+  resource(%d) of type (Unknown)
+  [19]=>
+  resource(%d) of type (Unknown)
+  [20]=>
+  resource(%d) of type (Unknown)
+  [21]=>
+  resource(%d) of type (Unknown)
+  [22]=>
+  resource(%d) of type (Unknown)
+  [23]=>
+  resource(%d) of type (Unknown)
+  [24]=>
+  resource(%d) of type (Unknown)
+  [25]=>
+  resource(%d) of type (Unknown)
+  [26]=>
+  resource(%d) of type (Unknown)
+  [27]=>
+  resource(%d) of type (Unknown)
+  [28]=>
+  resource(%d) of type (Unknown)
+  [29]=>
+  resource(%d) of type (Unknown)
+  [30]=>
+  resource(%d) of type (Unknown)
+}
diff --git a/ext/standard/tests/general_functions/proc_open_pipes2.phpt b/ext/standard/tests/general_functions/proc_open_pipes2.phpt
new file mode 100644 (file)
index 0000000..b07a19e
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+proc_open() with no pipes 
+--FILE--
+<?php
+
+include dirname(__FILE__) . "/proc_open_pipes.inc";
+
+$spec = array();
+
+$php = getenv("TEST_PHP_EXECUTABLE");
+$callee = create_sleep_script();
+proc_open("$php $callee", $spec, $pipes);
+
+var_dump(count($spec));
+var_dump($pipes);
+
+?>
+--CLEAN--
+<?php
+include dirname(__FILE__) . "/proc_open_pipes.inc";
+
+unlink_sleep_script();
+
+?>
+--EXPECTF--
+int(0)
+array(0) {
+}
diff --git a/ext/standard/tests/general_functions/proc_open_pipes3.phpt b/ext/standard/tests/general_functions/proc_open_pipes3.phpt
new file mode 100644 (file)
index 0000000..2ddcd27
--- /dev/null
@@ -0,0 +1,64 @@
+--TEST--
+proc_open() with invalid pipes 
+--FILE--
+<?php
+
+include dirname(__FILE__) . "/proc_open_pipes.inc";
+
+for ($i = 3; $i<= 5; $i++) {
+       $spec[$i] = array('pipe', 'w');
+}
+
+$php = getenv("TEST_PHP_EXECUTABLE");
+$callee = create_sleep_script();
+
+$spec[$i] = array('pi');
+proc_open("$php $callee", $spec, $pipes);
+
+$spec[$i] = 1;
+proc_open("$php $callee", $spec, $pipes);
+
+$spec[$i] = array('pipe', "test");
+proc_open("$php $callee", $spec, $pipes);
+var_dump($pipes);
+
+$spec[$i] = array('file', "test", "z");
+proc_open("$php $callee", $spec, $pipes);
+var_dump($pipes);
+
+echo "END\n";
+?>
+--CLEAN--
+<?php
+include dirname(__FILE__) . "/proc_open_pipes.inc";
+
+unlink_sleep_script();
+
+?>
+--EXPECTF--
+Warning: proc_open(): pi is not a valid descriptor spec/mode in %s on line %d
+
+Warning: proc_open(): Descriptor item must be either an array or a File-Handle in %s on line %d
+array(4) {
+  [3]=>
+  resource(%d) of type (Unknown)
+  [4]=>
+  resource(%d) of type (Unknown)
+  [5]=>
+  resource(%d) of type (Unknown)
+  [6]=>
+  resource(%d) of type (Unknown)
+}
+
+Warning: proc_open(test): failed to open stream: %s in %s on line %d
+array(4) {
+  [3]=>
+  resource(%d) of type (Unknown)
+  [4]=>
+  resource(%d) of type (Unknown)
+  [5]=>
+  resource(%d) of type (Unknown)
+  [6]=>
+  resource(%d) of type (Unknown)
+}
+END