mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-31 17:10:47 +08:00
[svn-r20168] BZ2048: Add -E --enable-error-stack option to h5dump.
Tested: local linux, heiwa, windows
This commit is contained in:
parent
600bcf0dc3
commit
c6382f50c5
2
MANIFEST
2
MANIFEST
@ -1166,6 +1166,8 @@
|
||||
./tools/testfiles/family_file00015.h5
|
||||
./tools/testfiles/family_file00016.h5
|
||||
./tools/testfiles/family_file00017.h5
|
||||
./tools/testfiles/filter_fail.h5
|
||||
./tools/testfiles/filter_fail.ddl
|
||||
./tools/testfiles/packedbits.h5
|
||||
./tools/testfiles/packedbits.ddl
|
||||
./tools/testfiles/file_space.h5
|
||||
|
@ -77,7 +77,7 @@ IF (TEST_MASK_ERROR)
|
||||
FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
|
||||
STRING(REGEX REPLACE "thread [0-9]*:" "thread (IDs):" TEST_STREAM "${TEST_STREAM}")
|
||||
STRING(REGEX REPLACE ": ([^\n]*)[.]c " ": (file name) " TEST_STREAM "${TEST_STREAM}")
|
||||
STRING(REGEX REPLACE "line [0-9]*" "line (number)" TEST_STREAM "${TEST_STREAM}")
|
||||
STRING(REGEX REPLACE " line [0-9]*" " line (number)" TEST_STREAM "${TEST_STREAM}")
|
||||
STRING(REGEX REPLACE "v[1-9]*[.][0-9]*[.]" "version (number)." TEST_STREAM "${TEST_STREAM}")
|
||||
STRING(REGEX REPLACE "[1-9]*[.][0-9]*[.][0-9]*[^)]*" "version (number)" TEST_STREAM "${TEST_STREAM}")
|
||||
STRING(REGEX REPLACE "H5Eget_auto[1-2]*" "H5Eget_auto(1 or 2)" TEST_STREAM "${TEST_STREAM}")
|
||||
|
@ -38,6 +38,7 @@ IF (BUILD_TESTING)
|
||||
# Copy all the HDF5 files from the test directory into the source directory
|
||||
# --------------------------------------------------------------------
|
||||
SET (HDF5_REFERENCE_FILES
|
||||
filter_fail.ddl
|
||||
packedbits.ddl
|
||||
tall-1.ddl
|
||||
tall-2.ddl
|
||||
@ -220,6 +221,7 @@ IF (BUILD_TESTING)
|
||||
tbin3.ddl
|
||||
tbin4.ddl
|
||||
out3.h5import
|
||||
filter_fail.h5
|
||||
packedbits.h5
|
||||
taindices.h5
|
||||
tall.h5
|
||||
@ -440,6 +442,25 @@ IF (BUILD_TESTING)
|
||||
SET (last_test "H5DUMP-output-cmp-${resultfile}")
|
||||
ENDMACRO (ADD_H5_EXPORT_TEST file)
|
||||
|
||||
MACRO (ADD_H5_MASK_TEST resultfile resultcode)
|
||||
ADD_TEST (
|
||||
NAME H5DUMP-${resultfile}
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
|
||||
-D "TEST_ARGS:STRING=${ARGN}"
|
||||
-D "TEST_FOLDER=${PROJECT_BINARY_DIR}"
|
||||
-D "TEST_OUTPUT=${resultfile}.out"
|
||||
-D "TEST_EXPECT=${resultcode}"
|
||||
-D "TEST_REFERENCE=${resultfile}.ddl"
|
||||
-D "TEST_MASK_ERROR=true"
|
||||
-P "${HDF5_RESOURCES_DIR}/runTest.cmake"
|
||||
)
|
||||
IF (NOT "${last_test}" STREQUAL "")
|
||||
SET_TESTS_PROPERTIES (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_test})
|
||||
ENDIF (NOT "${last_test}" STREQUAL "")
|
||||
SET (last_test "H5DUMP-${resultfile}")
|
||||
ENDMACRO (ADD_H5_MASK_TEST file)
|
||||
|
||||
MACRO (ADD_XML_SKIP_H5_TEST skipresultfile skipresultcode testtype)
|
||||
IF (${testtype} STREQUAL "SKIP")
|
||||
ADD_TEST (
|
||||
@ -495,6 +516,8 @@ IF (BUILD_TESTING)
|
||||
NAME H5DUMP-clearall-objects
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-E remove
|
||||
filter_fail.out
|
||||
filter_fail.out.err
|
||||
packedbits.out
|
||||
packedbits.out.err
|
||||
tall-1.out
|
||||
@ -1048,6 +1071,9 @@ IF (BUILD_TESTING)
|
||||
# test for dangling external links
|
||||
ADD_H5_TEST (textlink 0 textlink.h5)
|
||||
|
||||
# test for error stack display (BZ2048)
|
||||
ADD_H5_MASK_TEST (filter_fail 1 -E filter_fail.h5)
|
||||
|
||||
####### test for dataset packed bits ######
|
||||
IF (HDF5_USE_H5DUMP_PACKED_BITS)
|
||||
# Remove any output file left over from previous test run
|
||||
|
@ -92,6 +92,7 @@ static int display_fi = FALSE; /*file index */
|
||||
static int display_ai = TRUE; /*array index */
|
||||
static int display_escape = FALSE; /*escape non printable characters */
|
||||
static int display_region = FALSE; /*print region reference data */
|
||||
static int enable_error_stack= FALSE; /* re-enable error stack */
|
||||
|
||||
/* sort parameters */
|
||||
static H5_index_t sort_by = H5_INDEX_NAME; /*sort_by [creation_order | name] */
|
||||
@ -386,7 +387,7 @@ struct handler_t {
|
||||
* parameters. The long-named ones can be partially spelled. When
|
||||
* adding more, make sure that they don't clash with each other.
|
||||
*/
|
||||
static const char *s_opts = "hnpeyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o:b*F:s:S:Aq:z:m:R";
|
||||
static const char *s_opts = "hnpeyBHirVa:c:d:f:g:k:l:t:w:xD:uX:o:b*F:s:S:Aq:z:m:RE";
|
||||
static struct long_options l_opts[] = {
|
||||
{ "help", no_arg, 'h' },
|
||||
{ "hel", no_arg, 'h' },
|
||||
@ -499,6 +500,7 @@ static struct long_options l_opts[] = {
|
||||
{ "sort_order", require_arg, 'z' },
|
||||
{ "format", require_arg, 'm' },
|
||||
{ "region", no_arg, 'R' },
|
||||
{ "enable-error-stack", no_arg, 'E' },
|
||||
{ NULL, 0, '\0' }
|
||||
};
|
||||
|
||||
@ -661,6 +663,7 @@ usage(const char *prog)
|
||||
fprintf(stdout, " -X S, --xml-ns=S (XML Schema) Use qualified names n the XML\n");
|
||||
fprintf(stdout, " \":\": no namespace, default: \"hdf5:\"\n");
|
||||
fprintf(stdout, " E.g., to dump a file called `-f', use h5dump -- -f\n");
|
||||
fprintf(stdout, " -E, --enable-error-stack Show all HDF5 error reporting\n");
|
||||
fprintf(stdout, "\n");
|
||||
fprintf(stdout, " Subsetting is available by using the following options with a dataset\n");
|
||||
fprintf(stdout, " attribute. Subsetting is done by selecting a hyperslab from the data.\n");
|
||||
@ -4221,6 +4224,9 @@ end_collect:
|
||||
}
|
||||
/** end subsetting parameters **/
|
||||
|
||||
case 'E':
|
||||
enable_error_stack = TRUE;
|
||||
break;
|
||||
case 'h':
|
||||
usage(h5tools_getprogname());
|
||||
leave(EXIT_SUCCESS);
|
||||
@ -4342,12 +4348,14 @@ main(int argc, const char *argv[])
|
||||
h5tools_init();
|
||||
hand = parse_command_line(argc, argv);
|
||||
|
||||
if ( bin_output && outfname == NULL )
|
||||
{
|
||||
if (bin_output && outfname == NULL) {
|
||||
error_msg("binary output requires a file name, use -o <filename>\n");
|
||||
leave(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (enable_error_stack)
|
||||
H5Eset_auto2(H5E_DEFAULT, func, edata);
|
||||
|
||||
/* Check for conflicting options */
|
||||
if (doxml) {
|
||||
if (!display_all) {
|
||||
|
@ -196,6 +196,55 @@ TOOLTEST2() {
|
||||
|
||||
}
|
||||
|
||||
# same as TOOLTEST but filters error stack outp
|
||||
# Extract file name, line number, version and thread IDs because they may be different
|
||||
TOOLTEST3() {
|
||||
|
||||
expect="$srcdir/../testfiles/$1"
|
||||
actual="../testfiles/`basename $1 .ddl`.out"
|
||||
actual_err="../testfiles/`basename $1 .ddl`.err"
|
||||
actual_ext="../testfiles/`basename $1 .ddl`.ext"
|
||||
shift
|
||||
|
||||
# Run test.
|
||||
TESTING $DUMPER $@
|
||||
(
|
||||
echo "#############################"
|
||||
echo "Expected output for '$DUMPER $@'"
|
||||
echo "#############################"
|
||||
cd $srcdir/../testfiles
|
||||
$RUNSERIAL $DUMPER_BIN $@
|
||||
) >$actual 2>$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
|
||||
cat $actual_ext >> $actual
|
||||
|
||||
if [ ! -f $expect ]; then
|
||||
# Create the expect file if it doesn't yet exist.
|
||||
echo " CREATED"
|
||||
cp $actual $expect
|
||||
elif $CMP $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 $expect $actual |sed 's/^/ /'
|
||||
fi
|
||||
|
||||
# Clean up output file
|
||||
if test -z "$HDF5_NOCLEANUP"; then
|
||||
rm -f $actual $actual_err
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
# Print a "SKIP" message
|
||||
SKIP() {
|
||||
@ -581,6 +630,8 @@ TOOLTEST textlinkfar.ddl textlinkfar.h5
|
||||
# test for dangling external links
|
||||
TOOLTEST textlink.ddl textlink.h5
|
||||
|
||||
# test for error stack display (BZ2048)
|
||||
TOOLTEST3 filter_fail.ddl -E filter_fail.h5
|
||||
|
||||
# Report test results and exit
|
||||
if test $nerrors -eq 0 ; then
|
||||
|
30
tools/testfiles/filter_fail.ddl
Normal file
30
tools/testfiles/filter_fail.ddl
Normal file
@ -0,0 +1,30 @@
|
||||
#############################
|
||||
Expected output for 'h5dump -E filter_fail.h5'
|
||||
#############################
|
||||
HDF5 "filter_fail.h5" {
|
||||
GROUP "/" {
|
||||
DATASET "dset_fail" {
|
||||
DATATYPE H5T_STD_I32LE
|
||||
DATASPACE SIMPLE { ( 10 ) / ( 10 ) }
|
||||
DATA {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
HDF5-DIAG: Error detected in HDF5 (version (number)) thread (IDs):
|
||||
#000: (file name) line (number) in H5Dread(): can't read data
|
||||
major: Dataset
|
||||
minor: Read failed
|
||||
#001: (file name) line (number) in H5D_read(): can't read data
|
||||
major: Dataset
|
||||
minor: Read failed
|
||||
#002: (file name) line (number) in H5D_chunk_read(): unable to read raw data chunk
|
||||
major: Low-level I/O
|
||||
minor: Read failed
|
||||
#003: (file name) line (number) in H5D_chunk_lock(): data pipeline read failed
|
||||
major: Data filters
|
||||
minor: Filter operation failed
|
||||
#004: (file name) line (number) in H5Z_pipeline(): required filter is not registered
|
||||
major: Data filters
|
||||
minor: Read failed
|
||||
h5dump error: unable to print data
|
BIN
tools/testfiles/filter_fail.h5
Normal file
BIN
tools/testfiles/filter_fail.h5
Normal file
Binary file not shown.
@ -35,6 +35,7 @@ usage: h5dump [OPTIONS] file
|
||||
-X S, --xml-ns=S (XML Schema) Use qualified names n the XML
|
||||
":": no namespace, default: "hdf5:"
|
||||
E.g., to dump a file called `-f', use h5dump -- -f
|
||||
-E, --enable-error-stack Show all HDF5 error reporting
|
||||
|
||||
Subsetting is available by using the following options with a dataset
|
||||
attribute. Subsetting is done by selecting a hyperslab from the data.
|
||||
|
Loading…
x
Reference in New Issue
Block a user