From: Junio C Hamano Date: Tue, 19 Jul 2016 20:22:20 +0000 (-0700) Subject: Merge branch 'jk/test-match-signal' X-Git-Tag: v2.10.0-rc0~106 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/39cadeec0db35a79a2713eceaf998f2745236f0c?ds=inline;hp=-c 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 --- 39cadeec0db35a79a2713eceaf998f2745236f0c diff --combined t/test-lib-functions.sh index 90856d67e5,ca40a1289f..4f7eadb596 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@@ -612,7 -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,16 -962,17 +962,31 @@@ 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 ' + my $len = $ARGV[1]; + while ($len > 0) { + my $s; + my $nread = sysread(STDIN, $s, $len); + die "cannot read: $!" unless defined($nread); + print $s; + $len -= $nread; + } + ' - "$1" +}