* src/vm/jit/verify/icmds.c: Check basic types of instance for field
[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 "$JAVA" ] ; then
12         JAVA=../../../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 if [ -z "$JASMIN_JAR" ] ; then
48         JASMIN_JAR=/usr/share/java/jasmin-sable.jar
49 fi
50
51 if [ ! -r "$JASMIN_JAR" ] ; then
52         echo >&2 "$0: warning: jasmin .jar is not available at $JASMIN_JAR"
53         exit 0
54 fi
55
56 JASMIN="$JAVA $JAVAFLAGS -cp $JASMIN_JAR jasmin.Main"
57
58 echo "java command: $JAVA $JAVAFLAGS"
59 echo "jasmin command: $JASMIN"
60
61 while [ -n "$1" ]
62 do
63     TEST="$1"
64     TESTBASENAME=$(basename "$TEST" .j)
65
66     TESTOUT="TESTOUT"
67     TESTEXPECT="TESTEXPECT"
68     TESTLOG="TESTLOG"
69     TESTERR="TESTERR"
70         TESTSIA="TESTSIA"
71
72         EXPECTSTATUS=0
73         CHECKICMD=0
74
75         # compile the test
76
77     $JASMIN "$TEST" || exit 2
78
79         if grep 'ERROR:' "$TEST" >/dev/null ; then
80                 EXPECTSTATUS=1
81                 EXPECTERROR=$(grep 'ERROR:.*' "$TEST" | sed 's,.*ERROR:[ \t]*,,')
82         fi
83
84         if grep 'ICMD:' "$TEST" >/dev/null ; then
85                 CHECKICMD=1
86                 EXPECTICMD=$(grep 'ICMD:.*' "$TEST" | sed 's,.*ICMD:[ \t]*,,')
87         fi
88
89         # run the test
90
91     $TIMEOUTRUN $JAVA $JAVAFLAGS "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR"
92         TESTSTATUS=$?
93
94         if [ $TESTSTATUS -ne $EXPECTSTATUS ] ; then
95                 echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - expected status $EXPECTSTATUS, but got $TESTSTATUS${NOCOLOR}"
96                 EXITCODE=1
97         fi
98
99         if [ $EXPECTSTATUS -eq 0 ] ; then
100                 grep 'OUTPUT:' "$TEST" | sed 's,.*OUTPUT:[ \t]*,,' >"$TESTEXPECT"
101
102                 if diff -u "$TESTEXPECT" "$TESTOUT" ; then
103                         if [ $TESTSTATUS -eq 0 ] ; then
104                                 echo $ECHOFLAGS "${PASSCOLOR}PASS: $TESTBASENAME${NOCOLOR}"
105                         fi
106                 else
107                         echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - wrong output${NOCOLOR}"
108                         EXITCODE=1
109                 fi
110
111                 if [ "$VERBOSE" -eq "1" ] ; then
112                         $JAVA $JAVAFLAGS -sia "$TESTBASENAME" >"$TESTLOG" || exit 2
113                         ./show "$TESTLOG"
114                 fi
115         else
116                 if grep "$EXPECTERROR" "$TESTERR" >/dev/null ; then
117                         echo $ECHOFLAGS "${PASSCOLOR}PASS: $TESTBASENAME - got expected error: $EXPECTERROR${NOCOLOR}"
118                 else
119                         echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - did not get expected error: $EXPECTERROR${NOCOLOR}"
120                         EXITCODE=1
121                 fi
122         fi
123
124         if [ "$CHECKICMD" -ne 0 ] ; then
125                 rm -f "$TESTSIA"
126                 touch "$TESTSIA"
127                 $JAVA $JAVAFLAGS -sia "$TESTBASENAME" >"$TESTSIA" 2>/dev/null
128                 cat "$TESTSIA" | sed -n '/^'"$TESTBASENAME"'\.main/,$p' | sed '/^=====.*flags: -1/,$d' | tee TEST | grep "$EXPECTICMD"
129         fi
130
131     shift
132 done
133
134 rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" "$TESTERR"
135
136 exit $EXITCODE
137