]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
fix(test): Flush stdout/stderr on http-server termination
authorJoel Rosdahl <joel@rosdahl.net>
Tue, 27 Jul 2021 07:16:14 +0000 (09:16 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Wed, 28 Jul 2021 12:42:00 +0000 (14:42 +0200)
The log from http-server is lost when the process is killed. Fix this by
flushing explicitly in a signal handler.

test/http-server

index 3c40b4ee12a164f5860d382cbee3ab3a640bc068..d96383d930813eeb0b1b1f8e17f826c2e308fdf4 100755 (executable)
@@ -9,8 +9,8 @@
 from functools import partial
 from http import HTTPStatus
 from http.server import HTTPServer, SimpleHTTPRequestHandler
-
 import os
+import signal
 import socket
 import sys
 
@@ -119,6 +119,12 @@ def run(HandlerClass, ServerClass, port, bind):
             sys.exit(0)
 
 
+def on_terminate(signum, frame):
+    sys.stdout.flush()
+    sys.stderr.flush()
+    sys.exit(128 + signum)
+
+
 if __name__ == "__main__":
     import argparse
 
@@ -154,6 +160,9 @@ if __name__ == "__main__":
 
     os.chdir(args.directory)
 
+    signal.signal(signal.SIGINT, on_terminate)
+    signal.signal(signal.SIGTERM, on_terminate)
+
     run(
         HandlerClass=handler_class,
         ServerClass=HTTPServer,