hdf5/tools/testh5dump.sh
Robb Matzke b93c9e2cf9 [svn-r1151] Changes since 19990318
----------------------

./Makefile.in
./configure.in
./configure		[REGENERATED]
./src/H5config.h.in	[REGENERATED]
./config/commence.in
./config/conclude.in
./config/dec-osf4.x
./config/depend.in
./config/freebsd
./config/linux-gnu
./config/linux-gnulibc1
./config/linux-gnulibc2
./config/solaris2.x
./examples/Makefile.in
./src/Makefile.in
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
./tools/testh5dump.sh
	Changes that allow hdf5 to be configured and compiled in a
	directory other than the source directory. This is especially
	useful if you want to concurrently compile with different
	compilers and/or compile flags, or if the hdf5 source is on
	read-only media like a CDROM.  The changes were surprisingly
	easy ;-) Here's what you can do now...

		  $ mkdir /tmp/build1  # or something
		  $ cd /tmp/build1
		  $ /cdrom/hdf5/configure # where ever the source is
		  $ make

	Paul, you'll have to change the testh5toh4 script similar to
	the way I changed testh5dump.sh.  I started working on it but
	then gave up because of a number of problems: (1) I had to
	comment out all the tests that let h5toh4 choose the output
	file name because it always tried to put the output file in
	the same directory as the input file, (2) if path names are
	used during the h4 dump then they interfere with the
	diff. The test works fine when run in the source directory,
	but try this instead:

	    $ gunzip <hdf5-1.1.67.tar.gz |tar xf -
	    $ chmod -R ugo-w hdf5-1.1.67
	    $ mkdir build
	    $ cd build
	    $ ../hdf5-1.1.67/configure
	    $ make check

	Dan, I didn't modify the pablo/Makefile.in because I have no
	way to test it. I think all you need to do is add a couple
	lines before the @COMMENCE@ line and add a couple search
	directories for header files. Anyway, it seems like almost an
	exact duplicate of the src/Makefile.in, so it shouldn't be a
	problem...

./Makefile.in
	Removes a few more temporary files during make clean and
	distclean.

./configure.in
	I fixed the creation of the time-stamp files so that the
	initial make doesn't have to regenerated all the makefiles
	(only GNU make users will see any change).

./src/H5R.c
	Changed a return type from `intn' to `int' for an API
	function.

./src/H5detect.c
	Added the volatile qualifier to a couple more variables.

./tools/h5tools.c
	Fixed a compiler warning about an unused local.

./tools/h5toh4.c
	Initialized `optind' to 1 because it's zero on my system. It
	should always be one on a unix system.

./tools/testh5toh4
	Redirected "broken pipe" messages to /dev/null so outut is
	formatted correctly.
1999-03-19 15:09:50 -05:00

130 lines
3.9 KiB
Bash
Executable File

#!/bin/sh
h5dump=h5dump # a relative name
cmp='cmp -s'
diff='diff -c'
nerrors=0
verbose=yes
# The build (current) directory might be different than the source directory.
if test "X$srcdir" = X; then
srcdir=.
fi
mkdir testfiles >/dev/null 2>&1
# Print a line-line message left justified in a field of 70 characters
# beginning with the word "Testing".
TESTING()
{
SPACES=" "
echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\n'
}
# 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()
{
expect=testfiles/$1
actual="testfiles/`basename $1 .ddl`.out"
shift
full=`pwd`/$h5dump
# Run test.
TESTING $h5dump $@
(
echo "#############################"
echo "Expected output for '$h5dump $@'"
echo "#############################"
cd $srcdir/testfiles
$full "$@" 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' ' ' <$srcdir/$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 $srcdir/$expect $actual |sed 's/^/ /'
fi
# Clean up output file
rm -f $expect-norm $actual-norm
if [ X = ${HDF5_NOCLEANUP:-X} ]; then
rm -f $actual
fi
}
##############################################################################
##############################################################################
### T H E T E S T S ###
##############################################################################
##############################################################################
# test for displaying groups
DUMP tgroup-1.ddl tgroup.h5
# test for displaying the selected groups
DUMP tgroup-2.ddl -g /g2 / /y tgroup.h5
# test for displaying simple space datasets
DUMP tdset-1.ddl tdset.h5
# test for displaying selected datasets
DUMP tdset-2.ddl -header -d dset1 /dset2 dset3 tdset.h5
# test for displaying attributes
DUMP tattr-1.ddl tattr.h5
# test for displaying the selected attributes of string type and scalar space
DUMP tattr-2.ddl -a attr1 attr4 attr5 tattr.h5
# test for header and error messages
DUMP tattr-3.ddl -header -a attr2 attr tattr.h5
# test for displaying soft links
DUMP tslink-1.ddl tslink.h5
# test for displaying the selected link
DUMP tslink-2.ddl -l slink2 tslink.h5
# tests for hard links
DUMP thlink-1.ddl thlink.h5
DUMP thlink-2.ddl -d /g1/dset2 /dset1 /g1/g1.1/dset3 thlink.h5
DUMP thlink-3.ddl -d /g1/g1.1/dset3 /g1/dset2 /dset1 thlink.h5
DUMP thlink-4.ddl -g /g1 thlink.h5
DUMP thlink-5.ddl -d /dset1 -g /g2 -d /g1/dset2 thlink.h5
# tests for compound data types
DUMP tcomp-1.ddl tcompound.h5
# test for named data types
DUMP tcomp-2.ddl -t /type1 /type2 /group1/type3 tcompound.h5
# test for unamed type
DUMP tcomp-3.ddl -t /#5992:0 -g /group2 tcompound.h5
# test for options
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
# test for loop detection
DUMP tloop-1.ddl tloop.h5
# test for string
DUMP tstr-1.ddl tstr.h5
if test "0" = "$nerrors"; then
echo "All h5dump tests passed."
fi