* tests/regression/jasmin/runtest: Return correct exit code.
[cacao.git] / tests / regression / jasmin / runtest
1 #!/bin/sh
2
3 VERBOSE=0
4 EXITCODE=0
5
6 if [ -z "$JAVA" ] ; then
7         JAVA=../../../src/cacao/cacao
8 fi
9
10 if [ "$1" = "--verbose" ] ; then
11         shift
12         VERBOSE=1
13 fi
14
15 JASMIN_JAR=/usr/share/java/jasmin-sable.jar
16 JASMIN="$JAVA -cp $JASMIN_JAR jasmin.Main"
17
18 while [ -n "$1" ]
19 do
20     TEST="$1"
21     TESTBASENAME=$(basename "$TEST" .j)
22
23     TESTOUT="TESTOUT"
24     TESTEXPECT="TESTEXPECT"
25     TESTLOG="TESTLOG"
26     TESTERR="TESTERR"
27
28         EXPECTSTATUS=0
29
30         # compile the test
31
32     $JASMIN "$TEST" || exit 2
33
34         if grep 'ERROR:' "$TEST" >/dev/null ; then
35                 EXPECTSTATUS=1
36                 EXPECTERROR=$(grep -o 'ERROR:.*' "$TEST" | sed 's,ERROR:\s*,,')
37         fi
38
39         # run the test
40
41     $JAVA "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR"
42         TESTSTATUS=$?
43
44         if [ $TESTSTATUS -ne $EXPECTSTATUS ] ; then
45                 echo "FAIL: $TEST - expected status $EXPECTSTATUS, but got $TESTSTATUS"
46                 EXITCODE=1
47         fi
48
49         if [ $EXPECTSTATUS -eq 0 ] ; then
50                 grep 'OUTPUT:' "$TEST" | sed 's,.*OUTPUT:\s*,,' >"$TESTEXPECT"
51
52                 if diff -u "$TESTEXPECT" "$TESTOUT" ; then
53                         echo "PASS: $TEST"
54                 else
55                         echo "FAIL: $TEST"
56                         EXITCODE=1
57                 fi
58
59                 if [ "$VERBOSE" -eq "1" ] ; then
60                 $JAVA -sia "$TESTBASENAME" >"$TESTLOG" || exit 2
61                 ./show "$TESTLOG"
62                 fi
63         else
64                 if grep "$EXPECTERROR" "$TESTERR" >/dev/null ; then
65                         echo "PASS: $TEST - got expected error: $EXPECTERROR"
66                 else
67                         echo "FAIL: $TEST - did not get expected error: $EXPECTERROR"
68                         EXITCODE=1
69                 fi
70         fi
71
72     shift
73 done
74
75 rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" "$TESTERR"
76
77 exit $EXITCODE
78