Subject: t0005-signals.sh fails with ksh

From: evgeny <[email-masked]>
Date: Fri, 8 May 2015 23:15:14 +0300

Hi,

Test t0005-signals.sh fails when I run 'make test' under ksh (on Solaris and on Linux)

$ ksh t0005-signals.sh -v
Initialized empty Git repository in /home/test/git/t/trash directory.t0005-signals/.git/
expecting success: 
        { test-sigchain >actual; ret=$?; } &&
        case "$ret" in
        143) true ;; # POSIX w/ SIGTERM=15
        271) true ;; # ksh w/ SIGTERM=15
          3) true ;; # Windows
          *) false ;;
        esac &&
        test_cmp expect actual

t0005-signals.sh[499]: eval: line 4: 23622: Terminated
ok 1 - sigchain works

expecting success: 
        # 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

three
two
one
error: exec test-sigchain died of signal 15
ok 2 - signals are propagated using shell convention

expecting success: 
        test-genrandom foo 16384 >file &&
        git add file

ok 3 - create blob

expecting success: 
        OUT=$( ((large_git; echo $? 1>&3) | :) 3>&1 ) &&
        test "$OUT" -eq 141

t0005-signals.sh[499]: eval: syntax error at line 4: `(' unmatched
Memory fault

I rather think there are two issues:
1. two adjacent parentheses
2. numeric constant (141) should be 269 for ksh, like there are two different 
constants in the test 'test-sigchain' in this file (in t0005-signals.sh)

'man ksh' reads:
  (list)
    Execute  list  in  a  separate environment.
    Note, that if two adjacent open parentheses are needed for nesting,
    a space must be inserted to avoid evaluation as an arithmetic command as
    described above.

-- 
Best regards,
 evgeny