tests: teach `killdaemons` on Windows to use an exit code provided by a caller
Right now, there are several tests that use `signal.SIGKILL`, which isn't a
thing on Windows. The `killdaemons` script approximates this by forcibly
terminating the process. There's a minor difference in that `signal.SIGKILL`
results in the test capturing an exit code of 137, and the `killdaemons` victim
doesn't record a code (as though it exited with 0). Since the exit code line
couldn't be conditionalized the last time I checked, let's just allow the caller
to simulate the same exit code, and avoid conditionalizing the tests.
--- a/tests/killdaemons.py Thu Oct 10 17:55:50 2024 +0200
+++ b/tests/killdaemons.py Sat Oct 12 15:22:03 2024 -0400
@@ -56,7 +56,12 @@
if r == WAIT_OBJECT_0:
pass # terminated, but process handle still available
elif r == WAIT_TIMEOUT:
- _check(ctypes.windll.kernel32.TerminateProcess(handle, -1))
+ # Allow the caller to optionally specify the exit code, to
+ # simulate killing with a signal.
+ exit_code = int(os.environ.get("DAEMON_EXITCODE", -1))
+ _check(
+ ctypes.windll.kernel32.TerminateProcess(handle, exit_code)
+ )
elif r == WAIT_FAILED:
_check(0) # err stored in GetLastError()