Merge branch 'jk/test-match-signal'
authorJunio C Hamano <gitster@pobox.com>
Tue, 19 Jul 2016 20:22:20 +0000 (13:22 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 19 Jul 2016 20:22:20 +0000 (13:22 -0700)
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

1  2 
t/test-lib-functions.sh
index 90856d67e52dcdaabd13e78abd29c7c3d3949643,ca40a1289f269830e30136459a09fc2526957895..4f7eadb5963e7d698f9ee6e265b1657e543cdb44
@@@ -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"
 +}