mirror of
https://github.com/git/git
synced 2024-08-26 19:19:18 +00:00
![Johannes Sixt](/assets/img/avatar_default.png)
The test case depends on that test-sigchain can commit suicide by a call to raise(SIGTERM) in a way that run-command.c::wait_or_whine() can detect as death through a signal. There are no POSIX signals on Windows, and a sufficiently close emulation is not available in the Microsoft C runtime (and probably not even possible). The particular deficiency is that when a signal is raise()d whose SIG_DFL action will cause process death (SIGTERM in this case), the implementation of raise() in msvcrt just calls exit(3). We could check for exit code 3 in addition to 143, but that would miss the point of the test entirely. Hence, just skip it on Windows. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
31 lines
584 B
Bash
Executable file
31 lines
584 B
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='signals work as we expect'
|
|
. ./test-lib.sh
|
|
|
|
cat >expect <<EOF
|
|
three
|
|
two
|
|
one
|
|
EOF
|
|
|
|
test_expect_success 'sigchain works' '
|
|
test-sigchain >actual
|
|
case "$?" in
|
|
143) true ;; # POSIX w/ SIGTERM=15
|
|
271) true ;; # ksh w/ SIGTERM=15
|
|
3) true ;; # Windows
|
|
*) false ;;
|
|
esac &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success !MINGW 'signals are propagated using shell convention' '
|
|
# we use exec here to avoid any sub-shell interpretation
|
|
# of the exit code
|
|
git config alias.sigterm "!exec test-sigchain" &&
|
|
test_expect_code 143 git sigterm
|
|
'
|
|
|
|
test_done
|