summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-01-02 19:25:31 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2020-01-02 19:28:10 +0100
commitc39b45df72903ee2ba8999e9ed9586a0c0750f0f (patch)
tree0944f338e23125dbc28900c543c26150a342f44b
parent8abb2ced399c6869c89783425cfa9483b9ef60cb (diff)
downloadphp-git-c39b45df72903ee2ba8999e9ed9586a0c0750f0f.tar.gz
Add test case for bug #78883
The original test has been provided by divinity76.
-rw-r--r--ext/standard/tests/streams/bug78883.phpt34
1 files changed, 34 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..2dc1bc7d95
--- /dev/null
+++ b/ext/standard/tests/streams/bug78883.phpt
@@ -0,0 +1,34 @@
+--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 = 'cmd.exe "/c START ^"^" /WAIT ' . PHP_BINARY . ' -r ^"var_dump(fgets(STDIN));"';
+$proc = proc_open($cmd, $descriptorspec, $pipes);
+var_dump(is_resource($proc));
+$pid = proc_get_status($proc)['pid'];
+sleep(1);
+$bug_is_present = !proc_get_status($proc)['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 {$pid}");
+}
+fclose($pipes[0]);
+fclose($pipes[1]);
+proc_close($proc);
+var_dump($bug_is_present);
+?>
+--EXPECT--
+bool(true)
+bool(false)