]> arthur.barton.de Git - bup.git/blobdiff - wvtest.sh
Update base_version to 0.34~ for 0.34 development
[bup.git] / wvtest.sh
index 0ed5fb0cdadb541ffc2e6a0847429c86907a4da0..3a6e312b88cf0060815b628ac45b3bf3edfd87c7 100644 (file)
--- a/wvtest.sh
+++ b/wvtest.sh
@@ -1,24 +1,44 @@
-WVIFS=" 
-"
+#
+# Include this file in your shell script by using:
+#         #!/bin/sh
+#         . ./wvtest.sh
+#
 
 # we don't quote $TEXT in case it contains newlines; newlines
 # aren't allowed in test output.  However, we set -f so that
 # at least shell glob characters aren't processed.
-_textclean()
+_wvtextclean()
 {
        ( set -f; echo $* )
 }
 
+
+if [ -n "$BASH_VERSION" ]; then
+       . ./wvtest-bash.sh  # This keeps sh from choking on the syntax.
+else
+       _wvbacktrace() { true; }
+       _wvpushcall() { true; }
+       _wvpopcall() { true; }
+
+       _wvfind_caller()
+       {
+               WVCALLER_FILE="unknown"
+               WVCALLER_LINE=0
+       }
+fi
+
+
 _wvcheck()
 {
-       CODE="$1"
-       TEXT=$(_textclean "$2")
-       OK=ok
+       local CODE="$1"
+       local TEXT=$(_wvtextclean "$2")
+       local OK=ok
        if [ "$CODE" -ne 0 ]; then
                OK=FAILED
        fi
-       echo "! ${BASH_SOURCE[2]}:${BASH_LINENO[1]}  $TEXT  $OK" >&2
+       echo "! $WVCALLER_FILE:$WVCALLER_LINE  $TEXT  $OK" >&2
        if [ "$CODE" -ne 0 ]; then
+               _wvbacktrace
                exit $CODE
        else
                return 0
@@ -28,12 +48,12 @@ _wvcheck()
 
 WVPASS()
 {
-       #xIFS="$IFS"
-       #IFS="$WVIFS"
-       TEXT="$*"
-       #IFS="$xIFS"
-       
+       local TEXT="$*"
+       _wvpushcall "$@"
+
+       _wvfind_caller
        if "$@"; then
+               _wvpopcall
                _wvcheck 0 "$TEXT"
                return 0
        else
@@ -46,24 +66,105 @@ WVPASS()
 
 WVFAIL()
 {
-       #xIFS="$IFS"
-       #IFS="$WVIFS"
-       TEXT="$*"
-       #IFS="$xIFS"
-       
+       local TEXT="$*"
+       _wvpushcall "$@"
+
+       _wvfind_caller
        if "$@"; then
                _wvcheck 1 "NOT($TEXT)"
                # NOTREACHED
                return 1
        else
                _wvcheck 0 "NOT($TEXT)"
+               _wvpopcall
                return 0
        fi
 }
 
 
+_wvgetrv()
+{
+       ( "$@" >&2 )
+       echo -n $?
+}
+
+
+WVPASSEQ()
+{
+       _wvpushcall "$@"
+       _wvfind_caller
+       _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
+       echo "Comparing:" >&2
+       echo "$1" >&2
+       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
+       echo "$1" >&2
+       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
+}
+
+
 WVSTART()
 {
        echo >&2
-       echo "Testing \"$*\" in ${BASH_SOURCE[1]}:" >&2
+       _wvfind_caller
+       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
+# End: