[BACK]Return to dotest CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari / src / test

Annotation of OpenXM_contrib/pari/src/test/dotest, Revision 1.1.1.1

1.1       maekawa     1: #!/bin/sh
                      2:
                      3: wrln () { echo "$1"; echo "$1" >> $file_bench; }
                      4:
                      5: wr () { echo $n "$1$c"; echo $n "$1$c" >> $file_bench; }
                      6:
                      7: confdir=../config
                      8: testdir=../src/test
                      9: execdir=.
                     10: #Format: filename_weight (weight = 1000 if omitted)
                     11: #  individual times are not modified whereas accumulated time is weighed
                     12: #  by (weight / 1000)
                     13: test -z "$testlist" && testlist="\
                     14:   objets\
                     15:   analyz\
                     16:   number\
                     17:   polyser\
                     18:   linear\
                     19:   elliptic\
                     20:   sumiter\
                     21:   graph\
                     22:   program\
                     23:   trans\
                     24:   nfields_200\
                     25: "
                     26: if test -f /bin/rm ; then RM=/bin/rm; else RM=rm ; fi
                     27: if sh -c 'test -x /bin/sh' 2>&-; then x=-x; else x=-r; fi
                     28: (echo "hi there\c" ; echo " ") > echotmp
                     29: if grep c echotmp >/dev/null 2>&1 ; then n=-n; c=; else n=; c='\c'; fi
                     30: $RM echotmp
                     31:
                     32: case "$1" in
                     33:   8) bitlen=64 ;;
                     34:   *) bitlen=32 ;;
                     35: esac
                     36: case "$2" in
                     37:   -c) testlist=compat;;
                     38:   -g) testlist=ploth;;
                     39:   -a) testlist=all;;
                     40: esac
                     41:
                     42: . $confdir/version
                     43: file_bench=Bench-$version.$patch
                     44: if (touch $file_bench 2> /dev/null); then
                     45:   SUF=
                     46: else
                     47:   if test ! $x $execdir/gp.exe; then
                     48:     echo "build gp.exe first" >&2; exit 1
                     49:   fi
                     50:   if (echo | gp -test -q 2> /dev/null); then
                     51:     gp=gp
                     52:   else
                     53:     gp="command /c gp"
                     54:   fi
                     55:   if (expr 2 \* 2 2> /dev/null); then exprbug=0; else exprbug=1; fi
                     56:   SUF="exe"; file_bench=Bench.$patch
                     57: fi
                     58: $RM -f $file_bench
                     59:
                     60: dotestSUF=${dotestSUF:-"sta dyn"}
                     61: for arg in $dotestSUF; do
                     62:   case "$arg" in
                     63:     sta|dyn) if test $x $execdir/gp-$arg; then SUF="$SUF $arg"; fi ;;
                     64:   esac
                     65: done
                     66: file_test=gp.out
                     67: for suf in $SUF; do eval time$suf=0 files$suf=; done
                     68: for testdata in $testlist; do
                     69:   O=$IFS;IFS=_;set $testdata;IFS=$O;testname=$1;testmul=$2
                     70:   file_in=$testdir/in/$testname
                     71:   file_out=$testdir/$bitlen/$testname
                     72:   if test ! -r $file_in -o ! -r $file_out; then
                     73:     wrln "Error! Missing file, can't test $testname"
                     74:   else
                     75:     testmul=${testmul:-1000}
                     76:     wr "* Testing $testname $c"
                     77:     for suf in $SUF; do
                     78:       wr "     for gp-$suf..$c"
                     79:       case "$suf" in
                     80:         exe) file_diff=$testname.dif;;
                     81:        *)   file_diff=$testname-$suf.dif
                     82:             gp=$execdir/gp-$suf;;
                     83:       esac
                     84:       $gp -q -test < $file_in > $file_test 2>&1
                     85:       diff -c $file_out $file_test > $file_diff
                     86:       pat=`grep "^[-+!] " $file_diff | grep -v "Total time"`
                     87:       time=`tail -2 $file_test | sed -n 's,.*Total time spent: \(.*\),\1,p'`
                     88:       if test -n "$time"; then
                     89:         eval t='$'time$suf
                     90:        if test -n "$exprbug"; then
                     91:          t=`expr $time \'\*\' $testmul / 1000 + $t`
                     92:        else
                     93:          t=`expr $time '*' $testmul / 1000 + $t`
                     94:        fi
                     95:         eval time$suf=$t
                     96:       fi
                     97:       if test -z "$pat"; then
                     98:         wr "TIME=$time";
                     99:       else
                    100:         eval BUG$suf=BUG
                    101:         eval files$suf=\"'$'files$suf $file_diff\"
                    102:         wr "BUG [${time:-0}]"
                    103:       fi
                    104:     done
                    105:     wrln
                    106:   fi
                    107: done
                    108: $RM $file_test
                    109: BUG=
                    110: for suf in $SUF; do
                    111:   B=`eval echo '$'BUG$suf`; BUG="$BUG$B"
                    112:   t=`eval echo '$'time$suf`
                    113:   if test -n "$B"; then B=' [BUG]'; fi
                    114:   wrln "+++$B Total bench for gp-$suf is $t"
                    115: done
                    116: if test -n "$BUG"; then
                    117:   pwd=`pwd`
                    118:   wrln
                    119:   wrln "PROBLEMS WERE NOTED. The following files list them in diff format: "
                    120:   wrln "Directory: $pwd"
                    121:   lastnote=ok; bug=
                    122:   for suf in $SUF; do
                    123:     B=`eval echo '$'BUG$suf`; BUG="$BUG$B"
                    124:     if test -n "$B"; then
                    125:       flist=`eval echo '$'files$suf`
                    126:       for f in $flist; do
                    127:         case "$f" in
                    128:           *program*) if test -n "$bug"; then bug=all; else bug=$suf; fi;;
                    129:           *) lastnote="";;
                    130:         esac
                    131:         wrln " $f"
                    132:       done
                    133:     fi
                    134:   done
                    135:   if test -n "$lastnote"; then
                    136:     case "$bug" in
                    137:       all) end=""
                    138:            file_diff=program-sta.dif;;
                    139:       sta|dyn)
                    140:            end=" (gp-$bug only)"
                    141:            file_diff=program-$bug.dif;;
                    142:       exe)
                    143:            end=" (gp-$bug)"
                    144:           file_diff=program.dif;;
                    145:     esac
                    146:     pat=`head -4 $file_diff|tail -1|grep "108,118"`
                    147:     if test -n "$pat"; then
                    148: cat << EOT
                    149: NOTE: actually, the only problem noted is that install() does not work
                    150: in your configuration$end, so you will not be able to use
                    151: this feature. Otherwise you can safely ignore the above warning.
                    152: EOT
                    153:     fi
                    154:   fi
                    155: fi

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>