Merge branch 'jn/send-pack-error'
[gitweb.git] / t / test-lib.sh
index dff5e25ae6ca4022d5bdea8673988987c10bfec7..bbe79e0fcbd88a1d1c02cd5c51c820def8fdd53f 100644 (file)
@@ -248,6 +248,10 @@ test_decode_color () {
                -e 's/.\[m/<RESET>/g'
 }
 
+nul_to_q () {
+       perl -pe 'y/\000/Q/'
+}
+
 q_to_nul () {
        perl -pe 'y/Q/\000/'
 }
@@ -620,7 +624,18 @@ test_path_is_missing () {
 
 test_must_fail () {
        "$@"
-       test $? -gt 0 -a $? -le 129 -o $? -gt 192
+       exit_code=$?
+       if test $exit_code = 0; then
+               echo >&2 "test_must_fail: command succeeded: $*"
+               return 1
+       elif test $exit_code -gt 129 -a $exit_code -le 192; then
+               echo >&2 "test_must_fail: died by signal: $*"
+               return 1
+       elif test $exit_code = 127; then
+               echo >&2 "test_must_fail: command not found: $*"
+               return 1
+       fi
+       return 0
 }
 
 # Similar to test_must_fail, but tolerates success, too.  This is
@@ -636,7 +651,15 @@ test_must_fail () {
 
 test_might_fail () {
        "$@"
-       test $? -ge 0 -a $? -le 129 -o $? -gt 192
+       exit_code=$?
+       if test $exit_code -gt 129 -a $exit_code -le 192; then
+               echo >&2 "test_might_fail: died by signal: $*"
+               return 1
+       elif test $exit_code = 127; then
+               echo >&2 "test_might_fail: command not found: $*"
+               return 1
+       fi
+       return 0
 }
 
 # test_cmp is a helper function to compare actual and expected output.
@@ -951,11 +974,13 @@ case $(uname -s) in
        # no POSIX permissions
        # backslashes in pathspec are converted to '/'
        # exec does not inherit the PID
+       test_set_prereq MINGW
        ;;
 *)
        test_set_prereq POSIXPERM
        test_set_prereq BSLASHPSPEC
        test_set_prereq EXECKEEPSPID
+       test_set_prereq NOT_MINGW
        ;;
 esac