* tests/regression/jasmin/Makefile.am: Use JAVACMD as in other test dirs.
[cacao.git] / tests / regression / jasmin / runtest
1 #!/bin/bash
2
3 VERBOSE=0
4 EXITCODE=0
5 COLOR=0
6 PASSCOLOR=''
7 FAILCOLOR=''
8 NOCOLOR=''
9 ECHOFLAGS=''
10
11 if [ -z "$JAVACMD" ] ; then
12         JAVACMD=../../../src/cacao/cacao
13 fi
14
15 if [ -z "$TIMEOUT" ] ; then
16         TIMEOUT=20
17 fi
18
19 if [ -n "$TIMEOUTPROG" ] ; then
20         if [ -x "$TIMEOUTPROG" ] ; then
21                 echo "$0: using timeout program: $TIMEOUTPROG"
22                 echo "$0: timeout value [s]    : $TIMEOUT"
23                 TIMEOUTRUN="$TIMEOUTPROG $TIMEOUT"
24         else
25                 echo >&2 "$0: warning: timeout program not executable: $TIMEOUTPROG"
26         fi
27 fi
28
29 if [ -z "$TIMEOUTRUN" ] ; then
30         echo >&2 "$0: warning: running without timeout"
31 fi
32
33 if [ "$1" = "--verbose" ] ; then
34         shift
35         VERBOSE=1
36 fi
37
38 if [ "$1" = "--color" ] ; then
39         shift
40         COLOR=1
41         PASSCOLOR='\033[1;32m'
42         FAILCOLOR='\033[1;31m'
43         NOCOLOR='\033[0m'
44         ECHOFLAGS='-e'
45 fi
46
47 echo "java command: $JAVACMD $JAVAFLAGS"
48
49 while [ -n "$1" ]
50 do
51     TEST="$1"
52     TESTBASENAME=$(basename "$TEST" .j)
53
54     TESTOUT="TESTOUT"
55     TESTEXPECT="TESTEXPECT"
56     TESTLOG="TESTLOG"
57     TESTERR="TESTERR"
58         TESTSIA="TESTSIA"
59
60         EXPECTSTATUS=0
61         CHECKICMD=0
62
63         if grep 'ERROR:' "$TEST" >/dev/null ; then
64                 EXPECTSTATUS=1
65                 EXPECTERROR=$(grep 'ERROR:.*' "$TEST" | sed 's,.*ERROR:[ \t]*,,')
66         fi
67
68         if grep 'ICMD:' "$TEST" >/dev/null ; then
69                 CHECKICMD=1
70                 EXPECTICMD=$(grep 'ICMD:.*' "$TEST" | sed 's,.*ICMD:[ \t]*,,')
71         fi
72
73         # run the test
74
75         if [ -z "$TIMEOUTRUN" ] ; then
76                 eval $JAVACMD $JAVAFLAGS "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR"
77         else
78                 $TIMEOUTRUN $JAVACMD $JAVAFLAGS "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR"
79         fi
80         TESTSTATUS=$?
81
82         if [ $TESTSTATUS -ne $EXPECTSTATUS ] ; then
83                 echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - expected status $EXPECTSTATUS, but got $TESTSTATUS${NOCOLOR}"
84                 EXITCODE=1
85         fi
86
87         if [ $EXPECTSTATUS -eq 0 ] ; then
88                 grep 'OUTPUT:' "$TEST" | sed 's,.*OUTPUT:[ \t]*,,' >"$TESTEXPECT"
89
90                 if diff -u "$TESTEXPECT" "$TESTOUT" ; then
91                         if [ $TESTSTATUS -eq 0 ] ; then
92                                 echo $ECHOFLAGS "${PASSCOLOR}PASS: $TESTBASENAME${NOCOLOR}"
93                         fi
94                 else
95                         echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - wrong output${NOCOLOR}"
96                         EXITCODE=1
97                 fi
98
99                 if [ "$VERBOSE" -eq "1" ] ; then
100                         eval $JAVACMD $JAVAFLAGS -sia "$TESTBASENAME" >"$TESTLOG" || exit 2
101                         ./show "$TESTLOG"
102                 fi
103         else
104                 if grep "$EXPECTERROR" "$TESTERR" >/dev/null ; then
105                         echo $ECHOFLAGS "${PASSCOLOR}PASS: $TESTBASENAME - got expected error: $EXPECTERROR${NOCOLOR}"
106                 else
107                         echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - did not get expected error: $EXPECTERROR${NOCOLOR}"
108                         EXITCODE=1
109                 fi
110         fi
111
112         if [ "$CHECKICMD" -ne 0 ] ; then
113                 rm -f "$TESTSIA"
114                 touch "$TESTSIA"
115                 eval $JAVACMD $JAVAFLAGS -sia "$TESTBASENAME" >"$TESTSIA" 2>/dev/null
116                 cat "$TESTSIA" | sed -n '/^'"$TESTBASENAME"'\.main/,$p' | sed '/^=====.*flags: -1/,$d' | grep "$EXPECTICMD"
117         fi
118
119     shift
120 done
121
122 rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" "$TESTERR"
123
124 exit $EXITCODE
125