diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2012-03-21 15:10:17 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2012-03-21 15:10:17 (GMT) |
commit | eb89d7b53ab95623ab454186a602e1cafc7391f0 (patch) | |
tree | ceafe458b3011e38853e765352d3c7e59bbecce1 /tools/h5jam/testh5jam.sh.in | |
parent | 3e468e6ff65d540a439e99ea568a6bff7add7cea (diff) | |
download | hdf5-eb89d7b53ab95623ab454186a602e1cafc7391f0.zip hdf5-eb89d7b53ab95623ab454186a602e1cafc7391f0.tar.gz hdf5-eb89d7b53ab95623ab454186a602e1cafc7391f0.tar.bz2 |
[svn-r22105] Description:
Bring r20557:22085 from trunk to this branch, also fixing some other
issues/failures in the branch simultaneously. The h5repack tests are still
failing, but Neil will be checking into those, so the branch can be fully
functional again.
Tested on:
Mac OSX/64 10.7.3 (amazon) w/debug
Diffstat (limited to 'tools/h5jam/testh5jam.sh.in')
-rw-r--r-- | tools/h5jam/testh5jam.sh.in | 315 |
1 files changed, 226 insertions, 89 deletions
diff --git a/tools/h5jam/testh5jam.sh.in b/tools/h5jam/testh5jam.sh.in index cfefcdc..f359926 100644 --- a/tools/h5jam/testh5jam.sh.in +++ b/tools/h5jam/testh5jam.sh.in @@ -35,6 +35,7 @@ UNJAM_BIN=`pwd` # The path of the jam binary CMP='cmp -s' DIFF='diff -c' AWK='awk' +CP='cp' nerrors=0 verbose=yes @@ -43,8 +44,75 @@ verbose=yes if test -z "$srcdir"; then srcdir=. fi -TESTFILES="$srcdir/testfiles" +# source dirs +SRC_TOOLS="$srcdir/.." +SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" + +# testfiles source dirs for tools +SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" +SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" +SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" +SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" +SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" +SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" +SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" +SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" + +TESTDIR=./testfiles +test -d $TESTDIR || mkdir $TESTDIR + +###################################################################### +# test files +# -------------------------------------------------------------------- +# All the test files copy from source directory to test directory +# NOTE: Keep this framework to add/remove test files. +# Any test files from other tools can be used in this framework. +# This list are also used for checking exist. +# Comment '#' without space can be used. +# -------------------------------------------------------------------- +LIST_HDF5_TEST_FILES=" +$SRC_H5JAM_TESTFILES/tall.h5 +$SRC_H5JAM_TESTFILES/twithub.h5 +$SRC_H5JAM_TESTFILES/twithub513.h5 +" +LIST_OTHER_TEST_FILES=" +$SRC_H5JAM_TESTFILES/u10.txt +$SRC_H5JAM_TESTFILES/u511.txt +$SRC_H5JAM_TESTFILES/u512.txt +$SRC_H5JAM_TESTFILES/u513.txt +$SRC_H5JAM_TESTFILES/h5jam-help.txt +$SRC_H5JAM_TESTFILES/h5unjam-help.txt +$SRC_H5JAM_TESTFILES/h5jam-ub-nohdf5.txt +" + +# Source in the output filter function definitions. +. $srcdir/../../bin/output_filter.sh + +# +# copy test files and expected output files from source dirs to test dir +# +COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" + +COPY_TESTFILES_TO_TESTDIR() +{ + # copy test files. Used -f to make sure get a new copy + for tstfile in $COPY_TESTFILES + do + # ignore '#' comment + echo $tstfile | tr -d ' ' | grep '^#' > /dev/null + RET=$? + if [ $RET -eq 1 ]; then + if [ -a $tstfile ]; then + $CP -f $tstfile $TESTDIR + else + echo "Error: FAILED to copy $tstfile" + echo " $tstfile doesn't exist!" + exit $EXIT_FAILURE + fi + fi + done +} # Print a line-line message left justified in a field of 70 characters # beginning with the word "Testing". @@ -381,150 +449,219 @@ UNJAMTEST () { } +# +# TOOLTEST_OUTPUT < JAM | UNJAM > expect-output.txt exit-code options +# +# Only verify stdout/stderr output from h5jam and j5unjam +# + +TOOLTEST_OUTPUT() { + if [ "$1" == "JAM" ]; then + TOOLCMD=$JAM_BIN/$JAM + elif [ "$1" == "UNJAM" ]; then + TOOLCMD=$JAM_BIN/$UNJAM + fi + shift + expect="$TESTDIR/$1" + actual="$TESTDIR/`basename $1 .ls`.out" + actual_err="$TESTDIR/`basename $1 .ls`.err" + actual_sav=${actual}-sav + actual_err_sav=${actual_err}-sav + shift + retvalexpect=$1 + shift + + TESTING h5jam $@ + ( + cd $TESTDIR + $TOOLCMD "$@" + ) >$actual 2>$actual_err + + # save actual and actual_err in case they are needed later. + cp $actual $actual_sav + STDOUT_FILTER $actual + cp $actual_err $actual_err_sav + STDERR_FILTER $actual_err + # combine stderr to stdout for output compare + cat $actual_err >> $actual + + if [ ! -f $expect ]; then + # Create the expect file if it doesn't yet exist. + echo " CREATED" + cp $actual $expect + rm -f $actual $actual_err + elif $CMP $expect $actual; then + echo " PASSED" + rm -f $actual $actual_err + else + echo "*FAILED*" + echo " Expected result differs from actual result" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' + fi +} + ############################################################################## ############################################################################## ### T H E T E S T S ### ############################################################################## ############################################################################## +# prepare for test +COPY_TESTFILES_TO_TESTDIR -JAMTEST $TESTFILES/u10.txt $TESTFILES/tall.h5 ta2.h5 -CHECKFILE $TESTFILES/tall.h5 ta2.h5 +#------------------------------- +# Testing h5jam +#------------------------------- +# help page +TOOLTEST_OUTPUT JAM h5jam-help.txt 0 -h + +# don't allow HDF5 format file as an user block file +TOOLTEST_OUTPUT JAM h5jam-ub-nohdf5.txt 1 -i tall.h5 -u tall.h5 -o tall-tmp.h5 + +JAMTEST $TESTDIR/u10.txt $TESTDIR/tall.h5 ta2.h5 +CHECKFILE $TESTDIR/tall.h5 ta2.h5 CLEANUP ta2.h5 -JAMTEST $TESTFILES/u511.txt $TESTFILES/tall.h5 ta3.h5 -CHECKFILE $TESTFILES/tall.h5 ta3.h5 +JAMTEST $TESTDIR/u511.txt $TESTDIR/tall.h5 ta3.h5 +CHECKFILE $TESTDIR/tall.h5 ta3.h5 CLEANUP ta3.h5 -JAMTEST $TESTFILES/u512.txt $TESTFILES/tall.h5 ta4.h5 -CHECKFILE $TESTFILES/tall.h5 ta4.h5 +JAMTEST $TESTDIR/u512.txt $TESTDIR/tall.h5 ta4.h5 +CHECKFILE $TESTDIR/tall.h5 ta4.h5 CLEANUP ta4.h5 -JAMTEST $TESTFILES/u513.txt $TESTFILES/tall.h5 ta5.h5 -CHECKFILE $TESTFILES/tall.h5 ta5.h5 +JAMTEST $TESTDIR/u513.txt $TESTDIR/tall.h5 ta5.h5 +CHECKFILE $TESTDIR/tall.h5 ta5.h5 CLEANUP ta5.h5 -SETUP $TESTFILES/tall.h5 ta.h5 -JAMTEST $TESTFILES/u10.txt ta.h5 -CHECKFILE $TESTFILES/tall.h5 ta.h5 -SETUP $TESTFILES/tall.h5 ta.h5 -JAMTEST $TESTFILES/u511.txt ta.h5 -CHECKFILE $TESTFILES/tall.h5 ta.h5 -SETUP $TESTFILES/tall.h5 ta.h5 -JAMTEST $TESTFILES/u512.txt ta.h5 -CHECKFILE $TESTFILES/tall.h5 ta.h5 -SETUP $TESTFILES/tall.h5 ta.h5 -JAMTEST $TESTFILES/u513.txt ta.h5 -CHECKFILE $TESTFILES/tall.h5 ta.h5 +SETUP $TESTDIR/tall.h5 ta.h5 +JAMTEST $TESTDIR/u10.txt ta.h5 +CHECKFILE $TESTDIR/tall.h5 ta.h5 +SETUP $TESTDIR/tall.h5 ta.h5 +JAMTEST $TESTDIR/u511.txt ta.h5 +CHECKFILE $TESTDIR/tall.h5 ta.h5 +SETUP $TESTDIR/tall.h5 ta.h5 +JAMTEST $TESTDIR/u512.txt ta.h5 +CHECKFILE $TESTDIR/tall.h5 ta.h5 +SETUP $TESTDIR/tall.h5 ta.h5 +JAMTEST $TESTDIR/u513.txt ta.h5 +CHECKFILE $TESTDIR/tall.h5 ta.h5 CLEANUP ta.h5 -JAMTEST $TESTFILES/u10.txt $TESTFILES/twithub.h5 tax2.h5 -CHECKFILE $TESTFILES/tall.h5 tax2.h5 +JAMTEST $TESTDIR/u10.txt $TESTDIR/twithub.h5 tax2.h5 +CHECKFILE $TESTDIR/tall.h5 tax2.h5 CLEANUP tax2.h5 -JAMTEST $TESTFILES/u511.txt $TESTFILES/twithub.h5 tax3.h5 -CHECKFILE $TESTFILES/tall.h5 tax3.h5 +JAMTEST $TESTDIR/u511.txt $TESTDIR/twithub.h5 tax3.h5 +CHECKFILE $TESTDIR/tall.h5 tax3.h5 CLEANUP tax3.h5 -JAMTEST $TESTFILES/u512.txt $TESTFILES/twithub.h5 tax4.h5 -CHECKFILE $TESTFILES/tall.h5 tax4.h5 +JAMTEST $TESTDIR/u512.txt $TESTDIR/twithub.h5 tax4.h5 +CHECKFILE $TESTDIR/tall.h5 tax4.h5 CLEANUP tax4.h5 -JAMTEST $TESTFILES/u513.txt $TESTFILES/twithub.h5 tax5.h5 -CHECKFILE $TESTFILES/tall.h5 tax5.h5 +JAMTEST $TESTDIR/u513.txt $TESTDIR/twithub.h5 tax5.h5 +CHECKFILE $TESTDIR/tall.h5 tax5.h5 CLEANUP tax5.h5 -JAMTEST $TESTFILES/u10.txt $TESTFILES/twithub513.h5 tax6.h5 -CHECKFILE $TESTFILES/tall.h5 tax6.h5 +JAMTEST $TESTDIR/u10.txt $TESTDIR/twithub513.h5 tax6.h5 +CHECKFILE $TESTDIR/tall.h5 tax6.h5 CLEANUP tax6.h5 -JAMTEST $TESTFILES/u511.txt $TESTFILES/twithub513.h5 tax7.h5 -CHECKFILE $TESTFILES/tall.h5 tax7.h5 +JAMTEST $TESTDIR/u511.txt $TESTDIR/twithub513.h5 tax7.h5 +CHECKFILE $TESTDIR/tall.h5 tax7.h5 CLEANUP tax7.h5 -JAMTEST $TESTFILES/u512.txt $TESTFILES/twithub513.h5 tax8.h5 -CHECKFILE $TESTFILES/tall.h5 tax8.h5 +JAMTEST $TESTDIR/u512.txt $TESTDIR/twithub513.h5 tax8.h5 +CHECKFILE $TESTDIR/tall.h5 tax8.h5 CLEANUP tax8.h5 -JAMTEST $TESTFILES/u513.txt $TESTFILES/twithub513.h5 tax9.h5 -CHECKFILE $TESTFILES/tall.h5 tax9.h5 +JAMTEST $TESTDIR/u513.txt $TESTDIR/twithub513.h5 tax9.h5 +CHECKFILE $TESTDIR/tall.h5 tax9.h5 CLEANUP tax9.h5 -JAMTEST $TESTFILES/u10.txt $TESTFILES/twithub.h5 --clobber taz2.h5 -CHECKFILE $TESTFILES/tall.h5 taz2.h5 +JAMTEST $TESTDIR/u10.txt $TESTDIR/twithub.h5 --clobber taz2.h5 +CHECKFILE $TESTDIR/tall.h5 taz2.h5 CLEANUP taz2.h5 -JAMTEST $TESTFILES/u511.txt $TESTFILES/twithub.h5 --clobber taz3.h5 -CHECKFILE $TESTFILES/tall.h5 taz3.h5 +JAMTEST $TESTDIR/u511.txt $TESTDIR/twithub.h5 --clobber taz3.h5 +CHECKFILE $TESTDIR/tall.h5 taz3.h5 CLEANUP taz3.h5 -JAMTEST $TESTFILES/u512.txt $TESTFILES/twithub.h5 --clobber taz4.h5 -CHECKFILE $TESTFILES/tall.h5 taz4.h5 +JAMTEST $TESTDIR/u512.txt $TESTDIR/twithub.h5 --clobber taz4.h5 +CHECKFILE $TESTDIR/tall.h5 taz4.h5 CLEANUP taz4.h5 -JAMTEST $TESTFILES/u513.txt $TESTFILES/twithub.h5 --clobber taz5.h5 -CHECKFILE $TESTFILES/tall.h5 taz5.h5 +JAMTEST $TESTDIR/u513.txt $TESTDIR/twithub.h5 --clobber taz5.h5 +CHECKFILE $TESTDIR/tall.h5 taz5.h5 CLEANUP taz5.h5 -JAMTEST $TESTFILES/u10.txt $TESTFILES/twithub513.h5 --clobber taz6.h5 -CHECKFILE $TESTFILES/tall.h5 taz6.h5 +JAMTEST $TESTDIR/u10.txt $TESTDIR/twithub513.h5 --clobber taz6.h5 +CHECKFILE $TESTDIR/tall.h5 taz6.h5 CLEANUP taz6.h5 -JAMTEST $TESTFILES/u511.txt $TESTFILES/twithub513.h5 --clobber taz7.h5 -CHECKFILE $TESTFILES/tall.h5 taz7.h5 +JAMTEST $TESTDIR/u511.txt $TESTDIR/twithub513.h5 --clobber taz7.h5 +CHECKFILE $TESTDIR/tall.h5 taz7.h5 CLEANUP taz7.h5 -JAMTEST $TESTFILES/u512.txt $TESTFILES/twithub513.h5 --clobber taz8.h5 -CHECKFILE $TESTFILES/tall.h5 taz8.h5 +JAMTEST $TESTDIR/u512.txt $TESTDIR/twithub513.h5 --clobber taz8.h5 +CHECKFILE $TESTDIR/tall.h5 taz8.h5 CLEANUP taz8.h5 -JAMTEST $TESTFILES/u513.txt $TESTFILES/twithub513.h5 --clobber taz9.h5 -CHECKFILE $TESTFILES/tall.h5 taz9.h5 +JAMTEST $TESTDIR/u513.txt $TESTDIR/twithub513.h5 --clobber taz9.h5 +CHECKFILE $TESTDIR/tall.h5 taz9.h5 CLEANUP taz9.h5 -SETUP $TESTFILES/twithub.h5 tay2.h5 -JAMTEST $TESTFILES/u10.txt tay2.h5 --clobber -CHECKFILE $TESTFILES/tall.h5 tay2.h5 +SETUP $TESTDIR/twithub.h5 tay2.h5 +JAMTEST $TESTDIR/u10.txt tay2.h5 --clobber +CHECKFILE $TESTDIR/tall.h5 tay2.h5 CLEANUP tay2.h5 -SETUP $TESTFILES/twithub.h5 tay3.h5 -JAMTEST $TESTFILES/u511.txt tay3.h5 --clobber -CHECKFILE $TESTFILES/tall.h5 tay3.h5 +SETUP $TESTDIR/twithub.h5 tay3.h5 +JAMTEST $TESTDIR/u511.txt tay3.h5 --clobber +CHECKFILE $TESTDIR/tall.h5 tay3.h5 CLEANUP tay3.h5 -SETUP $TESTFILES/twithub.h5 tay4.h5 -JAMTEST $TESTFILES/u512.txt tay4.h5 --clobber -CHECKFILE $TESTFILES/tall.h5 tay4.h5 +SETUP $TESTDIR/twithub.h5 tay4.h5 +JAMTEST $TESTDIR/u512.txt tay4.h5 --clobber +CHECKFILE $TESTDIR/tall.h5 tay4.h5 CLEANUP tay4.h5 -SETUP $TESTFILES/twithub.h5 tay5.h5 -JAMTEST $TESTFILES/u513.txt tay5.h5 --clobber -CHECKFILE $TESTFILES/tall.h5 tay5.h5 +SETUP $TESTDIR/twithub.h5 tay5.h5 +JAMTEST $TESTDIR/u513.txt tay5.h5 --clobber +CHECKFILE $TESTDIR/tall.h5 tay5.h5 CLEANUP tay5.h5 -SETUP $TESTFILES/twithub513.h5 tay6.h5 -JAMTEST $TESTFILES/u10.txt tay6.h5 --clobber -CHECKFILE $TESTFILES/tall.h5 tay6.h5 +SETUP $TESTDIR/twithub513.h5 tay6.h5 +JAMTEST $TESTDIR/u10.txt tay6.h5 --clobber +CHECKFILE $TESTDIR/tall.h5 tay6.h5 CLEANUP tay6.h5 -SETUP $TESTFILES/twithub513.h5 tay7.h5 -JAMTEST $TESTFILES/u511.txt tay7.h5 --clobber -CHECKFILE $TESTFILES/tall.h5 tay7.h5 +SETUP $TESTDIR/twithub513.h5 tay7.h5 +JAMTEST $TESTDIR/u511.txt tay7.h5 --clobber +CHECKFILE $TESTDIR/tall.h5 tay7.h5 CLEANUP tay7.h5 -SETUP $TESTFILES/twithub513.h5 tay8.h5 -JAMTEST $TESTFILES/u512.txt tay8.h5 --clobber -CHECKFILE $TESTFILES/tall.h5 tay8.h5 +SETUP $TESTDIR/twithub513.h5 tay8.h5 +JAMTEST $TESTDIR/u512.txt tay8.h5 --clobber +CHECKFILE $TESTDIR/tall.h5 tay8.h5 CLEANUP tay8.h5 -SETUP $TESTFILES/twithub513.h5 tay9.h5 -JAMTEST $TESTFILES/u513.txt tay9.h5 --clobber -CHECKFILE $TESTFILES/tall.h5 tay9.h5 +SETUP $TESTDIR/twithub513.h5 tay9.h5 +JAMTEST $TESTDIR/u513.txt tay9.h5 --clobber +CHECKFILE $TESTDIR/tall.h5 tay9.h5 CLEANUP tay9.h5 -SETUP $TESTFILES/twithub.h5 tai1.h5 +#--------------------------------- +# Testing h5unjam +#--------------------------------- +# help page +TOOLTEST_OUTPUT UNJAM h5unjam-help.txt 0 -h + +SETUP $TESTDIR/twithub.h5 tai1.h5 UNJAMTEST tai1.h5 o10.txt taa1.h5 -CHECKFILE $TESTFILES/tall.h5 taa1.h5 +CHECKFILE $TESTDIR/tall.h5 taa1.h5 CLEANUP taa1.h5 tai1.h5 o10.txt -SETUP $TESTFILES/twithub513.h5 tai2.h5 +SETUP $TESTDIR/twithub513.h5 tai2.h5 UNJAMTEST tai2.h5 o512.txt taa2.h5 -CHECKFILE $TESTFILES/tall.h5 taa2.h5 +CHECKFILE $TESTDIR/tall.h5 taa2.h5 CLEANUP taa2.h5 tai2.h5 o512.txt -SETUP $TESTFILES/twithub.h5 tai3.h5 +SETUP $TESTDIR/twithub.h5 tai3.h5 UNJAMTEST tai3.h5 - taa3.h5 -CHECKFILE $TESTFILES/tall.h5 taa3.h5 +CHECKFILE $TESTDIR/tall.h5 taa3.h5 CLEANUP taa3.h5 tai3.h5 -SETUP $TESTFILES/twithub513.h5 tai4.h5 +SETUP $TESTDIR/twithub513.h5 tai4.h5 UNJAMTEST tai4.h5 - taa4.h5 -CHECKFILE $TESTFILES/tall.h5 taa4.h5 +CHECKFILE $TESTDIR/tall.h5 taa4.h5 CLEANUP taa4.h5 tai4.h5 -SETUP $TESTFILES/twithub.h5 taj2.h5 +SETUP $TESTDIR/twithub.h5 taj2.h5 UNJAMTEST taj2.h5 --delete tac2.h5 -CHECKFILE $TESTFILES/tall.h5 tac2.h5 +CHECKFILE $TESTDIR/tall.h5 tac2.h5 CLEANUP tac2.h5 taj2.h5 -SETUP $TESTFILES/twithub513.h5 taj3.h5 +SETUP $TESTDIR/twithub513.h5 taj3.h5 UNJAMTEST taj3.h5 --delete tac3.h5 -CHECKFILE $TESTFILES/tall.h5 tac3.h5 +CHECKFILE $TESTDIR/tall.h5 tac3.h5 CLEANUP tac3.h5 taj3.h5 |