diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-01-02 19:25:31 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-01-02 19:28:10 +0100 |
commit | c39b45df72903ee2ba8999e9ed9586a0c0750f0f (patch) | |
tree | 0944f338e23125dbc28900c543c26150a342f44b | |
parent | 8abb2ced399c6869c89783425cfa9483b9ef60cb (diff) | |
download | php-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.phpt | 34 |
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)
|