#!/bin/bash debug= bench= if [ "x$DEBUG" = x1 ] ; then debug=--debug fi files= opts= once= now=`date +'%Y.%m.%d-%H.%M.%S'`-$$ log=logs/$now save_proofs= for f in "$@" ; do case "$f" in -o ) once=1 ;; --bench ) bench="yes" ;; --debug ) debug=--debug ;; @* ) files="$files $(cat $(echo "$f" | sed -e 's/^@//'))" ;; --save-proofs ) save_proofs=yes ;; -* ) opts="$opts $f" ;; * ) files="$files $f" ;; esac done if [ -n "$WINDIR" ] ; then CYGWIN=1 MONO= else CYGWIN= MONO="nice mono $debug" if [ "$bench" ] ; then MONO="mono $debug" fi fi FX7="$MONO ./fx7.exe $FX7_FLAGS " make || exit 1 echo "*** START $opts $files" >> $log test -f fx7_stats.csv && mv -f fx7_stats.csv{,.old} cleanup () { echo echo echo ----------- CLEANUP ----------- echo res=0 grep '\*\*\* OK:' $log grep ERROR: $log && res=1 echo "*** STOP $opts $files" >> $log perl -p -i -e 's/\r[^\r]*\r//g' $log #test -f fx7_stats.csv && mv -f fx7_stats.csv $log.csv ln -sf $log log ln -sf $log.csv log.csv exit $res } trap cleanup INT time for f in $files ; do echo >> $log echo "----------------------------------------------------------------------" >> $log echo "*** FILE $f" >> $log echo "*** FILE $f" rm -f run-result if [ "$bench" ] ; then LD_LIBRARY_PATH=$PWD $FX7 -t:300 -npb -csv-name:$log.csv $opts $f 2>&1 > $log.tmp res=$? cat $log.tmp cat $log.tmp >> $log rm $log.tmp else id=$$ ( export LD_LIBRARY_PATH; LD_LIBRARY_PATH=$PWD; $FX7 -t:300 -csv-name:$log.csv `if [ "$save_proofs" = yes ] ; then echo -o:ProofFile=$f.rw ; fi` $opts $f 2>&1; echo $? > run-result.$id ) | tee -a $log res=$(cat run-result.$id) rm -f run-result.$id fi case $res in 0 ) echo "*** OK: $f" >> $log ;; 1 ) echo "*** ERROR: (wrong answer) $f" >> $log ;; 2 ) echo "*** ERROR: (FatalError) $f" >> $log ;; 3 ) echo "*** ERROR: (TIMEOUT) $f" >> $log ;; 4 ) echo "*** ERROR: (other exception) $f" >> $log ;; 5 ) echo "*** ERROR: (non-UTVPI/non-linear) $f" >> $log ;; * ) echo "*** ERROR: (unknown, code=$res) $f" >> $log esac done cleanup