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