summaryrefslogtreecommitdiffstats
path: root/tools/testh5dump.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/testh5dump.sh')
-rwxr-xr-xtools/testh5dump.sh280
1 files changed, 85 insertions, 195 deletions
diff --git a/tools/testh5dump.sh b/tools/testh5dump.sh
index ea607d9..cb68db7 100755
--- a/tools/testh5dump.sh
+++ b/tools/testh5dump.sh
@@ -1,213 +1,103 @@
-#! /bin/sh
-# Test scripts for h5dump.
-# See the USAGE function for command usage.
+#!/bin/sh
+h5dump=h5dump # a relative name
+cmp='cmp -s'
+diff='diff -c'
-# Definitions of commands and variables
-CMD='../h5dump'
-RM='rm -f'
-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
+nerrors=0
+verbose=yes
-
-# Definitions of functions/shorthands
-#
-
-# Print Usage of the command
-USAGE()
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Testing".
+TESTING()
{
- echo "Usage: $0 [-help] [-noclean] [-quit] [-except <command>] [-only <command>]"
- 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 "<command> can be one of {list, dumpsds, dumprig, dumpvd, dumpvg, dumpgr}"
+ SPACES=" "
+ echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\n'
}
-# Print message with formats according to message level ($1)
-MESG()
+# Run a test and print PASS or *FAIL*. If a test fails then increment
+# the `nerrors' global variable and (if $verbose is set) display the
+# difference between the actual output and the expected output. The
+# expected output is given as the first argument to this function and
+# the actual output file is calculated by replacing the `.ddl' with
+# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a
+# non-zero value.
+DUMP()
{
- level=$1
+ expect=testfiles/$1
+ actual="testfiles/`basename $1 .ddl`.out"
shift
- case $level in
- 0)
- echo '============================='
- echo $*
- echo '============================='
- ;;
- 3)
- echo '-----------------------------'
- echo $*
- echo '-----------------------------'
- ;;
- 6)
- echo "*** $* ***"
- ;;
- *)
- 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()
-{
- # parse the arguments
- output=tmp.out
- expected=testfiles/$1
- shift
- # print a id banner
- MESG 6 $@
- # run the test
- (
+ # Run test.
+ TESTING $h5dump $@
+ (
echo "#############################"
- echo "Expected output for '$CMD $@'"
+ echo "Expected output for '$h5dump $@'"
echo "#############################"
cd testfiles
- $CMD "$@"
- ) > $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
+ ../$h5dump "$@" 2>/dev/null
+ ) >$actual
+
+ # Results. We normalize the result to account for different output
+ # widths. That is, the test should succeed if the only
+ # differences are in white space. We have to do this the hard way
+ # because diff isn't always smart enough.
+ tr '\n' ' ' <$actual |tr -s ' \t' |fold >$actual-norm
+ tr '\n' ' ' <$expect |tr -s ' \t' |fold >$expect-norm
+
+ if $cmp $expect-norm $actual-norm; then
+ echo " PASSED"
+ else
+ echo "*FAILED*"
+ echo " Actual result (*.out) differs from expected result (*.ddl)"
+ nerrors="`expr $nerrors + 1`"
+ test yes = "$verbose" && $diff $expect $actual |sed 's/^/ /'
fi
-# if [ $noclean -eq 0 ]
-# then
-# $RM $output
-# fi
-}
-
-# Report the result and exit
-FINISH()
-{
- if [ $nerrors -eq 0 ]
- then
- MESG 0 "All h5dump tests passed"
- else
- MESG 0 "h5dump tests failed: $nerrors"
+ # Clean up output file
+ rm -f $expect-norm $actual-norm
+ if [ X = ${HDF5_NOCLEANUP:-X} ]; then
+ rm -f $actual
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
- "h5dump")
- only="$1"
- ;;
- *)
- echo "Unknown command: $1"
- USAGE
- exit 1
- ;;
- esac
- ;;
- "-except")
- shift
- case "$1" in
- "h5dump")
- 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 h5dump tests"
-
-# Test command list
-TestCmd=h5dump
-TestName="Test command $TestCmd"
-if [ "$except" != $TestCmd -a \( -z "$only" -o "$only" = $TestCmd \) ]
-then
-MESG 3 "$TestName"
-TEST tgroup-1.ddl tgroup.h5
-TEST tgroup-2.ddl -g / tgroup.h5
-TEST tgroup-3.ddl -g /g2 /y tgroup.h5
-
-TEST tdset-1.ddl tdset.h5
-TEST tdset-2.ddl -d dset1 /dset2 tdset.h5
-TEST tdset-3.ddl -d /dset1 -header tdset.h5
-TEST tdset-4.ddl -d dset3 tdset.h5
-
-TEST tattr-1.ddl tattr.h5
-TEST tattr-2.ddl -a attr1 attr3 tattr.h5
-TEST tattr-3.ddl -header -a attr2 tattr.h5
-TEST tattr-4.ddl -a attr4 tattr.h5
-
-TEST tslink-1.ddl tslink.h5
-TEST tslink-2.ddl -l slink2 tslink.h5
-
-TEST thlink-1.ddl thlink.h5
-TEST thlink-2.ddl -d /g1/link2 /dset /g1/link1/link3 thlink.h5
-TEST thlink-3.ddl -d /dset /g1/link1/link3 /g1/link2 thlink.h5
-TEST thlink-4.ddl -g /g1 thlink.h5
-TEST thlink-5.ddl -d /dset -g /g2 -d /g1/link2 thlink.h5
-
-TEST tcomp-1.ddl tcompound.h5
-TEST tcomp-2.ddl -t /type1 /type2 /group1/type3 tcompound.h5
-TEST tcomp-3.ddl -d /group2/dset5 -g /group1 tcompound.h5
-TEST tcomp-4.ddl -t /#3432:0 -g /group2 tcompound.h5
-
-TEST tall-1.ddl tall.h5
-TEST tall-2.ddl -header -g /g1/g1.1 -a attr2 tall.h5
-TEST tall-3.ddl -d /g2/dset2.1 -l /g1/g1.2/g1.2.1/slink tall.h5
-
-else
-MESG 3 "$TestName <<<SKIPPED>>>"
-fi
-
-# End of test
-FINISH
+
+##############################################################################
+##############################################################################
+### T H E T E S T S ###
+##############################################################################
+##############################################################################
+
+DUMP tgroup-1.ddl tgroup.h5
+DUMP tgroup-2.ddl -g / tgroup.h5
+DUMP tgroup-3.ddl -g /g2 /y tgroup.h5
+
+DUMP tdset-1.ddl tdset.h5
+DUMP tdset-2.ddl -d dset1 /dset2 tdset.h5
+DUMP tdset-3.ddl -d /dset1 -header tdset.h5
+DUMP tdset-4.ddl -d dset3 tdset.h5
+
+DUMP tattr-1.ddl tattr.h5
+DUMP tattr-2.ddl -a attr1 attr3 tattr.h5
+DUMP tattr-3.ddl -header -a attr2 tattr.h5
+DUMP tattr-4.ddl -a attr4 tattr.h5
+
+DUMP tslink-1.ddl tslink.h5
+DUMP tslink-2.ddl -l slink2 tslink.h5
+
+DUMP thlink-1.ddl thlink.h5
+DUMP thlink-2.ddl -d /g1/link2 /dset /g1/link1/link3 thlink.h5
+DUMP thlink-3.ddl -d /dset /g1/link1/link3 /g1/link2 thlink.h5
+DUMP thlink-4.ddl -g /g1 thlink.h5
+DUMP thlink-5.ddl -d /dset -g /g2 -d /g1/link2 thlink.h5
+
+DUMP tcomp-1.ddl tcompound.h5
+DUMP tcomp-2.ddl -t /type1 /type2 /group1/type3 tcompound.h5
+DUMP tcomp-3.ddl -d /group2/dset5 -g /group1 tcompound.h5
+DUMP tcomp-4.ddl -t /#3432:0 -g /group2 tcompound.h5
+
+DUMP tall-1.ddl tall.h5
+DUMP tall-2.ddl -header -g /g1/g1.1 -a attr2 tall.h5
+DUMP tall-3.ddl -d /g2/dset2.1 -l /g1/g1.2/g1.2.1/slink tall.h5
+