* tests/regression/jasmin/runtest: Add --color option.
[cacao.git] / tests / regression / jasmin / runtest
1 #!/bin/sh
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 JASMIN_JAR=/usr/share/java/jasmin-sable.jar
30 JASMIN="$JAVA -cp $JASMIN_JAR jasmin.Main"
31
32 while [ -n "$1" ]
33 do
34     TEST="$1"
35     TESTBASENAME=$(basename "$TEST" .j)
36
37     TESTOUT="TESTOUT"
38     TESTEXPECT="TESTEXPECT"
39     TESTLOG="TESTLOG"
40     TESTERR="TESTERR"
41
42         EXPECTSTATUS=0
43
44         # compile the test
45
46     $JASMIN "$TEST" || exit 2
47
48         if grep 'ERROR:' "$TEST" >/dev/null ; then
49                 EXPECTSTATUS=1
50                 EXPECTERROR=$(grep -o 'ERROR:.*' "$TEST" | sed 's,ERROR:\s*,,')
51         fi
52
53         # run the test
54
55     $JAVA "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR"
56         TESTSTATUS=$?
57
58         if [ $TESTSTATUS -ne $EXPECTSTATUS ] ; then
59                 echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TEST - expected status $EXPECTSTATUS, but got $TESTSTATUS${NOCOLOR}"
60                 EXITCODE=1
61         fi
62
63         if [ $EXPECTSTATUS -eq 0 ] ; then
64                 grep 'OUTPUT:' "$TEST" | sed 's,.*OUTPUT:\s*,,' >"$TESTEXPECT"
65
66                 if diff -u "$TESTEXPECT" "$TESTOUT" ; then
67                         if [ $TESTSTATUS -eq 0 ] ; then
68                                 echo $ECHOFLAGS "${PASSCOLOR}PASS: $TEST${NOCOLOR}"
69                         fi
70                 else
71                         echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TEST - wrong output${NOCOLOR}"
72                         EXITCODE=1
73                 fi
74
75                 if [ "$VERBOSE" -eq "1" ] ; then
76                 $JAVA -sia "$TESTBASENAME" >"$TESTLOG" || exit 2
77                 ./show "$TESTLOG"
78                 fi
79         else
80                 if grep "$EXPECTERROR" "$TESTERR" >/dev/null ; then
81                         echo $ECHOFLAGS "${PASSCOLOR}PASS: $TEST - got expected error: $EXPECTERROR${NOCOLOR}"
82                 else
83                         echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TEST - did not get expected error: $EXPECTERROR${NOCOLOR}"
84                         EXITCODE=1
85                 fi
86         fi
87
88     shift
89 done
90
91 rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" "$TESTERR"
92
93 exit $EXITCODE
94