From: Christoph M. Becker Date: Tue, 31 Dec 2019 12:02:05 +0000 (+0100) Subject: Add test case for bug #78883 X-Git-Tag: php-7.4.7RC1~357 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=09e76cbe6d73399f3476942e7502de0bdbf65fa2;p=php Add test case for bug #78883 The actual test has been provided by divinity76. --- diff --git a/ext/standard/tests/streams/bug78883.phpt b/ext/standard/tests/streams/bug78883.phpt new file mode 100644 index 0000000000..591d6f1939 --- /dev/null +++ b/ext/standard/tests/streams/bug78883.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #78883 (fgets(STDIN) fails on Windows) +--SKIPIF-- + +--FILE-- + array("pipe", "rb"), + 1 => array("pipe", "wb"), + //2 => array("file", "stderr.txt", "ab") +); +$pipes = []; +$cmd = proc_open('cmd.exe "/c START ^"^" /WAIT php -r ^"var_dump(fgets(STDIN));"', $descriptorspec, $pipes); +var_dump(is_resource($cmd)); +$cmdpid = proc_get_status($cmd)['pid']; +sleep(1); +$bug_is_present = !proc_get_status($cmd)['running']; +if (!$bug_is_present) { + // if the bug is not present, it will hang waiting for stdin, + // thus cmd is still running and we should kill it + shell_exec("taskkill /T /F /PID {$cmdpid}"); +} +fclose($pipes[0]); +fclose($pipes[1]); +proc_close($cmd); +var_dump($bug_is_present); +?> +--EXPECT-- +bool(true) +bool(false)