wvtestrun: Do not use colors on dumb terminals
[wvtest/kirr.git] / sh / wvtest.sh
blob0cfc6b240794377a83ca48b516fba9be96f4adf1
2 # Include this file in your shell script by using:
3 # #!/bin/sh
4 # . ./wvtest.sh
7 # we don't quote $TEXT in case it contains newlines; newlines
8 # aren't allowed in test output. However, we set -f so that
9 # at least shell glob characters aren't processed.
10 _wvtextclean()
12 ( set -f; echo $* )
16 if [ -n "$BASH_VERSION" ]; then
17 _wvfind_caller()
19 LVL=$1
20 WVCALLER_FILE=${BASH_SOURCE[2]}
21 WVCALLER_LINE=${BASH_LINENO[1]}
23 else
24 _wvfind_caller()
26 LVL=$1
27 WVCALLER_FILE="unknown"
28 WVCALLER_LINE=0
33 _wvcheck()
35 CODE="$1"
36 TEXT=$(_wvtextclean "$2")
37 OK=ok
38 if [ "$CODE" -ne 0 ]; then
39 OK=FAILED
41 echo "! $WVCALLER_FILE:$WVCALLER_LINE $TEXT $OK" >&2
42 if [ "$CODE" -ne 0 ]; then
43 exit $CODE
44 else
45 return 0
50 WVPASS()
52 TEXT="$*"
54 _wvfind_caller
55 if "$@"; then
56 _wvcheck 0 "$TEXT"
57 return 0
58 else
59 _wvcheck 1 "$TEXT"
60 # NOTREACHED
61 return 1
66 WVFAIL()
68 TEXT="$*"
70 _wvfind_caller
71 if "$@"; then
72 _wvcheck 1 "NOT($TEXT)"
73 # NOTREACHED
74 return 1
75 else
76 _wvcheck 0 "NOT($TEXT)"
77 return 0
82 _wvgetrv()
84 ( "$@" >&2 )
85 echo -n $?
89 WVPASSEQ()
91 _wvfind_caller
92 _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
93 echo "Comparing:" >&2
94 echo "$1" >&2
95 echo "--" >&2
96 echo "$2" >&2
97 _wvcheck $(_wvgetrv [ "$1" = "$2" ]) "'$1' = '$2'"
101 WVPASSNE()
103 _wvfind_caller
104 _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
105 echo "Comparing:" >&2
106 echo "$1" >&2
107 echo "--" >&2
108 echo "$2" >&2
109 _wvcheck $(_wvgetrv [ "$1" != "$2" ]) "'$1' != '$2'"
113 WVPASSRC()
115 RC=$?
116 _wvfind_caller
117 _wvcheck $(_wvgetrv [ $RC -eq 0 ]) "return code($RC) == 0"
121 WVFAILRC()
123 RC=$?
124 _wvfind_caller
125 _wvcheck $(_wvgetrv [ $RC -ne 0 ]) "return code($RC) != 0"
129 WVSTART()
131 echo >&2
132 _wvfind_caller
133 echo "Testing \"$*\" in $WVCALLER_FILE:" >&2