X-Git-Url: https://arthur.barton.de/gitweb/?p=bup.git;a=blobdiff_plain;f=wvtest.sh;h=47613349e12fbd31c5baa183e262ad21c9c70c07;hp=f7d0dbb338c8bfcbcf04ccfc999fb375a46dc986;hb=HEAD;hpb=c65728f6e39001cccb5130d0c4b6ccfab92cdd33 diff --git a/wvtest.sh b/wvtest.sh index f7d0dbb..3a6e312 100644 --- a/wvtest.sh +++ b/wvtest.sh @@ -14,12 +14,12 @@ _wvtextclean() if [ -n "$BASH_VERSION" ]; then - _wvfind_caller() - { - WVCALLER_FILE=${BASH_SOURCE[2]} - WVCALLER_LINE=${BASH_LINENO[1]} - } + . ./wvtest-bash.sh # This keeps sh from choking on the syntax. else + _wvbacktrace() { true; } + _wvpushcall() { true; } + _wvpopcall() { true; } + _wvfind_caller() { WVCALLER_FILE="unknown" @@ -30,14 +30,15 @@ fi _wvcheck() { - CODE="$1" - TEXT=$(_wvtextclean "$2") - OK=ok + local CODE="$1" + local TEXT=$(_wvtextclean "$2") + local OK=ok if [ "$CODE" -ne 0 ]; then OK=FAILED fi echo "! $WVCALLER_FILE:$WVCALLER_LINE $TEXT $OK" >&2 if [ "$CODE" -ne 0 ]; then + _wvbacktrace exit $CODE else return 0 @@ -47,10 +48,12 @@ _wvcheck() WVPASS() { - TEXT="$*" + local TEXT="$*" + _wvpushcall "$@" _wvfind_caller if "$@"; then + _wvpopcall _wvcheck 0 "$TEXT" return 0 else @@ -63,7 +66,8 @@ WVPASS() WVFAIL() { - TEXT="$*" + local TEXT="$*" + _wvpushcall "$@" _wvfind_caller if "$@"; then @@ -72,6 +76,7 @@ WVFAIL() return 1 else _wvcheck 0 "NOT($TEXT)" + _wvpopcall return 0 fi } @@ -86,6 +91,7 @@ _wvgetrv() WVPASSEQ() { + _wvpushcall "$@" _wvfind_caller _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments" echo "Comparing:" >&2 @@ -93,11 +99,13 @@ WVPASSEQ() echo "--" >&2 echo "$2" >&2 _wvcheck $(_wvgetrv [ "$1" = "$2" ]) "'$1' = '$2'" + _wvpopcall } WVPASSNE() { + _wvpushcall "$@" _wvfind_caller _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments" echo "Comparing:" >&2 @@ -105,22 +113,27 @@ WVPASSNE() echo "--" >&2 echo "$2" >&2 _wvcheck $(_wvgetrv [ "$1" != "$2" ]) "'$1' != '$2'" + _wvpopcall } WVPASSRC() { - RC=$? + local RC=$? + _wvpushcall "$@" _wvfind_caller _wvcheck $(_wvgetrv [ $RC -eq 0 ]) "return code($RC) == 0" + _wvpopcall } WVFAILRC() { - RC=$? + local RC=$? + _wvpushcall "$@" _wvfind_caller _wvcheck $(_wvgetrv [ $RC -ne 0 ]) "return code($RC) != 0" + _wvpopcall } @@ -131,6 +144,26 @@ WVSTART() echo "Testing \"$*\" in $WVCALLER_FILE:" >&2 } + +WVSKIP() +{ + local TEXT=$(_wvtextclean "$@") + _wvpushcall "$@" + _wvfind_caller + echo "! $WVCALLER_FILE:$WVCALLER_LINE $TEXT skip ok" 1>&2 +} + + +WVDIE() +{ + local TEXT=$(_wvtextclean "$@") + _wvpushcall "$@" + _wvfind_caller + echo "! $WVCALLER_FILE:$WVCALLER_LINE $TEXT FAILED" 1>&2 + exit 1 +} + + # Local Variables: # indent-tabs-mode: t # sh-basic-offset: 8