summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2023-05-21 03:52:38 (GMT)
committerGitHub <noreply@github.com>2023-05-21 03:52:38 (GMT)
commitf4b6f3d8e049b9308bdbdc468d146fbb5da51f5d (patch)
tree34ce5ae04599b4c494838fafd905020c65e3444e /tools
parent2eec25110a846baa5707d779c034f14af00e2af4 (diff)
downloadhdf5-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.c8
-rw-r--r--tools/src/h5import/h5import.c35
-rw-r--r--tools/src/h5stat/h5stat.c2
-rw-r--r--tools/test/h5copy/CMakeTests.cmake32
-rw-r--r--tools/test/h5copy/testfiles/h5copy_help1.ddl49
-rw-r--r--tools/test/h5copy/testfiles/h5copy_help2.ddl49
-rw-r--r--tools/test/h5stat/testfiles/h5stat_help1.ddl2
-rw-r--r--tools/test/h5stat/testfiles/h5stat_help2.ddl2
-rw-r--r--tools/test/h5stat/testfiles/h5stat_nofile.ddl2
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