From 09e76cbe6d73399f3476942e7502de0bdbf65fa2 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 31 Dec 2019 13:02:05 +0100 Subject: [PATCH] Add test case for bug #78883 The actual test has been provided by divinity76. --- ext/standard/tests/streams/bug78883.phpt | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 ext/standard/tests/streams/bug78883.phpt diff --git a/ext/standard/tests/streams/bug78883.phpt b/ext/standard/tests/streams/bug78883.phpt new file mode 100644 index 00000000000..591d6f19392 --- /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)