From a480bf80933e4d6a8c91a5992b4e5d73da625e17 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Tue, 23 Feb 2021 22:34:51 +0100 Subject: Capture Microsoft-defined HRESULT exit codes exit codes The lack of such a check leads to false-passes of tests on Windows which expect no output, but produce a segfault or similar issue. I discovered this a while ago due to bad tests in an extension I maintain. Closes GH-6722. --- run-tests.php | 3 +++ 1 file changed, 3 insertions(+) (limited to 'run-tests.php') diff --git a/run-tests.php b/run-tests.php index c68982889a..19b7f5cb40 100755 --- a/run-tests.php +++ b/run-tests.php @@ -1273,6 +1273,9 @@ function system_with_timeout($commandline, $env = null, $stdin = null, $captureS } if ($stat["exitcode"] > 128 && $stat["exitcode"] < 160) { $data .= "\nTermsig=" . ($stat["exitcode"] - 128) . "\n"; + } else if (defined('PHP_WINDOWS_VERSION_MAJOR') && (($stat["exitcode"] >> 28) & 0b1111) === 0b1100) { + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/87fba13e-bf06-450e-83b1-9241dc81e781 + $data .= "\nTermsig=" . $stat["exitcode"] . "\n"; } proc_close($proc); -- cgit v1.2.1