summaryrefslogblamecommitdiffstats
path: root/c/src/tests/tools/generic/difftest
blob: 9a35d4285e40d717616e1dba7c805846911a315f (plain) (tree)
1
2
3
4
5
           
 
                                                               
 
       




















































                                                                       
                             







                 
                                                      



                 
               
                                                            
          






               
                               










                                           
                                                       
           
                                        
            
                                         



                                    
                                                
                                                                  









                      
#!KSHELL -p
#
#  Check test results against official output from the src tree
#
#  $Id$
#

# XXX: do not run size.exe with this; it asks questions we don't answer

# how to do arith in bash
#    i=$((i * 2))
#    b=$((b + 1))

# progname=`basename $0`
progname=${0##*/}        # fast basename hack for ksh, bash

USAGE=\
"usage: $progname [ -opts ] test [ test ... ]
	-v	    -- verbose
        -l logdir   -- specify log directory (default is 'logdir')
"

#   log an error to stderr
prerr()
{
    echo "$*" >&2
}

fatal() {
    [ "$1" ] && prerr $*
    prerr "$USAGE"
    exit 1
}

warn() {
    [ "$1" ] && prerr $*
}

#
# process the options
#
# defaults for getopt vars
#

verbose=""
logdir=log

while getopts v12o:l: OPT
do
    case "$OPT" in
	v)
	    verbose="yes";;
        l)
            logdir="$OPTARG";;
        *)
            fatal;;
    esac
done
shiftcount=`expr $OPTIND - 1`
shift $shiftcount

args=$*

#
# Run the tests
#

test -d $logdir || fatal "No log directory: ./$logdir"

tests="$args"
if [ ! "$tests" ]
then
     cd $logdir
     set -- `echo sp?? mp??_? psx?? sp??_g mp??_?_g psx??_g`
     cd ..
     tests="$*"
fi

for t in $tests
do
   logfile=$t

   if [ ! -f $logdir/$logfile ]
   then
        continue
   fi

   echo $logfile
   echo

   case $t in
       mp*)
           mptest=`echo $t | sed 's/_.//'`
           node=`echo $t | sed 's/...._//'`
           tmp_scn_file=mptests/node$node/$mptest.scn;;
       sp*)
           tmp_scn_file=sptests/$t.scn;;
       psx*)
           tmp_scn_file=psxtests/$t.scn;;
       *)
           fatal "unknown test $t";;
   esac

   scn_file=`echo $tmp_scn_file | sed -e s/_g//`
   sed -e '/^$/d' < $logdir/$logfile | diff -b screens/$scn_file -
   echo
   echo
done

exit 0

# Local Variables: ***
# mode:ksh ***
# End: ***