summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/test/h5format_convert/testh5fc.sh.in137
1 files changed, 100 insertions, 37 deletions
diff --git a/tools/test/h5format_convert/testh5fc.sh.in b/tools/test/h5format_convert/testh5fc.sh.in
index c3056e8..9250df3 100644
--- a/tools/test/h5format_convert/testh5fc.sh.in
+++ b/tools/test/h5format_convert/testh5fc.sh.in
@@ -32,8 +32,8 @@ EXIT_FAILURE=1
FORMCONV=../../src/h5format_convert/h5format_convert # The tool name
FORMCONV_BIN=`pwd`/$FORMCONV # The path of the tool binary
-CHK_IDX=h5fc_chk_idx # The program name
-CHK_IDX_BIN=`pwd`/$CHK_IDX # The program to verify the chunk indexing type is v1 B-tree
+CHK_IDX=h5fc_chk_idx # The program name
+CHK_IDX_BIN=`pwd`/$CHK_IDX # The program to verify the chunk indexing type is v1 B-tree
RM='rm -rf'
CMP='cmp -s'
@@ -131,6 +131,7 @@ $SRC_H5FORMCONV_TESTFILES/old_h5fc_ext2_is.ddl
$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext2_sf.ddl
$SRC_H5FORMCONV_TESTFILES/old_h5fc_ext3_isf.ddl
$SRC_H5FORMCONV_TESTFILES/h5fc_v_err.ddl
+$SRC_H5FORMCONV_TESTFILES/h5fc_v_err.ddl.err
"
#
@@ -154,10 +155,10 @@ COPY_TESTFILES_TO_TESTDIR()
INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'`
INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'`
if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
- $CP -f $tstfile $TESTDIR
+ $CP -f $tstfile $TESTDIR
if [ $? -ne 0 ]; then
echo "Error: FAILED to copy $tstfile ."
-
+
# Comment out this to CREATE expected file
exit $EXIT_FAILURE
fi
@@ -177,7 +178,7 @@ CLEAN_TESTFILES_AND_TESTDIR()
if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then
$RM $TESTDIR
else
- $RM $TESTDIR/$TMPFILE
+ $RM $TESTDIR/$TMPFILE
$RM $TESTDIR/$TMPOUTFILE
$RM $TESTDIR/$TMPCHKFILE
$RM $TESTDIR/$TMPDMPFILE
@@ -201,13 +202,13 @@ TESTING() {
# non-zero value.
#
# $1: expected output
-# $2: the test file name
-# --fname might be empty or fname does not exist
-# --fname is copied to a temporary file for testing
+# $2: the test file name
+# --fname might be empty or fname does not exist
+# --fname is copied to a temporary file for testing
# $3 to at most $6--options to the tool such as:
-# -d dname or --dname=dname
-# -v or --verbose
-# -n or --noop
+# -d dname or --dname=dname
+# -v or --verbose
+# -n or --noop
TOOLTEST_OUT() {
# Prepare expected and actual output
expect="$TESTDIR/$1"
@@ -220,15 +221,15 @@ TOOLTEST_OUT() {
$RM $TESTDIR/$TMPOUTFILE
TFILE=$2
if [ ! -z "$2" ] && [ -e $TESTDIR/$2 ] ; then
- $CP $TESTDIR/$2 $TESTDIR/$TMPOUTFILE
- TFILE=$TMPOUTFILE
+ $CP $TESTDIR/$2 $TESTDIR/$TMPOUTFILE
+ TFILE=$TMPOUTFILE
fi
# Run test.
TESTING $FORMCONV $3 $4 $5 $6 $2
(
- cd $TESTDIR
- $RUNSERIAL $FORMCONV_BIN $3 $4 $5 $6 $TFILE
+ cd $TESTDIR
+ $RUNSERIAL $FORMCONV_BIN $3 $4 $5 $6 $TFILE
) >$actual 2>$actual_err
cp $actual $actual_sav
cp $actual_err $actual_err_sav
@@ -239,20 +240,82 @@ TOOLTEST_OUT() {
# Clean up output file
if test -z "$HDF5_NOCLEANUP"; then
- $RM $actual $actual_err
- $RM $actual $actual_err $actual_sav $actual_err_sav
+ $RM $actual $actual_err
+ $RM $actual $actual_err $actual_sav $actual_err_sav
+ fi
+}
+# Same as TOOLTEST_OUT but filters error stack output and compares to an error file
+TOOLTEST_MASK_OUT() {
+ # Prepare expected and actual output
+ expect="$TESTDIR/$1"
+ expect_err="$TESTDIR/$1.err"
+ actual_ext="$TESTDIR/$1.ext"
+ actual="$TESTDIR/`basename $1 .ddl`.out"
+ actual_err="$TESTDIR/`basename $1 .ddl`.err"
+ actual_sav=${actual}-sav
+ actual_err_sav=${actual_err}-sav
+
+ # Prepare the test file
+ $RM $TESTDIR/$TMPOUTFILE
+ TFILE=$2
+ if [ ! -z "$2" ] && [ -e $TESTDIR/$2 ] ; then
+ $CP $TESTDIR/$2 $TESTDIR/$TMPOUTFILE
+ TFILE=$TMPOUTFILE
+ fi
+
+ # Run test.
+ TESTING $FORMCONV $3 $4 $5 $6 $2
+ (
+ cd $TESTDIR
+ $RUNSERIAL $FORMCONV_BIN $3 $4 $5 $6 $TFILE
+ ) >$actual 2>$actual_err
+ cp $actual $actual_sav
+ cp $actual_err $actual_err_sav
+ STDERR_FILTER $actual_err
+
+ # Extract file name, line number, version and thread IDs because they may be different
+ sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \
+ -e 's/line [0-9]*/line (number)/' \
+ -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \
+ -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \
+ -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \
+ -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \
+ $actual_err > $actual_ext
+
+ # Compare output
+ if $CMP $expect $actual; then
+ if $CMP $expect_err $actual_ext; then
+ echo " PASSED"
+ else
+ echo "*FAILED*"
+ echo " Expected result (*.err) differs from actual result (*.oerr)"
+ nerrors="`expr $nerrors + 1`"
+ test yes = "$verbose" && $DIFF $expect_err $actual_ext |sed 's/^/ /'
+ fi
+ else
+ echo "*FAILED*"
+ echo " Expected result (*.ddl) differs from actual result (*.out)"
+ nerrors="`expr $nerrors + 1`"
+ test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /'
+ fi
+ COMPARE_OUT $expect_err $actual_err
+
+ # Clean up output file
+ if test -z "$HDF5_NOCLEANUP"; then
+ $RM $actual $actual_err
+ $RM $actual $actual_err $actual_sav $actual_err_sav
fi
}
-# To check that the tool exits success, no output
+# To check that the tool exits success, no output
# Assume all short options
-# $1 is the test file name
-# --fname exists
-# --fname is copied to a temporary file for testing
-# $2 is the temporary file name
+# $1 is the test file name
+# --fname exists
+# --fname is copied to a temporary file for testing
+# $2 is the temporary file name
# $3 to at most $5--options to the tool such as:
-# -d dname
-# -n
+# -d dname
+# -n
TOOLTEST() {
TESTING $FORMCONV $3 $4 $5 $1
$RM $TESTDIR/$2
@@ -260,11 +323,11 @@ TOOLTEST() {
$RUNSERIAL $FORMCONV_BIN $3 $4 $5 $TESTDIR/$2
exitcode=$?
if [ $exitcode -ne 0 ]; then
- echo "*FAILED*"
- echo " The tool exits failure"
- nerrors="`expr $nerrors + 1`"
+ echo "*FAILED*"
+ echo " The tool exits failure"
+ nerrors="`expr $nerrors + 1`"
else
- echo " PASSED"
+ echo " PASSED"
fi
}
@@ -280,11 +343,11 @@ IDX_CHECK() {
$RUNSERIAL $CHK_IDX_BIN $TESTDIR/$TMPCHKFILE $1
ret=$?
if [ $ret -eq 0 ]; then
- echo " PASSED"
+ echo " PASSED"
else
- echo "*FAILED*"
- echo " The chunk indexing type is not correct"
- nerrors="`expr $nerrors + 1`"
+ echo "*FAILED*"
+ echo " The chunk indexing type is not correct"
+ nerrors="`expr $nerrors + 1`"
fi
}
@@ -317,7 +380,7 @@ H5DUMP_CHECK() {
# Clean up output file
if test -z "$HDF5_NOCLEANUP"; then
- $RM $actual $actual_err
+ $RM $actual $actual_err
fi
}
@@ -326,12 +389,12 @@ SKIP() {
TESTING $STAT $@
echo " -SKIP-"
}
-
+
##############################################################################
##############################################################################
-### T H E T E S T S ###
+### T H E T E S T S ###
##############################################################################
##############################################################################
# prepare for test
@@ -377,7 +440,7 @@ TOOLTEST_OUT h5fc_v_n_all.ddl h5fc_non_v3.h5 -v -n
#
#
# h5format_convert -v h5fc_err_level.h5 (error encountered in converting the dataset)
-TOOLTEST_OUT h5fc_v_err.ddl h5fc_err_level.h5 -v
+TOOLTEST_MASK_OUT h5fc_v_err.ddl h5fc_err_level.h5 -v
#
#
#
@@ -436,7 +499,7 @@ TOOLTEST h5fc_non_v3.h5 $TMPFILE -n
#
# No output from tests: just check exit code
# h5format_convert h5fc_non_v3.h5
-# 1) convert all datasets
+# 1) convert all datasets
# 2) verify indexing types
TOOLTEST h5fc_non_v3.h5 $TMPCHKFILE
IDX_CHECK /DSET_NDATA_EA