diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/standard/tests/file/proc_open01.phpt | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/standard/tests/file/proc_open01.phpt')
-rw-r--r-- | ext/standard/tests/file/proc_open01.phpt | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/ext/standard/tests/file/proc_open01.phpt b/ext/standard/tests/file/proc_open01.phpt new file mode 100644 index 0000000..3348403 --- /dev/null +++ b/ext/standard/tests/file/proc_open01.phpt @@ -0,0 +1,69 @@ +--TEST-- +proc_open() regression test 1 (proc_open() leak) +--FILE-- +<?php +$pipes = array(1, 2, 3); +$orig_pipes = $pipes; +$php = getenv('TEST_PHP_EXECUTABLE'); +if ($php === false) { + die("no php executable defined"); +} +$proc = proc_open( + "$php -n", + array(0 => array('pipe', 'r'), 1 => array('pipe', 'w')), + $pipes, getcwd(), array(), array('binary_pipes' => true) +); +if ($proc === false) { + print "something went wrong.\n"; +} +var_dump($pipes); +stream_set_blocking($pipes[1], FALSE); +$test_string = b"yay!\n"; +fwrite($pipes[0], $test_string); +fflush($pipes[0]); +fclose($pipes[0]); +$cnt = ''; +$n=0; +for ($left = strlen($test_string); $left > 0;) { + if (++$n >1000) { + print "terminated after 1000 iterations\n"; + break; + } + $read_fds = array($pipes[1]); + $write_fds = NULL; + $exp_fds = NULL; + $retval = stream_select($read_fds, $write_fds, $exp_fds, 5); + if ($retval === false) { + print "select() failed\n"; + break; + } + if ($retval === 0) { + print "timed out\n"; + break; + } + $buf = fread($pipes[1], 1024); + $cnt .= $buf; + $left -= strlen($buf); +} +var_dump($cnt); +fclose($pipes[1]); +proc_close($proc); +var_dump($orig_pipes); +?> +--EXPECTF-- +array(2) { + [0]=> + resource(%d) of type (stream) + [1]=> + resource(%d) of type (stream) +} +%unicode|string%(5) "yay! +" +array(3) { + [0]=> + int(1) + [1]=> + int(2) + [2]=> + int(3) +} |