Right now if a test script receives SIGINT (e.g., because a test was hanging and the user hit ^C), the shell exits immediately. This can be annoying if the test script did any global setup, like starting apache or git-daemon, as it will not have an opportunity to clean up after itself. A subsequent run of the test won't be able to start its own daemon, and will either fail or skip the tests. Instead, let's trap SIGINT to make sure we do a clean shutdown, and just chain it to a normal exit (which will trigger any cleanup). Signed-off-by: Jeff King <peff@xxxxxxxx> --- Possibly we should catch other signals here, too, but SIGINT is the one that has been biting me over the years (I would sometimes have a stray apache process hanging around, and I only recently figured out what caused it). I think "trap ... INT" is the most portable way to say this. I would have thought numbers were more portable, but they are actually an XSI add-on. Likewise, "SIGINT" is allowed in POSIX but not required. "INT" is part of POSIX. This is the cleanest way I could come up with to implement this. We could also just include "INT" on the same line as the die, but: 1. Then every script which sets a handler (like lib-httpd.sh) would need to be modified to munge the INT trap, too. 2. It double-calls die, then. We die from the INT handler, which triggers the EXIT handler. I guess we could clear the handler inside die() if we needed to. So I'd rather go this route, unless there turns out to be a weird portability problem. t/test-lib.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/t/test-lib.sh b/t/test-lib.sh index c096778..f4ba3ff 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -299,6 +299,7 @@ die () { GIT_EXIT_OK= trap 'die' EXIT +trap 'exit $?' INT # The user-facing functions are loaded from a separate file so that # test_perf subshells can have them too -- 2.3.2.472.geadab3c -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html