mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-06 14:56:51 +08:00
b93c9e2cf9
---------------------- ./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.
130 lines
3.9 KiB
Bash
Executable File
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
|
|
|