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"
|
kill "$GIT_DAEMON_PID"
|
||||||
wait "$GIT_DAEMON_PID" >&3 2>&4
|
wait "$GIT_DAEMON_PID" >&3 2>&4
|
||||||
ret=$?
|
ret=$?
|
||||||
# expect exit with status 143 = 128+15 for signal TERM=15
|
if test_match_signal 15 $?
|
||||||
if test $ret -ne 143
|
|
||||||
then
|
then
|
||||||
error "git daemon exited with status: $ret"
|
error "git daemon exited with status: $ret"
|
||||||
fi
|
fi
|
||||||
|
@ -11,12 +11,13 @@ EOF
|
|||||||
|
|
||||||
test_expect_success 'sigchain works' '
|
test_expect_success 'sigchain works' '
|
||||||
{ test-sigchain >actual; ret=$?; } &&
|
{ test-sigchain >actual; ret=$?; } &&
|
||||||
case "$ret" in
|
{
|
||||||
143) true ;; # POSIX w/ SIGTERM=15
|
# Signal death by raise() on Windows acts like exit(3),
|
||||||
271) true ;; # ksh w/ SIGTERM=15
|
# regardless of the signal number. So we must allow that
|
||||||
3) true ;; # Windows
|
# as well as the normal signal check.
|
||||||
*) false ;;
|
test_match_signal 15 "$ret" ||
|
||||||
esac &&
|
test "$ret" = 3
|
||||||
|
} &&
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
@ -41,12 +42,12 @@ test_expect_success 'create blob' '
|
|||||||
|
|
||||||
test_expect_success !MINGW 'a constipated git dies with SIGPIPE' '
|
test_expect_success !MINGW 'a constipated git dies with SIGPIPE' '
|
||||||
OUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) &&
|
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' '
|
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 ) &&
|
OUT=$( ((trap "" PIPE; large_git; echo $? 1>&3) | :) 3>&1 ) &&
|
||||||
test "$OUT" -eq 141
|
test_match_signal 13 "$OUT"
|
||||||
'
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -612,7 +612,7 @@ test_must_fail () {
|
|||||||
then
|
then
|
||||||
echo >&2 "test_must_fail: command succeeded: $*"
|
echo >&2 "test_must_fail: command succeeded: $*"
|
||||||
return 1
|
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
|
then
|
||||||
return 0
|
return 0
|
||||||
elif test $exit_code -gt 129 && test $exit_code -le 192
|
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.
|
# Read up to "$1" bytes (or to EOF) from stdin and write them to stdout.
|
||||||
test_copy_bytes () {
|
test_copy_bytes () {
|
||||||
perl -e '
|
perl -e '
|
||||||
|
Loading…
Reference in New Issue
Block a user