]> rtime.felk.cvut.cz Git - frescor/frsh-forb.git/blob - src/wvtest.sh
forb: Update documentation of forb_request_send()
[frescor/frsh-forb.git] / src / 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
16 if [ -n "$BASH_VERSION" ]; then
17         _wvfind_caller()
18         {
19                 LVL=$1
20                 WVCALLER_FILE=${BASH_SOURCE[2]}
21                 WVCALLER_LINE=${BASH_LINENO[1]}
22         }
23 else
24         _wvfind_caller()
25         {
26                 LVL=$1
27                 WVCALLER_FILE="unknown"
28                 WVCALLER_LINE=0
29         }
30 fi
31
32
33 _wvcheck()
34 {
35         CODE="$1"
36         TEXT=$(_wvtextclean "$2")
37         OK=ok
38         if [ "$CODE" -ne 0 ]; then
39                 OK=FAILED
40         fi
41         echo "! $WVCALLER_FILE:$WVCALLER_LINE  $TEXT  $OK" >&2
42         if [ "$CODE" -ne 0 ]; then
43                 if [ "$WVTEST_DIE_FAST" ]; then
44                         exit $CODE
45                 else
46                         return $CODE
47                 fi
48         else
49                 return 0
50         fi
51 }
52
53
54 WVPASS()
55 {
56         TEXT="$*"
57         
58         _wvfind_caller
59         if "$@"; then
60                 _wvcheck 0 "$TEXT"
61                 return 0
62         else
63                 _wvcheck 1 "$TEXT"
64                 # NOTREACHED
65                 return 1
66         fi
67 }
68
69
70 WVFAIL()
71 {
72         TEXT="$*"
73         
74         _wvfind_caller
75         if "$@"; then
76                 _wvcheck 1 "NOT($TEXT)"
77                 # NOTREACHED
78                 return 1
79         else
80                 _wvcheck 0 "NOT($TEXT)"
81                 return 0
82         fi
83 }
84
85
86 _wvgetrv()
87 {
88         ( "$@" >&2 )
89         echo -n $?
90 }
91
92
93 WVPASSEQ()
94 {
95         _wvfind_caller
96         _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
97         echo "Comparing:" >&2
98         echo "$1" >&2
99         echo "--" >&2
100         echo "$2" >&2
101         _wvcheck $(_wvgetrv [ "$1" = "$2" ]) "'$1' = '$2'"
102 }
103
104
105 WVPASSNE()
106 {
107         _wvfind_caller
108         _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
109         echo "Comparing:" >&2
110         echo "$1" >&2
111         echo "--" >&2
112         echo "$2" >&2
113         _wvcheck $(_wvgetrv [ "$1" != "$2" ]) "'$1' != '$2'"
114 }
115
116
117 WVPASSRC()
118 {
119         RC=$?
120         _wvfind_caller
121         _wvcheck $(_wvgetrv [ $RC -eq 0 ]) "return code($RC) == 0"
122 }
123
124
125 WVFAILRC()
126 {
127         RC=$?
128         _wvfind_caller
129         _wvcheck $(_wvgetrv [ $RC -ne 0 ]) "return code($RC) != 0"
130 }
131
132
133 WVSTART()
134 {
135         echo >&2
136         _wvfind_caller
137         echo "Testing \"$*\" in $WVCALLER_FILE:" >&2
138 }
139
140
141 root=$(
142 old_pwd=""
143 while [ ! -e Makefile.rules ]; do
144        if [ "$old_pwd" = `pwd`  ]; then 
145                echo "Makefile.rules has not been found in this or parent directory" >&2; exit 1; 
146        else
147                old_pwd=`pwd`; 
148                cd -L .. 2>/dev/null; 
149        fi; 
150 done; 
151 pwd
152 )
153
154 if [ "$root" ]; then
155     PATH="$root/_compiled/bin:$root/_compiled/bin-tests:$PATH"
156 else
157     exit 1
158 fi