]> rtime.felk.cvut.cz Git - can-benchmark.git/blob - continuous/tests/wvtest.sh
Fix WVSTART
[can-benchmark.git] / continuous / tests / wvtest.sh
1 #
2 # WvTest:
3 #   Copyright (C)2007-2012 Versabanq Innovations Inc. and contributors.
4 #       Licensed under the GNU Library General Public License, version 2.
5 #       See the included file named LICENSE for license information.
6 #       You can get wvtest from: http://github.com/apenwarr/wvtest
7 #
8 # Include this file in your shell script by using:
9 #         #!/bin/sh
10 #         . ./wvtest.sh
11 #
12
13 # we don't quote $TEXT in case it contains newlines; newlines
14 # aren't allowed in test output.  However, we set -f so that
15 # at least shell glob characters aren't processed.
16 _wvtextclean()
17 {
18         ( set -f; echo $* )
19 }
20
21
22 if [ -n "$BASH_VERSION" ]; then
23         _wvfind_caller()
24         {
25                 LVL=$1
26                 WVCALLER_FILE=${BASH_SOURCE[2]}
27                 WVCALLER_LINE=${BASH_LINENO[1]}
28         }
29 else
30         _wvfind_caller()
31         {
32                 LVL=$1
33                 WVCALLER_FILE="unknown"
34                 WVCALLER_LINE=0
35         }
36 fi
37
38
39 _wvcheck()
40 {
41         CODE="$1"
42         TEXT=$(_wvtextclean "$2")
43         OK=ok
44         if [ "$CODE" -ne 0 ]; then
45                 OK=FAILED
46         fi
47         echo "! $WVCALLER_FILE:$WVCALLER_LINE  $TEXT  $OK"
48         if [ "$CODE" -ne 0 ]; then
49                 exit $CODE
50         else
51                 return 0
52         fi
53 }
54
55
56 WVPASS()
57 {
58         TEXT="$*"
59
60         _wvfind_caller
61         if "$@"; then
62                 _wvcheck 0 "$TEXT"
63                 return 0
64         else
65                 _wvcheck 1 "$TEXT"
66                 # NOTREACHED
67                 return 1
68         fi
69 }
70
71
72 WVFAIL()
73 {
74         TEXT="$*"
75
76         _wvfind_caller
77         if "$@"; then
78                 _wvcheck 1 "NOT($TEXT)"
79                 # NOTREACHED
80                 return 1
81         else
82                 _wvcheck 0 "NOT($TEXT)"
83                 return 0
84         fi
85 }
86
87
88 _wvgetrv()
89 {
90         ( "$@" >&2 )
91         echo -n $?
92 }
93
94
95 WVPASSEQ()
96 {
97         _wvfind_caller
98         _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
99         echo "Comparing:" >&2
100         echo "$1" >&2
101         echo "--" >&2
102         echo "$2" >&2
103         _wvcheck $(_wvgetrv [ "$1" = "$2" ]) "'$1' = '$2'"
104 }
105
106
107 WVPASSNE()
108 {
109         _wvfind_caller
110         _wvcheck $(_wvgetrv [ "$#" -eq 2 ]) "exactly 2 arguments"
111         echo "Comparing:" >&2
112         echo "$1" >&2
113         echo "--" >&2
114         echo "$2" >&2
115         _wvcheck $(_wvgetrv [ "$1" != "$2" ]) "'$1' != '$2'"
116 }
117
118
119 WVPASSRC()
120 {
121         RC=$?
122         _wvfind_caller
123         _wvcheck $(_wvgetrv [ $RC -eq 0 ]) "return code($RC) == 0"
124 }
125
126
127 WVFAILRC()
128 {
129         RC=$?
130         _wvfind_caller
131         _wvcheck $(_wvgetrv [ $RC -ne 0 ]) "return code($RC) != 0"
132 }
133
134
135 WVSTART()
136 {
137         echo
138         _wvfind_caller
139         echo "Testing \"$*\" in $WVCALLER_FILE:"
140 }