* tests/regression/jasmin/runtest: Only show PASS if status is ok.
[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                         if [ $TESTSTATUS -eq 0 ] ; then
54                                 echo "PASS: $TEST"
55                         fi
56                 else
57                         echo "FAIL: $TEST - wrong output"
58                         EXITCODE=1
59                 fi
60
61                 if [ "$VERBOSE" -eq "1" ] ; then
62                 $JAVA -sia "$TESTBASENAME" >"$TESTLOG" || exit 2
63                 ./show "$TESTLOG"
64                 fi
65         else
66                 if grep "$EXPECTERROR" "$TESTERR" >/dev/null ; then
67                         echo "PASS: $TEST - got expected error: $EXPECTERROR"
68                 else
69                         echo "FAIL: $TEST - did not get expected error: $EXPECTERROR"
70                         EXITCODE=1
71                 fi
72         fi
73
74     shift
75 done
76
77 rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" "$TESTERR"
78
79 exit $EXITCODE
80