mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
Merge branch 'jk/test-match-signal'
The test framework learned a new helper test_match_signal to check an exit code from getting killed by an expected signal. * jk/test-match-signal: t/lib-git-daemon: use test_match_signal test_must_fail: use test_match_signal t0005: use test_match_signal as appropriate tests: factor portable signal check out of t0005
This commit is contained in:
commit
39cadeec0d
@ -82,8 +82,7 @@ stop_git_daemon() {
|
||||
kill "$GIT_DAEMON_PID"
|
||||
wait "$GIT_DAEMON_PID" >&3 2>&4
|
||||
ret=$?
|
||||
# expect exit with status 143 = 128+15 for signal TERM=15
|
||||
if test $ret -ne 143
|
||||
if test_match_signal 15 $?
|
||||
then
|
||||
error "git daemon exited with status: $ret"
|
||||
fi
|
||||
|
@ -11,12 +11,13 @@ EOF
|
||||
|
||||
test_expect_success 'sigchain works' '
|
||||
{ test-sigchain >actual; ret=$?; } &&
|
||||
case "$ret" in
|
||||
143) true ;; # POSIX w/ SIGTERM=15
|
||||
271) true ;; # ksh w/ SIGTERM=15
|
||||
3) true ;; # Windows
|
||||
*) false ;;
|
||||
esac &&
|
||||
{
|
||||
# Signal death by raise() on Windows acts like exit(3),
|
||||
# regardless of the signal number. So we must allow that
|
||||
# as well as the normal signal check.
|
||||
test_match_signal 15 "$ret" ||
|
||||
test "$ret" = 3
|
||||
} &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
@ -41,12 +42,12 @@ test_expect_success 'create blob' '
|
||||
|
||||
test_expect_success !MINGW 'a constipated git dies with SIGPIPE' '
|
||||
OUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) &&
|
||||
test "$OUT" -eq 141
|
||||
test_match_signal 13 "$OUT"
|
||||
'
|
||||
|
||||
test_expect_success !MINGW 'a constipated git dies with SIGPIPE even if parent ignores it' '
|
||||
OUT=$( ((trap "" PIPE; large_git; echo $? 1>&3) | :) 3>&1 ) &&
|
||||
test "$OUT" -eq 141
|
||||
test_match_signal 13 "$OUT"
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -612,7 +612,7 @@ test_must_fail () {
|
||||
then
|
||||
echo >&2 "test_must_fail: command succeeded: $*"
|
||||
return 1
|
||||
elif test $exit_code -eq 141 && list_contains "$_test_ok" sigpipe
|
||||
elif test_match_signal 13 $exit_code && list_contains "$_test_ok" sigpipe
|
||||
then
|
||||
return 0
|
||||
elif test $exit_code -gt 129 && test $exit_code -le 192
|
||||
@ -962,6 +962,21 @@ test_env () {
|
||||
)
|
||||
}
|
||||
|
||||
# Returns true if the numeric exit code in "$2" represents the expected signal
|
||||
# in "$1". Signals should be given numerically.
|
||||
test_match_signal () {
|
||||
if test "$2" = "$((128 + $1))"
|
||||
then
|
||||
# POSIX
|
||||
return 0
|
||||
elif test "$2" = "$((256 + $1))"
|
||||
then
|
||||
# ksh
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
# Read up to "$1" bytes (or to EOF) from stdin and write them to stdout.
|
||||
test_copy_bytes () {
|
||||
perl -e '
|
||||
|
Loading…
Reference in New Issue
Block a user