#! /bin/sh # Test scripts for h5toh4. # See the USAGE function for command usage. # Definitions of commands and variables CMD='../h5toh4' RM='rm -f' SED='sed ' H4DUMP='hdp' DIFF=diff CMP='cmp -s' nerrors=0 # number of errors (0) quitonerr=0 # quit on error (not) noclean=0 # no cleaning temp. files (yes) only="" # dumper sub-command to test only except="" # dumper sub-command to test not # Definitions of functions/shorthands # # Print Usage of the command USAGE() { echo "Usage: $0 [-help] [-noclean] [-quit] [-except ] [-only ]" echo " -help: display help information" echo " -noclean: do not clean away temporary files" echo " -quit: quit immediately if any test fails" echo " -except: skip one specific command" echo " -only: test one specific command" echo " can be one of {list, dumpsds, dumprig, dumpvd, dumpvg, dumpgr}" } # Print message with formats according to message level ($1) MESG() { level=$1 shift case $level in 0) echo '=============================' echo $* echo '=============================' ;; 3) echo '-----------------------------' echo $* echo '-----------------------------' ;; 6) echo "*** Arguments are $* ***" ;; *) echo "MESG(): Unknown level ($level)" exit 1 ;; esac } # Run the test to produce an output file which is then # compared with the expected ($1) output. # Note that this can be used to produce the expected # output files by replace "$output" with "$expected" # in the run-the-test commands. TEST() { # shift # print a id banner MESG 6 $@ # run the test ( echo "#############################" echo "'$CMD $@'" echo "#############################" cd testfiles $CMD "$@" cd .. ) case "$1" in "-m") shift for i in $@ do h4file=testfiles/`echo $i | $SED -e s/\.h5/.hdf/g` output=`echo $h4file | $SED -e s/\.hdf/.tmp/` expected=`echo $h4file | $SED -e s/\.hdf/.dmp/` $H4DUMP dumpvg $h4file > $output $H4DUMP dumpvd $h4file >> $output $H4DUMP dumpsds $h4file >> $output $CMP $expected $output if [ $? -ne 0 ] then echo $DIFF $expected $output $DIFF $expected $output echo " <<< FAILED >>>" nerrors=`expr $nerrors + 1` if [ $quitonerr -gt 0 ]; then FINISH fi fi done ;; * ) if [ $# -eq 1 ] then h4file=testfiles/`echo $1 | $SED -e s/\.h5/.hdf/` else h4file=testfiles/$2 fi output=`echo $h4file | $SED -e s/\.hdf/.tmp/` expected=`echo $h4file | $SED -e s/\.hdf/.dmp/` $H4DUMP dumpvg $h4file > $output $H4DUMP dumpvd $h4file >> $output $H4DUMP dumpsds $h4file >> $output $CMP $expected $output if [ $? -ne 0 ] then echo $DIFF $expected $output $DIFF $expected $output echo " <<< FAILED >>>" nerrors=`expr $nerrors + 1` if [ $quitonerr -gt 0 ]; then FINISH fi fi ;; esac # if [ $noclean -eq 0 ] # then # $RM $output # fi } # Report the result and exit FINISH() { if [ $nerrors -eq 0 ] then MESG 0 "All h5toh4 tests passed" else MESG 0 "h5toh4 tests failed: $nerrors" fi exit $nerrors } #=============== # Main Body #=============== # parse arguments while [ $# -gt 0 ] do case "$1" in "-quit") quitonerr=1 ;; "-noclean") noclean=1 ;; "-help") USAGE exit 0 ;; "-only") shift case "$1" in "h5toh4") only="$1" ;; *) echo "Unknown command: $1" USAGE exit 1 ;; esac ;; "-except") shift case "$1" in "h5toh4") except="$1" ;; *) echo "Unknown command: $1" USAGE exit 1 ;; esac ;; * ) echo "Unknow option: $1" USAGE exit 1 ;; esac shift done # Print a beginning banner MESG 0 "Running h5toh4 tests" # Test command list TestCmd=h5toh4 TestName="Test command $TestCmd" if [ "$except" != $TestCmd -a \( -z "$only" -o "$only" = $TestCmd \) ] then MESG 3 "$TestName" $RM ./testfiles/*.hdf ./testfiles/*.tmp TEST tgroup.h5 TEST tdset.h5 TEST tdset2.h5 TEST tattr.h5 TEST tslink.h5 TEST thlink.h5 TEST tcompound.h5 TEST tcompound2.h5 TEST tall.h5 $RM ./testfiles/*.tmp TEST tgroup.h5 tgroup.hdf TEST tdset.h5 tdset.hdf TEST tdset2.h5 tdset2.hdf TEST tattr.h5 tattr.hdf TEST tslink.h5 tslink.hdf TEST thlink.h5 thlink.hdf TEST tcompound.h5 tcompound.hdf TEST tcompound2.h5 tcompound2.hdf TEST tall.h5 tall.hdf $RM ./testfiles/*.hdf ./testfiles/*.tmp TEST -m tgroup.h5 tdset.h5 tdset2.h5 tattr.h5 tslink.h5 thlink.h5 tcompound.h5 tcompound2.h5 tall.h5 $RM ./testfiles/*.hdf ./testfiles/*.tmp else MESG 3 "$TestName <<>>" fi # End of test FINISH