summaryrefslogtreecommitdiffstats
path: root/tools/h5repack
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2010-08-06 17:51:53 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2010-08-06 17:51:53 (GMT)
commitae32ba97fdc56b4b5ebf473dda4b51dbbd1089ff (patch)
tree16d5820abee913a8dfec75d6d949366c7e499adb /tools/h5repack
parent2d9d60aef19cece24b45bd229f75d7c4cbe20e34 (diff)
downloadhdf5-ae32ba97fdc56b4b5ebf473dda4b51dbbd1089ff.zip
hdf5-ae32ba97fdc56b4b5ebf473dda4b51dbbd1089ff.tar.gz
hdf5-ae32ba97fdc56b4b5ebf473dda4b51dbbd1089ff.tar.bz2
[svn-r19182] Description:
Bring r19179 from trunk to 1.8 branch: Bring changes from Coverity branch back to trunk: r19079 & 19080: [BZ1942] h5dump -u to generate XML, it does not respect the -m option xml version of dump_data function didn't check for use of fp_format variable. Added new test expected file for committed bug 1942 r19103, 19104 & 19105: [BZ1821] h5repack -v did not display correct output for a selected compression. Needed new test for comparing output of -v option. Added new test file for solution to BZ1821 BZ1821 - Bring test changes from the shell script actually used. Tested on: Mac OS X/32 10.6.4 (amazon) debug & production (h5committested on branch)
Diffstat (limited to 'tools/h5repack')
-rw-r--r--tools/h5repack/CMakeLists.txt37
-rwxr-xr-xtools/h5repack/h5repack.sh.in39
-rw-r--r--tools/h5repack/h5repack_copy.c16
3 files changed, 80 insertions, 12 deletions
diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt
index adec48a..31e4e90 100644
--- a/tools/h5repack/CMakeLists.txt
+++ b/tools/h5repack/CMakeLists.txt
@@ -142,6 +142,7 @@ IF (BUILD_TESTING)
tfamily00008.h5
tfamily00009.h5
tfamily00010.h5
+ h5repack_filters.h5.ddl
)
FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES})
@@ -166,10 +167,12 @@ IF (BUILD_TESTING)
)
ENDFOREACH (h5c_file ${HDF5_COMMON_TEST_FILES})
-
MACRO (ADD_H5_TEST testname testtype testfile)
IF (${testtype} STREQUAL "SKIP")
- MESSAGE (STATUS "SKIP ${testfile} ${ARGN}")
+ ADD_TEST (
+ NAME H5REPACK-${testname}
+ COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out.${testfile}"
+ )
ELSE (${testtype} STREQUAL "SKIP")
ADD_TEST (
NAME H5REPACK-${testname}
@@ -182,6 +185,28 @@ IF (BUILD_TESTING)
ENDIF (${testtype} STREQUAL "SKIP")
ENDMACRO (ADD_H5_TEST testname testfile testtype)
+ MACRO (ADD_H5_CMP_TEST testname testfilter testtype resultcode resultfile)
+ IF (${testtype} STREQUAL "SKIP")
+ ADD_TEST (
+ NAME H5REPACK-${testname}
+ COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out.${resultfile}"
+ )
+ ELSE (${testtype} STREQUAL "SKIP")
+ ADD_TEST (
+ NAME H5REPACK-${testname}
+ COMMAND "${CMAKE_COMMAND}"
+ -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>"
+ -D "TEST_ARGS:STRING=${ARGN};${PROJECT_BINARY_DIR}/testfiles/${resultfile};${PROJECT_BINARY_DIR}/testfiles/out.${resultfile}"
+ -D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
+ -D "TEST_OUTPUT=${resultfile}.out"
+ -D "TEST_EXPECT=${resultcode}"
+ -D "TEST_FILTER=${testfilter}"
+ -D "TEST_REFERENCE=${PROJECT_BINARY_DIR}/testfiles/${resultfile}.ddl"
+ -P "${HDF5_RESOURCES_DIR}/runTest.cmake"
+ )
+ ENDIF (${testtype} STREQUAL "SKIP")
+ ENDMACRO (ADD_H5_CMP_TEST file)
+
#
# The tests
# We use the files generated by h5repacktst
@@ -306,6 +331,14 @@ IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE
SET (TESTTYPE "SKIP")
ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE)
ADD_H5_TEST (all_filters ${TESTTYPE} ${arg})
+
+# verbose gzip with individual object
+SET (arg ${FILE11} -v -f /dset_deflate:GZIP=9)
+SET (TESTTYPE "TEST")
+IF (NOT USE_FILTER_DEFLATE)
+ SET (TESTTYPE "SKIP")
+ENDIF (NOT USE_FILTER_DEFLATE)
+ADD_H5_CMP_TEST (gzip_verbose_filters "O?...ing file[^\n]+\n" ${TESTTYPE} 0 ${arg})
###########################################################
# the following tests assume the input files have filters
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
index 9225b9c..fee30bf 100755
--- a/tools/h5repack/h5repack.sh.in
+++ b/tools/h5repack/h5repack.sh.in
@@ -182,6 +182,37 @@ TOOLTEST1()
fi
rm -f $outfile
}
+
+# Call h5repack and compare output to a text file for -v option
+#
+TOOLTESTV()
+{
+ expect="$srcdir/../testfiles/$1"
+ actual="../testfiles/`basename $1 .ddl`.out"
+ actual_err="../testfiles/`basename $1 .ddl`.err"
+ shift
+
+ # Run test.
+ TESTING $H5REPACK $@
+
+ infile=$srcdir/testfiles/$1
+ path=`pwd`
+ outfile=$path/out.$1
+ shift
+ $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile >$actual 2>$actual_err
+ cat $actual_err >> $actual
+
+ if cmp -s $expect $actual; then
+ echo " PASSED"
+ else
+ echo "*FAILED*"
+ echo " Expected result (*.ddl) differs from actual result (*.out)"
+ nerrors="`expr $nerrors + 1`"
+ test yes = "$verbose" && diff -c $expect $actual |sed 's/^/ /'
+ fi
+
+# rm -f $actual $actual_err
+}
#
# The tests
@@ -285,6 +316,14 @@ if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_F
else
TOOLTEST $arg
fi
+
+# verbose gzip with individual object
+arg="$FILE11 -v -f dset_deflate:GZIP=9"
+if test $USE_FILTER_DEFLATE != "yes" ; then
+ SKIP $arg
+else
+ TOOLTEST $arg
+fi
###########################################################
# the following tests assume the input files have filters
diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c
index b4c191c..ece870f 100644
--- a/tools/h5repack/h5repack_copy.c
+++ b/tools/h5repack/h5repack_copy.c
@@ -642,19 +642,15 @@ int do_copy_objects(hid_t fidin,
req_filter = 1;
/* check if filters were requested for individual objects */
- for( u = 0; u < options->op_tbl->nelems; u++)
- {
+ for (u = 0; u < options->op_tbl->nelems; u++) {
int k;
- for( k = 0; k < options->op_tbl->objs[u].nfilters; k++)
- {
- if ( options->op_tbl->objs[u].filter->filtn > 0 )
- {
-
- req_filter = 1;
-
+ if (strcmp(travt->objs[i].name, options->op_tbl->objs[u].path) == 0) {
+ for (k = 0; k < options->op_tbl->objs[u].nfilters; k++) {
+ if (options->op_tbl->objs[u].filter->filtn > 0) {
+ req_filter = 1;
+ }
}
-
}
}