X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=tests%2Fregression%2Fjasmin%2Fruntest;h=b8a58860de4e8eb5e9a27d3e3d72ad15343b66fe;hb=2ad677568dae0cd28c95ad0433fbab2cfa61cead;hp=d00188ffad68b632c45de8164dc91cffe22f29a0;hpb=3efdf8d08cc67e67906d519118d3a3a509fc5f03;p=cacao.git diff --git a/tests/regression/jasmin/runtest b/tests/regression/jasmin/runtest index d00188ffa..b8a58860d 100755 --- a/tests/regression/jasmin/runtest +++ b/tests/regression/jasmin/runtest @@ -1,10 +1,33 @@ -#!/bin/sh +#!/bin/bash VERBOSE=0 EXITCODE=0 +COLOR=0 +PASSCOLOR='' +FAILCOLOR='' +NOCOLOR='' +ECHOFLAGS='' + +if [ -z "$JAVACMD" ] ; then + JAVACMD=../../../src/cacao/cacao +fi + +if [ -z "$TIMEOUT" ] ; then + TIMEOUT=20 +fi + +if [ -n "$TIMEOUTPROG" ] ; then + if [ -x "$TIMEOUTPROG" ] ; then + echo "$0: using timeout program: $TIMEOUTPROG" + echo "$0: timeout value [s] : $TIMEOUT" + TIMEOUTRUN="$TIMEOUTPROG $TIMEOUT" + else + echo >&2 "$0: warning: timeout program not executable: $TIMEOUTPROG" + fi +fi -if [ -z "$JAVA" ] ; then - JAVA=../../../src/cacao/cacao +if [ -z "$TIMEOUTRUN" ] ; then + echo >&2 "$0: warning: running without timeout" fi if [ "$1" = "--verbose" ] ; then @@ -12,8 +35,16 @@ if [ "$1" = "--verbose" ] ; then VERBOSE=1 fi -JASMIN_JAR=/usr/share/java/jasmin-sable.jar -JASMIN="$JAVA -cp $JASMIN_JAR jasmin.Main" +if [ "$1" = "--color" ] ; then + shift + COLOR=1 + PASSCOLOR='\033[1;32m' + FAILCOLOR='\033[1;31m' + NOCOLOR='\033[0m' + ECHOFLAGS='-e' +fi + +echo "java command: $JAVACMD $JAVAFLAGS" while [ -n "$1" ] do @@ -24,53 +55,71 @@ do TESTEXPECT="TESTEXPECT" TESTLOG="TESTLOG" TESTERR="TESTERR" + TESTSIA="TESTSIA" EXPECTSTATUS=0 - - # compile the test - - $JASMIN "$TEST" || exit 2 + CHECKICMD=0 if grep 'ERROR:' "$TEST" >/dev/null ; then EXPECTSTATUS=1 - EXPECTERROR=$(grep -o 'ERROR:.*' "$TEST" | sed 's,ERROR:\s*,,') + EXPECTERROR=$(grep 'ERROR:.*' "$TEST" | sed 's,.*ERROR:[ \t]*,,') + fi + + if grep 'ICMD:' "$TEST" >/dev/null ; then + CHECKICMD=1 + EXPECTICMD=$(grep 'ICMD:.*' "$TEST" | sed 's,.*ICMD:[ \t]*,,') fi # run the test - $JAVA "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR" + if [ -z "$TIMEOUTRUN" ] ; then + eval $JAVACMD $JAVAFLAGS "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR" + else + $TIMEOUTRUN $JAVACMD $JAVAFLAGS "$TESTBASENAME" >"$TESTOUT" 2>"$TESTERR" + fi TESTSTATUS=$? if [ $TESTSTATUS -ne $EXPECTSTATUS ] ; then - echo "FAIL: $TEST - expected status $EXPECTSTATUS, but got $TESTSTATUS" + echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - expected status $EXPECTSTATUS, but got $TESTSTATUS${NOCOLOR}" + EXITCODE=1 fi if [ $EXPECTSTATUS -eq 0 ] ; then - grep 'OUTPUT:' "$TEST" | sed 's,.*OUTPUT:\s*,,' >"$TESTEXPECT" + grep 'OUTPUT:' "$TEST" | sed 's,.*OUTPUT:[ \t]*,,' >"$TESTEXPECT" if diff -u "$TESTEXPECT" "$TESTOUT" ; then - echo "PASS: $TEST" + if [ $TESTSTATUS -eq 0 ] ; then + echo $ECHOFLAGS "${PASSCOLOR}PASS: $TESTBASENAME${NOCOLOR}" + fi else - echo "FAIL: $TEST" - EXITCODE=1 + echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - wrong output${NOCOLOR}" + EXITCODE=1 fi if [ "$VERBOSE" -eq "1" ] ; then - $JAVA -sia "$TESTBASENAME" >"$TESTLOG" || exit 2 - ./show "$TESTLOG" + eval $JAVACMD $JAVAFLAGS -sia "$TESTBASENAME" >"$TESTLOG" || exit 2 + ./show "$TESTLOG" fi else if grep "$EXPECTERROR" "$TESTERR" >/dev/null ; then - echo "PASS: $TEST - got expected error: $EXPECTERROR" + echo $ECHOFLAGS "${PASSCOLOR}PASS: $TESTBASENAME - got expected error: $EXPECTERROR${NOCOLOR}" else - echo "FAIL: $TEST - did not get expected error: $EXPECTERROR" + echo $ECHOFLAGS "${FAILCOLOR}FAIL: $TESTBASENAME - did not get expected error: $EXPECTERROR${NOCOLOR}" + EXITCODE=1 fi fi + if [ "$CHECKICMD" -ne 0 ] ; then + rm -f "$TESTSIA" + touch "$TESTSIA" + eval $JAVACMD $JAVAFLAGS -sia "$TESTBASENAME" >"$TESTSIA" 2>/dev/null + cat "$TESTSIA" | sed -n '/^'"$TESTBASENAME"'\.main/,$p' | sed '/^=====.*flags: -1/,$d' | grep "$EXPECTICMD" + fi + shift done -#rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" +rm -f "$TESTOUT" "$TESTEXPECT" "$TESTLOG" "$TESTERR" exit $EXITCODE