wez Sat Feb 15 13:09:52 2003 EDT Modified files: /php4 run-tests.php Log: If a test does not have any data after 60 seconds of waiting, assume that it died a horrible death and kill it. This is useful on windows when a message box is popped-up during an automated test-run. Index: php4/run-tests.php diff -u php4/run-tests.php:1.142 php4/run-tests.php:1.143 --- php4/run-tests.php:1.142 Mon Feb 3 07:14:13 2003 +++ php4/run-tests.php Sat Feb 15 13:09:52 2003 @@ -516,6 +516,40 @@ } } +function system_with_timeout($commandline) +{ + $data = ""; + + $proc = proc_open($commandline, array(1 => array('pipe', 'w')), $pipes); + + if (!$proc) + return false; + + while (true) { + /* hide errors from interrupted syscalls */ + $r = $pipes; + $w = null; + $e = null; + $n = stream_select($r, $w, $e, 60); + + if ($n == 0) { + /* timed out */ + $data .= "\n ** ERROR: process timed out **\n"; + proc_terminate($proc); + return $data; + } else if ($n) { + $line = fgets($pipes[1]); + if ($line === false) { + /* EOF */ + break; + } + $data .= $line; + } + } + $code = proc_close($proc); + return $data; +} + // // Run an individual test case. // @@ -667,7 +701,8 @@ COMMAND $cmd "; - $out = `$cmd`; +// $out = `$cmd`; + $out = system_with_timeout($cmd); @unlink($tmp_post);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php