X-Git-Url: https://arthur.barton.de/gitweb/?p=bup.git;a=blobdiff_plain;f=wvtest.sh;h=47613349e12fbd31c5baa183e262ad21c9c70c07;hp=daaa6c4d3996663c5dae4285f60bccae5102a03f;hb=HEAD;hpb=b5bb98a21e7509d87fe94bf7e3a99de391c86879 diff --git a/wvtest.sh b/wvtest.sh index daaa6c4..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" @@ -38,6 +38,7 @@ _wvcheck() fi echo "! $WVCALLER_FILE:$WVCALLER_LINE $TEXT $OK" >&2 if [ "$CODE" -ne 0 ]; then + _wvbacktrace exit $CODE else return 0 @@ -48,9 +49,11 @@ _wvcheck() WVPASS() { local TEXT="$*" + _wvpushcall "$@" _wvfind_caller if "$@"; then + _wvpopcall _wvcheck 0 "$TEXT" return 0 else @@ -64,6 +67,7 @@ WVPASS() WVFAIL() { 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() { local RC=$? + _wvpushcall "$@" _wvfind_caller _wvcheck $(_wvgetrv [ $RC -eq 0 ]) "return code($RC) == 0" + _wvpopcall } WVFAILRC() { 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