]> rtime.felk.cvut.cz Git - wvtest.git/blob - sh/wvtest.sh
sh: Import wvtest.sh from the bup project.
[wvtest.git] / sh / wvtest.sh
1 #
2 # Include this file in your shell script by using:
3 #         #!/bin/sh
4 #         . ./wvtest.sh
5 #
6
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()
11 {
12         ( set -f; echo $* )
13 }
14
15 _wvfind_caller()
16 {
17         LVL=$1
18         WVCALLER_FILE=${BASH_SOURCE[2]}
19         WVCALLER_LINE=${BASH_LINENO[1]}
20 }
21
22 _wvcheck()
23 {
24         CODE="$1"
25         TEXT=$(_wvtextclean "$2")
26         OK=ok
27         if [ "$CODE" -ne 0 ]; then
28                 OK=FAILED
29         fi
30         echo "! $WVCALLER_FILE:$WVCALLER_LINE  $TEXT  $OK" >&2
31         if [ "$CODE" -ne 0 ]; then
32                 exit $CODE
33         else
34                 return 0
35         fi
36 }
37
38
39 WVPASS()
40 {
41         TEXT="$*"
42         
43         _wvfind_caller
44         if "$@"; then
45                 _wvcheck 0 "$TEXT"
46                 return 0
47         else
48                 _wvcheck 1 "$TEXT"
49                 # NOTREACHED
50                 return 1
51         fi
52 }
53
54
55 WVFAIL()
56 {
57         TEXT="$*"
58         
59         _wvfind_caller
60         if "$@"; then
61                 _wvcheck 1 "NOT($TEXT)"
62                 # NOTREACHED
63                 return 1
64         else
65                 _wvcheck 0 "NOT($TEXT)"
66                 return 0
67         fi
68 }
69
70
71 _wvgetrv()
72 {
73         ( "$@" >&2 )
74         echo -n $?
75 }
76
77
78 WVPASSEQ()
79 {
80         _wvfind_caller
81         _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
82         echo "Comparing:" >&2
83         echo "$1" >&2
84         echo "--" >&2
85         echo "$2" >&2
86         _wvcheck $(_wvgetrv [ "$1" = "$2" ]) "'$1' = '$2'"
87 }
88
89
90 WVPASSNE()
91 {
92         _wvfind_caller
93         _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
94         echo "Comparing:" >&2
95         echo "$1" >&2
96         echo "--" >&2
97         echo "$2" >&2
98         _wvcheck $(_wvgetrv [ "$1" != "$2" ]) "'$1' != '$2'"
99 }
100
101
102 WVSTART()
103 {
104         echo >&2
105         _wvfind_caller
106         echo "Testing \"$*\" in $WVCALLER_FILE:" >&2
107 }