* tests/regression/jasmin/runtest: Made it a bash script, so it works
[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 [ "$1" = "--verbose" ] ; then
16         shift
17         VERBOSE=1
18 fi
19
20 if [ "$1" = "--color" ] ; then
21         shift
22         COLOR=1
23         PASSCOLOR='\033[1;32m'
24         FAILCOLOR='\033[1;31m'
25         NOCOLOR='\033[0m'
26         ECHOFLAGS='-e'
27 fi
28
29 if [ -z "$JASMIN_JAR" ] ; then
30         JASMIN_JAR=/usr/share/java/jasmin-sable.jar
31 fi
32
33 if [ ! -r "$JASMIN_JAR" ] ; then
34         echo >&2 "$0: warning: jasmin .jar is not available at $JASMIN_JAR"
35         exit 0
36 fi
37
38 JASMIN="$JAVA $JAVAFLAGS -cp $JASMIN_JAR jasmin.Main"
39
40 echo "java command: $JAVA $JAVAFLAGS"
41 echo "jasmin command: $JASMIN"
42
43 while [ -n "$1" ]
44 do
45     TEST="$1"
46     TESTBASENAME=$(basename "$TEST" .j)
47
48     TESTOUT="TESTOUT"
49     TESTEXPECT="TESTEXPECT"
50     TESTLOG="TESTLOG"
51     TESTERR="TESTERR"
52
53         EXPECTSTATUS=0
54
55         # compile the test
56
57     $JASMIN "$TEST" || exit 2
58
59         if grep 'ERROR:' "$TEST" >/dev/null ; then
60                 EXPECTSTATUS=1
61                 EXPECTERROR=$(grep 'ERROR:.*' "$TEST" | sed 's,.*ERROR:[ \t]*,,')
62         fi
63
64         # run the test
65
66     $JAVA $JAVAFLAGS "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR"
67         TESTSTATUS=$?
68
69         if [ $TESTSTATUS -ne $EXPECTSTATUS ] ; then
70                 echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - expected status $EXPECTSTATUS, but got $TESTSTATUS${NOCOLOR}"
71                 EXITCODE=1
72         fi
73
74         if [ $EXPECTSTATUS -eq 0 ] ; then
75                 grep 'OUTPUT:' "$TEST" | sed 's,.*OUTPUT:[ \t]*,,' >"$TESTEXPECT"
76
77                 if diff -u "$TESTEXPECT" "$TESTOUT" ; then
78                         if [ $TESTSTATUS -eq 0 ] ; then
79                                 echo $ECHOFLAGS "${PASSCOLOR}PASS: $TESTBASENAME${NOCOLOR}"
80                         fi
81                 else
82                         echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - wrong output${NOCOLOR}"
83                         EXITCODE=1
84                 fi
85
86                 if [ "$VERBOSE" -eq "1" ] ; then
87                         $JAVA $JAVAFLAGS -sia "$TESTBASENAME" >"$TESTLOG" || exit 2
88                         ./show "$TESTLOG"
89                 fi
90         else
91                 if grep "$EXPECTERROR" "$TESTERR" >/dev/null ; then
92                         echo $ECHOFLAGS "${PASSCOLOR}PASS: $TESTBASENAME - got expected error: $EXPECTERROR${NOCOLOR}"
93                 else
94                         echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - did not get expected error: $EXPECTERROR${NOCOLOR}"
95                         EXITCODE=1
96                 fi
97         fi
98
99     shift
100 done
101
102 rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" "$TESTERR"
103
104 exit $EXITCODE
105