Code

t0005: use SIGTERM for sigchain test
authorJeff King <peff@peff.net>
Fri, 30 Jan 2009 08:21:01 +0000 (03:21 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 30 Jan 2009 09:14:26 +0000 (01:14 -0800)
The signal tests consists of checking that each of our
handlers is executed, and that the test program was killed
by the final signal. We arbitrarily used SIGINT as the kill
signal.

However, some platforms (notably Solaris) will default
SIGINT to SIG_IGN if there is no controlling terminal. In
that case, we don't end up killing the program with the
final signal and the test fails.

This is a problem since the test script should not depend
on outside factors; let's use SIGTERM instead, which should
behave consistently.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0005-signals.sh
test-sigchain.c

index 9707af7d0377509bb02c29c7fb972345d1cc2253..09f855af3e9cded903c828f3f946a0c2403ddcdf 100755 (executable)
@@ -12,7 +12,7 @@ EOF
 test_expect_success 'sigchain works' '
        test-sigchain >actual
        case "$?" in
-       130) true ;; # POSIX w/ SIGINT=2
+       143) true ;; # POSIX w/ SIGTERM=15
          3) true ;; # Windows
          *) false ;;
        esac &&
index 8747deac627d5e3d57cd1f072f34802d29efa25e..42db234e871908514814c9b8dc50cc65d9b093cd 100644 (file)
@@ -14,9 +14,9 @@ X(three)
 #undef X
 
 int main(int argc, char **argv) {
-       sigchain_push(SIGINT, one);
-       sigchain_push(SIGINT, two);
-       sigchain_push(SIGINT, three);
-       raise(SIGINT);
+       sigchain_push(SIGTERM, one);
+       sigchain_push(SIGTERM, two);
+       sigchain_push(SIGTERM, three);
+       raise(SIGTERM);
        return 0;
 }