shift
TWICE=1
fi
+if [ "$1" = "-keep-logs" ]; then
+ shift
+ KEEP=1
+fi
COMPILER=$1
shift
+CLEANCOMPILER=`echo $COMPILER | cut -d ' ' -f 1`
CLEANER=$1
shift
LOGFILE=$1
shift
+EXPECTED=$1
+shift
TODO="$@"
-if [ -z "$COMPILER" -o -z "$CLEANER" -o -z "$LOGFILE" -o -z "$TODO" ]; then
+if [ -z "$COMPILER" -o -z "$CLEANER" -o -z "$LOGFILE" -o -z "$EXPECTED" -o -z "$TODO" ]; then
echo
echo "usage: "
- echo " do_tests.sh [-no-color] [-twice] ./compiler ./cleaner logfile tests.ma ..."
+ echo " do_tests.sh [-no-color] [-twice] [-keep-logs] ./compiler ./cleaner logfile expected_result test.ma ..."
echo
echo "options: "
echo " -no-color Do not use vt100 colors"
echo " -twice Run each test twice but show only the second run times"
+ echo " -keep-logs Do not dele __* files"
echo
+ echo "If expected_result is OK the result will be OK if the test compiles."
+ echo "Otherwise if expected_result is FAIL the result will be OK if the test"
+ echo "does not compile and the generated output is equal to test.log."
echo "The value of the DO_TESTS_EXTRA evironment variable"
echo "will be appended to each line."
exit 1
fi
-TMP=.__temp.txt
+export TIMEFORMAT="%2lR %2lU %2lS"
for T in $TODO; do
- printf "$COMPILER\t%-30s " $T
+ TT=`echo $T | sed s?/?.?`.not_for_matita
+ LOG=__log_$TT
+ DIFF=__diff_$TT
+ printf "$CLEANCOMPILER\t%-30s " $T
if [ "$TWICE" = "1" ]; then
$CLEANER $T 1>/dev/null 2>/dev/null
$COMPILER $T 1>/dev/null 2>/dev/null
fi
$CLEANER $T 1>/dev/null 2>/dev/null
- /usr/bin/time --quiet -o $TMP -f "%E %U %S" $COMPILER $T >> $LOGFILE 2>&1
+ TIMES=`(time $COMPILER $T > $LOG 2>&1) 2>&1`
RC=$?;
+ cat $LOG >> $LOGFILE
+ touch $DIFF
+ if [ $EXPECTED = "FAIL" ]; then
+ if [ $RC = 0 ]; then
+ echo "The test was successful but it should have failed!" > $DIFF
+ RC=1;
+ else
+ diff $LOG `basename $T .ma`.log > $DIFF
+ RC=$?
+ fi
+ fi
if [ $RC = 0 ]; then
- printf "$OK\t`cat $TMP`\t$DO_TESTS_EXTRA\n"
- rm $TMP
+ printf "$OK\t$TIMES\t$DO_TESTS_EXTRA\n"
else
- printf "$FAIL\t`cat $TMP`\t$DO_TESTS_EXTRA\n";
- rm $TMP
- exit $RC
+ printf "$FAIL\t$TIMES\t$DO_TESTS_EXTRA\n";
+ cat $DIFF
+ fi
+ if [ "$KEEP" != "1" ]; then
+ rm -f $LOG
+ rm -f $DIFF
fi
+ exit $RC
done