summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2019-12-31 13:02:05 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2019-12-31 13:09:27 +0100
commit09e76cbe6d73399f3476942e7502de0bdbf65fa2 (patch)
tree1d7a95cd2441f718bf4febdca95751efbacabcb8
parent4f0e5c8dd95e813e054314d684812dc7ae37fb7d (diff)
downloadphp-git-09e76cbe6d73399f3476942e7502de0bdbf65fa2.tar.gz
Add test case for bug #78883
The actual test has been provided by divinity76.
-rw-r--r--ext/standard/tests/streams/bug78883.phpt33
1 files changed, 33 insertions, 0 deletions
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--
+<?php
+if (PHP_OS_FAMILY !== 'Windows') die('skip this test is for Windows platforms only');
+if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
+?>
+--FILE--
+<?php
+$descriptorspec = array(
+ 0 => 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)