summaryrefslogtreecommitdiffstats
path: root/tools/h5ls/testh5ls.sh.in
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2011-06-30 21:36:34 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2011-06-30 21:36:34 (GMT)
commit11349c2361ff12c0cbe4940c078cb3bf4a16ce90 (patch)
tree05e58aa06b508ac14875d22c19b342c7e71e76af /tools/h5ls/testh5ls.sh.in
parent9b1c14d12711bf9f20e196dd90d23df4b7881797 (diff)
downloadhdf5-11349c2361ff12c0cbe4940c078cb3bf4a16ce90.zip
hdf5-11349c2361ff12c0cbe4940c078cb3bf4a16ce90.tar.gz
hdf5-11349c2361ff12c0cbe4940c078cb3bf4a16ce90.tar.bz2
[svn-r21057] [hdf5 Trunk ] TODO
Purpose: Work for HDFFV-7602 - HDF5 command tools: Provide framework for reusable test files among tools Description: Provide framework to share test files among tools for tools test. Tested: jam (linux32-LE), koala (linux64-LE), heiwa (linuxppc64-BE)
Diffstat (limited to 'tools/h5ls/testh5ls.sh.in')
-rw-r--r--tools/h5ls/testh5ls.sh.in143
1 files changed, 137 insertions, 6 deletions
diff --git a/tools/h5ls/testh5ls.sh.in b/tools/h5ls/testh5ls.sh.in
index 798700b..bdf0af7 100644
--- a/tools/h5ls/testh5ls.sh.in
+++ b/tools/h5ls/testh5ls.sh.in
@@ -24,6 +24,7 @@ H5LS_BIN=`pwd`/$H5LS # The path of the tool binary
CMP='cmp -s'
DIFF='diff -c'
+CP='cp'
NLINES=20 # Max. lines of output to display if test fails
WORDS_BIGENDIAN="@WORDS_BIGENDIAN@"
@@ -31,12 +32,115 @@ WORDS_BIGENDIAN="@WORDS_BIGENDIAN@"
nerrors=0
verbose=yes
h5haveexitcode=yes # default is yes
-
# The build (current) directory might be different than the source directory.
if test -z "$srcdir"; then
srcdir=.
fi
-test -d ../testfiles || mkdir ../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_H5LS_TESTFILES/tall.h5
+$SRC_H5LS_TESTFILES/tarray1.h5
+$SRC_H5LS_TESTFILES/tattr2.h5
+$SRC_H5LS_TESTFILES/tcompound.h5
+$SRC_H5LS_TESTFILES/tdatareg.h5
+$SRC_H5LS_TESTFILES/tdset.h5
+$SRC_H5LS_TESTFILES/tempty.h5
+$SRC_H5LS_TESTFILES/textlink.h5
+$SRC_H5LS_TESTFILES/textlinksrc.h5
+$SRC_H5LS_TESTFILES/textlinktar.h5
+$SRC_H5LS_TESTFILES/tgroup.h5
+$SRC_H5LS_TESTFILES/tgrp_comments.h5
+$SRC_H5LS_TESTFILES/thlink.h5
+$SRC_H5LS_TESTFILES/tloop.h5
+$SRC_H5LS_TESTFILES/tnestedcomp.h5
+$SRC_H5LS_TESTFILES/tsaf.h5
+$SRC_H5LS_TESTFILES/tslink.h5
+$SRC_H5LS_TESTFILES/tsoftlinks.h5
+$SRC_H5LS_TESTFILES/tstr.h5
+$SRC_H5LS_TESTFILES/tudlink.h5
+$SRC_H5LS_TESTFILES/tvldtypes1.h5
+"
+
+LIST_OTHER_TEST_FILES="
+$SRC_H5LS_TESTFILES/help-1.ls
+$SRC_H5LS_TESTFILES/help-2.ls
+$SRC_H5LS_TESTFILES/help-3.ls
+$SRC_H5LS_TESTFILES/nosuchfile.ls
+$SRC_H5LS_TESTFILES/tall-1.ls
+$SRC_H5LS_TESTFILES/tall-2.ls
+$SRC_H5LS_TESTFILES/tarray1.ls
+$SRC_H5LS_TESTFILES/tattr2.ls
+$SRC_H5LS_TESTFILES/tcomp-1.ls
+$SRC_H5LS_TESTFILES/tdataregbe.ls
+$SRC_H5LS_TESTFILES/tdataregle.ls
+$SRC_H5LS_TESTFILES/tdset-1.ls
+$SRC_H5LS_TESTFILES/tempty.ls
+$SRC_H5LS_TESTFILES/textlink-1.ls
+$SRC_H5LS_TESTFILES/textlinksrc-1.ls
+$SRC_H5LS_TESTFILES/textlinksrc-2.ls
+$SRC_H5LS_TESTFILES/textlinksrc-3.ls
+$SRC_H5LS_TESTFILES/textlinksrc-4.ls
+$SRC_H5LS_TESTFILES/textlinksrc-5.ls
+$SRC_H5LS_TESTFILES/textlinksrc-6.ls
+$SRC_H5LS_TESTFILES/textlinksrc-7.ls
+$SRC_H5LS_TESTFILES/textlinksrc-1-old.ls
+$SRC_H5LS_TESTFILES/textlinksrc-2-old.ls
+$SRC_H5LS_TESTFILES/textlinksrc-3-old.ls
+$SRC_H5LS_TESTFILES/textlinksrc-6-old.ls
+$SRC_H5LS_TESTFILES/textlinksrc-7-old.ls
+$SRC_H5LS_TESTFILES/tsoftlinks-1.ls
+$SRC_H5LS_TESTFILES/tsoftlinks-2.ls
+$SRC_H5LS_TESTFILES/tsoftlinks-3.ls
+$SRC_H5LS_TESTFILES/tsoftlinks-4.ls
+$SRC_H5LS_TESTFILES/tsoftlinks-5.ls
+$SRC_H5LS_TESTFILES/textlinksrc-nodangle-1.ls
+$SRC_H5LS_TESTFILES/textlinksrc-nodangle-2.ls
+$SRC_H5LS_TESTFILES/tgrp_comments.ls
+$SRC_H5LS_TESTFILES/tsoftlinks-nodangle-1.ls
+$SRC_H5LS_TESTFILES/thlinks-nodangle-1.ls
+$SRC_H5LS_TESTFILES/tgroup.ls
+$SRC_H5LS_TESTFILES/tgroup-1.ls
+$SRC_H5LS_TESTFILES/tgroup-2.ls
+$SRC_H5LS_TESTFILES/tgroup-3.ls
+$SRC_H5LS_TESTFILES/thlink-1.ls
+$SRC_H5LS_TESTFILES/tloop-1.ls
+$SRC_H5LS_TESTFILES/tnestcomp-1.ls
+$SRC_H5LS_TESTFILES/tnestcomp-2.ls
+$SRC_H5LS_TESTFILES/tnestcomp-3.ls
+$SRC_H5LS_TESTFILES/tnestcomp-4.ls
+$SRC_H5LS_TESTFILES/tsaf.ls
+$SRC_H5LS_TESTFILES/tslink-1.ls
+$SRC_H5LS_TESTFILES/tstr-1.ls
+$SRC_H5LS_TESTFILES/tudlink-1.ls
+$SRC_H5LS_TESTFILES/tvldtypes1.ls
+$SRC_H5LS_TESTFILES/tvldtypes2le.ls
+$SRC_H5LS_TESTFILES/tvldtypes2be.ls
+"
+
# RUNSERIAL is used. Check if it can return exit code from executalbe correctly.
if [ -n "$RUNSERIAL_NOEXITCODE" ]; then
@@ -45,6 +149,31 @@ if [ -n "$RUNSERIAL_NOEXITCODE" ]; then
h5haveexitcode=no
fi
+#
+# 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".
TESTING() {
@@ -64,9 +193,9 @@ TESTING() {
# $1 -- actual output filename to use
# $2 and on -- argument for the h5ls tool
TOOLTEST() {
- expect="$srcdir/../testfiles/$1"
- actual="../testfiles/`basename $1 .ls`.out"
- actual_err="../testfiles/`basename $1 .ls`.err"
+ 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
@@ -78,7 +207,7 @@ TOOLTEST() {
# any unexpected output from that stream too.
TESTING $H5LS $@
(
- cd $srcdir/../testfiles
+ cd $TESTDIR
$RUNSERIAL $H5LS_BIN "$@"
) >$actual 2>$actual_err
@@ -123,6 +252,8 @@ TOOLTEST() {
### T H E T E S T S ###
##############################################################################
##############################################################################
+# prepare for test
+COPY_TESTFILES_TO_TESTDIR
# Toss in a bunch of tests. Not sure if they are the right kinds.
# test the help syntax