diff options
author | Allen Byrne <50328838+byrnHDF@users.noreply.github.com> | 2023-05-21 03:52:38 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-21 03:52:38 (GMT) |
commit | f4b6f3d8e049b9308bdbdc468d146fbb5da51f5d (patch) | |
tree | 34ce5ae04599b4c494838fafd905020c65e3444e /tools | |
parent | 2eec25110a846baa5707d779c034f14af00e2af4 (diff) | |
download | hdf5-f4b6f3d8e049b9308bdbdc468d146fbb5da51f5d.zip hdf5-f4b6f3d8e049b9308bdbdc468d146fbb5da51f5d.tar.gz hdf5-f4b6f3d8e049b9308bdbdc468d146fbb5da51f5d.tar.bz2 |
Add h5copy help test and verify consistency (#2905)
Diffstat (limited to 'tools')
-rw-r--r-- | tools/src/h5copy/h5copy.c | 8 | ||||
-rw-r--r-- | tools/src/h5import/h5import.c | 35 | ||||
-rw-r--r-- | tools/src/h5stat/h5stat.c | 2 | ||||
-rw-r--r-- | tools/test/h5copy/CMakeTests.cmake | 32 | ||||
-rw-r--r-- | tools/test/h5copy/testfiles/h5copy_help1.ddl | 49 | ||||
-rw-r--r-- | tools/test/h5copy/testfiles/h5copy_help2.ddl | 49 | ||||
-rw-r--r-- | tools/test/h5stat/testfiles/h5stat_help1.ddl | 2 | ||||
-rw-r--r-- | tools/test/h5stat/testfiles/h5stat_help2.ddl | 2 | ||||
-rw-r--r-- | tools/test/h5stat/testfiles/h5stat_nofile.ddl | 2 |
9 files changed, 158 insertions, 23 deletions
diff --git a/tools/src/h5copy/h5copy.c b/tools/src/h5copy/h5copy.c index c4e4275..3734628 100644 --- a/tools/src/h5copy/h5copy.c +++ b/tools/src/h5copy/h5copy.c @@ -46,8 +46,6 @@ char *str_flag = NULL; * Programmer: Quincey Koziol * Saturday, 31. January 2004 * - * Modifications: - * *------------------------------------------------------------------------- */ static void @@ -77,8 +75,6 @@ leave(int ret) * * Programmer: Pedro Vicente Nunes, 7/8/2006 * - * Modifications: - * *------------------------------------------------------------------------- */ static void @@ -159,8 +155,6 @@ usage(void) * * Programmer: Pedro Vicente Nunes, 7/8/2006 * - * Modifications: - * *------------------------------------------------------------------------- */ @@ -207,8 +201,6 @@ parse_flag(const char *s_flag, unsigned *flag) * * Programmer: Pedro Vicente Nunes * - * Modifications: - * *------------------------------------------------------------------------- */ diff --git a/tools/src/h5import/h5import.c b/tools/src/h5import/h5import.c index 2bd34dd..9baec6b 100644 --- a/tools/src/h5import/h5import.c +++ b/tools/src/h5import/h5import.c @@ -90,6 +90,8 @@ main(int argc, char *argv[]) const char *err9 = "Cannot specify more than 30 input files in one call to h5import.\n"; const char *err10 = "Length of output file name limited to 255 chars.\n"; + H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + h5tools_setprogname(PROGRAMNAME); h5tools_setstatus(EXIT_SUCCESS); @@ -235,6 +237,8 @@ main(int argc, char *argv[]) if (process(opt) == -1) goto err; + H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + for (i = 0; i < opt->fcount; i++) { in = &(opt->infiles[i].in); if (in->sizeOfDimension) @@ -342,9 +346,6 @@ gtoken(char *s) * * Programmer: pkmat * - * Modifications: pvn - * 7/23/2007. Added support for STR type, extra parameter FILE_ID - * *------------------------------------------------------------------------- */ @@ -363,6 +364,8 @@ processDataFile(char *infile, struct Input *in, hid_t file_id) const char *err11 = "Error in reading string data.\n"; int retval = -1; + H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + /*------------------------------------------------------------------------- * special case for opening binary classes in H5_HAVE_WIN32_API * "FP" denotes a floating point binary file, @@ -449,13 +452,15 @@ processDataFile(char *infile, struct Input *in, hid_t file_id) goto error; } + H5_GCC_CLANG_DIAG_ON("format-nonliteral") + /* Set success return value */ retval = 0; error: if (strm) HDfclose(strm); - return (retval); + return retval; } static int @@ -1436,10 +1441,12 @@ processConfigurationFile(char *infile, struct Input *in) const char *err19 = "Unable to get integer value.\n"; const char *err20 = "Unable to get subset values.\n"; - /* create vector to map which keywords have been found - check vector after each keyword to check for violation - at the end check vector to see if required fields have been provided - process the output file according to the options + H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + + /* - create vector to map which keywords have been found + * - check vector after each keyword to check for violation + * - at the end check vector to see if required fields have been provided + * - process the output file according to the options */ /* Initialize machine endian */ @@ -2436,13 +2443,15 @@ processConfigurationFile(char *infile, struct Input *in) } } + H5_GCC_CLANG_DIAG_ON("format-nonliteral") + /* Set success return value */ retval = 0; error: if (strm) HDfclose(strm); - return (retval); + return retval; } static int @@ -4629,6 +4638,8 @@ process(struct Options *opt) "Error in creating the output data set. Dataset with the same name may exist at the specified path\n"; const char *err6 = "Error in writing the output data set.\n"; + H5_GCC_CLANG_DIAG_OFF("format-nonliteral") + H5E_BEGIN_TRY { if ((file_id = H5Fopen(opt->outfile, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) { @@ -4761,8 +4772,10 @@ process(struct Options *opt) } /* STR */ + H5_GCC_CLANG_DIAG_ON("format-nonliteral") + H5Fclose(file_id); - return (0); + return 0; } uint16_t @@ -5104,7 +5117,7 @@ help(char *name) void usage(char *name) { - (void)HDfprintf(stdout, "\nUsage:\t%s -h[elp], OR\n", name); + (void)HDfprintf(stdout, "\nusage:\t%s -h[elp], OR\n", name); (void)HDfprintf(stdout, "\t%s <infile> -c[onfig] <configfile> \ [<infile> -c[config] <configfile>...] -o[utfile] <outfile> \n\n", name); diff --git a/tools/src/h5stat/h5stat.c b/tools/src/h5stat/h5stat.c index d0fe4b3..33be678 100644 --- a/tools/src/h5stat/h5stat.c +++ b/tools/src/h5stat/h5stat.c @@ -208,7 +208,7 @@ static void usage(const char *prog) { HDfflush(stdout); - HDfprintf(stdout, "Usage: %s [OPTIONS] file\n", prog); + HDfprintf(stdout, "usage: %s [OPTIONS] file\n", prog); HDfprintf(stdout, "\n"); HDfprintf(stdout, " ERROR\n"); HDfprintf(stdout, " --enable-error-stack Prints messages from the HDF5 error stack as they occur\n"); diff --git a/tools/test/h5copy/CMakeTests.cmake b/tools/test/h5copy/CMakeTests.cmake index 05288b4..b47000a 100644 --- a/tools/test/h5copy/CMakeTests.cmake +++ b/tools/test/h5copy/CMakeTests.cmake @@ -35,6 +35,8 @@ ${HDF5_TOOLS_TEST_H5COPY_SOURCE_DIR}/testfiles/tudfilter.h5_ERR.txt ${HDF5_TOOLS_TEST_H5COPY_SOURCE_DIR}/testfiles/h5copy_plugin_fail_ERR.out.h5.txt ${HDF5_TOOLS_TEST_H5COPY_SOURCE_DIR}/testfiles/h5copy_plugin_test.out.h5.txt + ${HDF5_TOOLS_TEST_H5COPY_SOURCE_DIR}/testfiles/h5copy_help1.ddl + ${HDF5_TOOLS_TEST_H5COPY_SOURCE_DIR}/testfiles/h5copy_help2.ddl ) file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") @@ -393,6 +395,32 @@ endif () endmacro () + macro (ADD_SIMPLE_TEST resultfile resultcode) + # If using memchecker add tests without using scripts + if (HDF5_ENABLE_USING_MEMCHECKER) + add_test (NAME H5COPY-${resultfile} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5copy${tgt_file_ext}> ${ARGN}) + if (${resultcode}) + set_tests_properties (H5COPY-${resultfile} PROPERTIES WILL_FAIL "true") + endif () + else (HDF5_ENABLE_USING_MEMCHECKER) + add_test ( + NAME H5COPY-${resultfile} + COMMAND "${CMAKE_COMMAND}" + -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" + -D "TEST_PROGRAM=$<TARGET_FILE:h5copy${tgt_file_ext}>" + -D "TEST_ARGS=${ARGN}" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" + -D "TEST_OUTPUT=./testfiles/${resultfile}.out" + -D "TEST_EXPECT=${resultcode}" + -D "TEST_REFERENCE=./testfiles/${resultfile}.ddl" + -P "${HDF_RESOURCES_DIR}/runTest.cmake" + ) + endif () + set_tests_properties (H5COPY-${resultfile} PROPERTIES + WORKING_DIRECTORY "${PROJECT_BINARY_DIR}" + ) + endmacro () + ############################################################################## ############################################################################## ### T H E T E S T S ### @@ -420,6 +448,10 @@ set (USE_FILTER_SZIP "true") endif () +# Test for help flag + ADD_SIMPLE_TEST (h5copy_help1 0 -h) + ADD_SIMPLE_TEST (h5copy_help2 0 --help) + # "Test copying various forms of datasets" ADD_H5_TEST (simple 0 ${HDF_FILE1}.h5 -v -s simple -d simple) ADD_H5_TEST (chunk 0 ${HDF_FILE1}.h5 -v -s chunk -d chunk) diff --git a/tools/test/h5copy/testfiles/h5copy_help1.ddl b/tools/test/h5copy/testfiles/h5copy_help1.ddl new file mode 100644 index 0000000..418faea --- /dev/null +++ b/tools/test/h5copy/testfiles/h5copy_help1.ddl @@ -0,0 +1,49 @@ + +usage: h5copy [OPTIONS] [OBJECTS...] + OBJECTS + -i, --input input file name + -o, --output output file name + -s, --source source object name + -d, --destination destination object name + ERROR + --enable-error-stack Prints messages from the HDF5 error stack as they occur. + Optional value 2 also prints file open errors. + OPTIONS + -h, --help Print a usage message and exit + -p, --parents No error if existing, make parent groups as needed + -v, --verbose Print information about OBJECTS and OPTIONS + -V, --version Print version number and exit + -f, --flag Flag type + + Flag type is one of the following strings: + + shallow Copy only immediate members for groups + + soft Expand soft links into new objects + + ext Expand external links into new objects + + ref Copy references and any referenced objects, i.e., objects + that the references point to. + Referenced objects are copied in addition to the objects + specified on the command line and reference datasets are + populated with correct reference values. Copies of referenced + datasets outside the copy range specified on the command line + will normally have a different name from the original. + (Default:Without this option, reference value(s) in any + reference datasets are set to NULL and referenced objects are + not copied unless they are otherwise within the copy range + specified on the command line.) + + noattr Copy object without copying attributes + + allflags Switches all flags from the default to the non-default setting + + These flag types correspond to the following API symbols + + H5O_COPY_SHALLOW_HIERARCHY_FLAG + H5O_COPY_EXPAND_SOFT_LINK_FLAG + H5O_COPY_EXPAND_EXT_LINK_FLAG + H5O_COPY_EXPAND_REFERENCE_FLAG + H5O_COPY_WITHOUT_ATTR_FLAG + H5O_COPY_ALL diff --git a/tools/test/h5copy/testfiles/h5copy_help2.ddl b/tools/test/h5copy/testfiles/h5copy_help2.ddl new file mode 100644 index 0000000..418faea --- /dev/null +++ b/tools/test/h5copy/testfiles/h5copy_help2.ddl @@ -0,0 +1,49 @@ + +usage: h5copy [OPTIONS] [OBJECTS...] + OBJECTS + -i, --input input file name + -o, --output output file name + -s, --source source object name + -d, --destination destination object name + ERROR + --enable-error-stack Prints messages from the HDF5 error stack as they occur. + Optional value 2 also prints file open errors. + OPTIONS + -h, --help Print a usage message and exit + -p, --parents No error if existing, make parent groups as needed + -v, --verbose Print information about OBJECTS and OPTIONS + -V, --version Print version number and exit + -f, --flag Flag type + + Flag type is one of the following strings: + + shallow Copy only immediate members for groups + + soft Expand soft links into new objects + + ext Expand external links into new objects + + ref Copy references and any referenced objects, i.e., objects + that the references point to. + Referenced objects are copied in addition to the objects + specified on the command line and reference datasets are + populated with correct reference values. Copies of referenced + datasets outside the copy range specified on the command line + will normally have a different name from the original. + (Default:Without this option, reference value(s) in any + reference datasets are set to NULL and referenced objects are + not copied unless they are otherwise within the copy range + specified on the command line.) + + noattr Copy object without copying attributes + + allflags Switches all flags from the default to the non-default setting + + These flag types correspond to the following API symbols + + H5O_COPY_SHALLOW_HIERARCHY_FLAG + H5O_COPY_EXPAND_SOFT_LINK_FLAG + H5O_COPY_EXPAND_EXT_LINK_FLAG + H5O_COPY_EXPAND_REFERENCE_FLAG + H5O_COPY_WITHOUT_ATTR_FLAG + H5O_COPY_ALL diff --git a/tools/test/h5stat/testfiles/h5stat_help1.ddl b/tools/test/h5stat/testfiles/h5stat_help1.ddl index 1f65f0d..54d6a31 100644 --- a/tools/test/h5stat/testfiles/h5stat_help1.ddl +++ b/tools/test/h5stat/testfiles/h5stat_help1.ddl @@ -1,4 +1,4 @@ -Usage: h5stat [OPTIONS] file +usage: h5stat [OPTIONS] file ERROR --enable-error-stack Prints messages from the HDF5 error stack as they occur diff --git a/tools/test/h5stat/testfiles/h5stat_help2.ddl b/tools/test/h5stat/testfiles/h5stat_help2.ddl index 1f65f0d..54d6a31 100644 --- a/tools/test/h5stat/testfiles/h5stat_help2.ddl +++ b/tools/test/h5stat/testfiles/h5stat_help2.ddl @@ -1,4 +1,4 @@ -Usage: h5stat [OPTIONS] file +usage: h5stat [OPTIONS] file ERROR --enable-error-stack Prints messages from the HDF5 error stack as they occur diff --git a/tools/test/h5stat/testfiles/h5stat_nofile.ddl b/tools/test/h5stat/testfiles/h5stat_nofile.ddl index 1f65f0d..54d6a31 100644 --- a/tools/test/h5stat/testfiles/h5stat_nofile.ddl +++ b/tools/test/h5stat/testfiles/h5stat_nofile.ddl @@ -1,4 +1,4 @@ -Usage: h5stat [OPTIONS] file +usage: h5stat [OPTIONS] file ERROR --enable-error-stack Prints messages from the HDF5 error stack as they occur |