1# 2# Copyright by The HDF Group. 3# All rights reserved. 4# 5# This file is part of HDF5. The full HDF5 copyright notice, including 6# terms governing use, modification, and redistribution, is contained in 7# the COPYING file, which can be found at the root of the source code 8# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. 9# If you do not have access to either file, you may request a copy from 10# help@hdfgroup.org. 11 12 13############################################################################## 14############################################################################## 15### T E S T I N G ### 16############################################################################## 17############################################################################## 18 19 # -------------------------------------------------------------------- 20 # Copy all the HDF5 files from the source directory into the test directory 21 # -------------------------------------------------------------------- 22 set (HDF5_REFERENCE_TEST_FILES 23 family_file00000.h5 24 family_file00001.h5 25 family_file00002.h5 26 family_file00003.h5 27 family_file00004.h5 28 family_file00005.h5 29 family_file00006.h5 30 family_file00007.h5 31 family_file00008.h5 32 family_file00009.h5 33 family_file00010.h5 34 family_file00011.h5 35 family_file00012.h5 36 family_file00013.h5 37 family_file00014.h5 38 family_file00015.h5 39 family_file00016.h5 40 family_file00017.h5 41 ) 42 43 foreach (h5_file ${HDF5_REFERENCE_TEST_FILES}) 44 HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_file}" "${PROJECT_BINARY_DIR}/${h5_file}" "h5repart_files") 45 endforeach () 46 add_custom_target(h5repart_files ALL COMMENT "Copying files needed by h5repart tests" DEPENDS ${h5repart_files_list}) 47 48 set (HDF5_MKGRP_TEST_FILES 49 #h5mkgrp_help.txt 50 #h5mkgrp_version 51 h5mkgrp_single.ls 52 h5mkgrp_single_v.ls 53 h5mkgrp_single_p.ls 54 h5mkgrp_single_l.ls 55 h5mkgrp_several.ls 56 h5mkgrp_several_v.ls 57 h5mkgrp_several_p.ls 58 h5mkgrp_several_l.ls 59 h5mkgrp_nested_p.ls 60 h5mkgrp_nested_lp.ls 61 h5mkgrp_nested_mult_p.ls 62 h5mkgrp_nested_mult_lp.ls 63 ) 64 65 # make test dir 66 file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 67 68 foreach (h5_mkgrp_file ${HDF5_MKGRP_TEST_FILES}) 69 HDFTEST_COPY_FILE("${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_mkgrp_file}" "${PROJECT_BINARY_DIR}/testfiles/${h5_mkgrp_file}" "h5mkgrp_files") 70 endforeach () 71 72 HDFTEST_COPY_FILE("${PROJECT_SOURCE_DIR}/testfiles/h5mkgrp_help.txt" "${PROJECT_BINARY_DIR}/testfiles/h5mkgrp_help.txt" "h5mkgrp_files") 73 add_custom_target(h5mkgrp_files ALL COMMENT "Copying files needed by h5mkgrp tests" DEPENDS ${h5mkgrp_files_list}) 74 75 configure_file (${PROJECT_SOURCE_DIR}/testfiles/h5mkgrp_version.txt.in ${PROJECT_BINARY_DIR}/testfiles/h5mkgrp_version.txt @ONLY) 76 77############################################################################## 78############################################################################## 79### T H E T E S T S M A C R O S ### 80############################################################################## 81############################################################################## 82 83 macro (ADD_H5_TEST resultfile resultcode resultoption) 84 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 85 add_test ( 86 NAME H5MKGRP-${resultfile}-clear-objects 87 COMMAND ${CMAKE_COMMAND} 88 -E remove 89 ${resultfile}.h5 90 ) 91 set_tests_properties (H5MKGRP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 92 endif () 93 94 add_test ( 95 NAME H5MKGRP-${resultfile} 96 COMMAND $<TARGET_FILE:h5mkgrp> ${resultoption} ${resultfile}.h5 ${ARGN} 97 ) 98 set_tests_properties (H5MKGRP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 99 if (HDF5_ENABLE_USING_MEMCHECKER) 100 if (NOT "${last_test}" STREQUAL "") 101 set_tests_properties (H5MKGRP-${resultfile} PROPERTIES DEPENDS ${last_test}) 102 endif () 103 else () 104 set_tests_properties (H5MKGRP-${resultfile} PROPERTIES DEPENDS H5MKGRP-${resultfile}-clear-objects) 105 add_test ( 106 NAME H5MKGRP-${resultfile}-h5ls 107 COMMAND "${CMAKE_COMMAND}" 108 -D "TEST_PROGRAM=$<TARGET_FILE:h5ls>" 109 -D "TEST_ARGS:STRING=-v;-r;${resultfile}.h5" 110 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 111 -D "TEST_OUTPUT=${resultfile}.out" 112 -D "TEST_EXPECT=${resultcode}" 113 -D "TEST_MASK_MOD=true" 114 -D "TEST_REFERENCE=${resultfile}.ls" 115 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 116 ) 117 set_tests_properties (H5MKGRP-${resultfile}-h5ls PROPERTIES DEPENDS H5MKGRP-${resultfile}) 118 endif () 119 endmacro () 120 121 macro (ADD_H5_CMP resultfile resultcode) 122 if (HDF5_ENABLE_USING_MEMCHECKER) 123 add_test (NAME H5MKGRP_CMP-${resultfile} COMMAND $<TARGET_FILE:h5mkgrp> ${ARGN}) 124 else () 125 add_test ( 126 NAME H5MKGRP_CMP-${resultfile}-clear-objects 127 COMMAND ${CMAKE_COMMAND} 128 -E remove 129 ${resultfile}.h5 130 ) 131 set_tests_properties (H5MKGRP_CMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 132 add_test ( 133 NAME H5MKGRP_CMP-${resultfile} 134 COMMAND "${CMAKE_COMMAND}" 135 -D "TEST_PROGRAM=$<TARGET_FILE:h5mkgrp>" 136 -D "TEST_ARGS:STRING=${ARGN}" 137 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 138 -D "TEST_OUTPUT=${resultfile}.out" 139 -D "TEST_EXPECT=${resultcode}" 140 -D "TEST_REFERENCE=${resultfile}.txt" 141 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 142 ) 143 set_tests_properties (H5MKGRP_CMP-${resultfile} PROPERTIES DEPENDS H5MKGRP_CMP-${resultfile}-clear-objects) 144 endif () 145 endmacro () 146 147############################################################################## 148############################################################################## 149### T H E T E S T S ### 150############################################################################## 151############################################################################## 152 153 ###################### H5REPART ######################### 154 # Remove any output file left over from previous test run 155 add_test ( 156 NAME H5REPART-clearall-objects 157 COMMAND ${CMAKE_COMMAND} 158 -E remove 159 fst_family00000.h5 160 scd_family00000.h5 161 scd_family00001.h5 162 scd_family00002.h5 163 scd_family00003.h5 164 family_to_sec2.h5 165 ) 166 if (NOT "${last_test}" STREQUAL "") 167 set_tests_properties (H5REPART-clearall-objects PROPERTIES DEPENDS ${last_test}) 168 endif () 169 set (last_test "H5REPART-clearall-objects") 170 171 # repartition family member size to 20,000 bytes. 172 add_test (NAME H5REPART-h5repart_20K COMMAND $<TARGET_FILE:h5repart> -m 20000 family_file%05d.h5 fst_family%05d.h5) 173 set_tests_properties (H5REPART-h5repart_20K PROPERTIES DEPENDS H5REPART-clearall-objects) 174 175 # repartition family member size to 5 KB. 176 add_test (NAME H5REPART-h5repart_5K COMMAND $<TARGET_FILE:h5repart> -m 5k family_file%05d.h5 scd_family%05d.h5) 177 set_tests_properties (H5REPART-h5repart_5K PROPERTIES DEPENDS H5REPART-clearall-objects) 178 179 # convert family file to sec2 file of 20,000 bytes 180 add_test (NAME H5REPART-h5repart_sec2 COMMAND $<TARGET_FILE:h5repart> -m 20000 -family_to_sec2 family_file%05d.h5 family_to_sec2.h5) 181 set_tests_properties (H5REPART-h5repart_sec2 PROPERTIES DEPENDS H5REPART-clearall-objects) 182 183 # test the output files repartitioned above. 184 add_test (NAME H5REPART-h5repart_test COMMAND $<TARGET_FILE:h5repart_test>) 185 set_tests_properties (H5REPART-h5repart_test PROPERTIES DEPENDS "H5REPART-clearall-objects;H5REPART-h5repart_20K;H5REPART-h5repart_5K;H5REPART-h5repart_sec2") 186 187 set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES} 188 h5repart_test 189 ) 190 191 if (HDF5_ENABLE_USING_MEMCHECKER) 192 add_test ( 193 NAME H5MKGRP-clearall-objects 194 COMMAND ${CMAKE_COMMAND} 195 -E remove 196 h5mkgrp_help.out 197 h5mkgrp_help.out.err 198 h5mkgrp_version.out 199 h5mkgrp_version.out.err 200 h5mkgrp_single.h5 201 h5mkgrp_single.out 202 h5mkgrp_single.out.err 203 h5mkgrp_single_v.h5 204 h5mkgrp_single_v.out 205 h5mkgrp_single_v.out.err 206 h5mkgrp_single_p.h5 207 h5mkgrp_single_p.out 208 h5mkgrp_single_p.out.err 209 h5mkgrp_single_l.h5 210 h5mkgrp_single_l.out 211 h5mkgrp_single_l.out.err 212 h5mkgrp_several.h5 213 h5mkgrp_several.out 214 h5mkgrp_several.out.err 215 h5mkgrp_several_v.h5 216 h5mkgrp_several_v.out 217 h5mkgrp_several_v.out.err 218 h5mkgrp_several_p.h5 219 h5mkgrp_several_p.out 220 h5mkgrp_several_p.out.err 221 h5mkgrp_several_l.h5 222 h5mkgrp_several_l.out 223 h5mkgrp_several_l.out.err 224 h5mkgrp_nested_p.h5 225 h5mkgrp_nested_p.out 226 h5mkgrp_nested_p.out.err 227 h5mkgrp_nested_lp.h5 228 h5mkgrp_nested_lp.out 229 h5mkgrp_nested_lp.out.err 230 h5mkgrp_nested_mult_p.h5 231 h5mkgrp_nested_mult_p.out 232 h5mkgrp_nested_mult_p.out.err 233 h5mkgrp_nested_mult_lp.h5 234 h5mkgrp_nested_mult_lp.out 235 h5mkgrp_nested_mult_lp.out.err 236 ) 237 set_tests_properties (H5MKGRP-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 238 if (NOT "${last_test}" STREQUAL "") 239 set_tests_properties (H5MKGRP-clearall-objects PROPERTIES DEPENDS ${last_test}) 240 endif () 241 set (last_test "H5MKGRP-clearall-objects") 242 endif () 243 244 # Check that help & version is displayed properly 245 ADD_H5_CMP (h5mkgrp_help 0 "-h") 246 ADD_H5_CMP (h5mkgrp_version 0 "-V") 247 248 # Create single group at root level 249 ADD_H5_TEST (h5mkgrp_single 0 "" single) 250 ADD_H5_TEST (h5mkgrp_single_v 0 "-v" single) 251 ADD_H5_TEST (h5mkgrp_single_p 0 "-p" single) 252 ADD_H5_TEST (h5mkgrp_single_l 0 "-l" latest) 253 254 # Create several groups at root level 255 ADD_H5_TEST (h5mkgrp_several 0 "" one two) 256 ADD_H5_TEST (h5mkgrp_several_v 0 "-v" one two) 257 ADD_H5_TEST (h5mkgrp_several_p 0 "-p" one two) 258 ADD_H5_TEST (h5mkgrp_several_l 0 "-l" one two) 259 260 # Create various nested groups 261 ADD_H5_TEST (h5mkgrp_nested_p 0 "-p" /one/two) 262 ADD_H5_TEST (h5mkgrp_nested_lp 0 "-lp" /one/two) 263 ADD_H5_TEST (h5mkgrp_nested_mult_p 0 "-p" /one/two /three/four) 264 ADD_H5_TEST (h5mkgrp_nested_mult_lp 0 "-lp" /one/two /three/four) 265