X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=t%2Ftest-lib.sh;h=a8f239df8fc45575ca543208c2bcad771d3f4d7e;hb=b2309b70197f9067cb32a620465a9b3477d8f0c3;hp=9b88cc4f8678427f1bf22640138adc66d1090967;hpb=94e8afa28558786d1413645fd8aaadf157fb6eb4;p=git.git diff --git a/t/test-lib.sh b/t/test-lib.sh index 9b88cc4f..a8f239df 100755 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -5,8 +5,10 @@ # For repeatability, reset the environment to known value. LANG=C +LC_ALL=C +PAGER=cat TZ=UTC -export LANG TZ +export LANG LC_ALL PAGER TZ unset AUTHOR_DATE unset AUTHOR_EMAIL unset AUTHOR_NAME @@ -35,6 +37,7 @@ unset SHA1_FILE_DIRECTORY error () { echo "* error: $*" + trap - exit exit 1 } @@ -50,6 +53,8 @@ do case "$1" in -d|--d|--de|--deb|--debu|--debug) debug=t; shift ;; + -i|--i|--im|--imm|--imme|--immed|--immedi|--immedia|--immediat|--immediate) + immediate=t; shift ;; -h|--h|--he|--hel|--help) echo "$test_description" exit 0 ;; @@ -60,6 +65,7 @@ do esac done +exec 5>&1 if test "$verbose" = "t" then exec 4>&2 3>&1 @@ -70,46 +76,65 @@ fi test_failure=0 test_count=0 -test_debug () { - test "$debug" == "" || eval "$1" -} +trap 'echo >&5 "FATAL: Unexpected exit with code $?"; exit 1' exit + -test_ok () { +# You are not expected to call test_ok_ and test_failure_ directly, use +# the text_expect_* functions instead. + +test_ok_ () { test_count=$(expr "$test_count" + 1) say " ok $test_count: $@" } -test_failure () { +test_failure_ () { test_count=$(expr "$test_count" + 1) test_failure=$(expr "$test_failure" + 1); - say "FAIL $test_count: $@" + say "FAIL $test_count: $1" + shift + echo "$@" | sed -e 's/^/ /' + test "$immediate" = "" || { trap - exit; exit 1; } +} + + +test_debug () { + test "$debug" = "" || eval "$1" +} + +test_run_ () { + eval >&3 2>&4 "$1" + eval_ret="$?" + return 0 } test_expect_failure () { - test "$#" == 2 || + test "$#" = 2 || error "bug in the test script: not 2 parameters to test-expect-failure" say >&3 "expecting failure: $2" - if eval >&3 2>&4 "$2" + test_run_ "$2" + if [ "$?" = 0 -a "$eval_ret" != 0 ] then - test_failure "$@" + test_ok_ "$1" else - test_ok "$1" + test_failure_ "$@" fi } test_expect_success () { - test "$#" == 2 || + test "$#" = 2 || error "bug in the test script: not 2 parameters to test-expect-success" say >&3 "expecting success: $2" - if eval >&3 2>&4 "$2" + test_run_ "$2" + if [ "$?" = 0 -a "$eval_ret" = 0 ] then - test_ok "$1" + test_ok_ "$1" else - test_failure "$@" + test_failure_ "$@" fi } test_done () { + trap - exit case "$test_failure" in 0) # We could: @@ -139,4 +164,8 @@ test=trash rm -fr "$test" mkdir "$test" cd "$test" -git-init-db 2>/dev/null || error "cannot run git-init-db" +git-init-db --template=../../templates/blt/ 2>/dev/null || +error "cannot run git-init-db" + +mv .git/hooks .git/hooks-disabled +