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 19set (H5WATCH_TEST_FILES 20 w-help1.ddl 21 w-err-cmpd1.err 22 w-err-cmpd2.err 23 w-err-cmpd3.err 24 w-err-cmpd4.err 25 w-err-cmpd5.err 26 w-err-dset1.err 27 w-err-dset2.err 28 w-err-dset-nomax.err 29 w-err-dset-none.err 30 w-err-file.err 31 w-err-poll.ddl 32 w-err-poll0.ddl 33 w-err-width.ddl 34 w-ext-cmpd.ddl 35 w-ext-cmpd-esc.ddl 36 w-ext-cmpd-esc-f1.ddl 37 w-ext-cmpd-esc-f3.ddl 38 w-ext-cmpd-esc-ff2.ddl 39 w-ext-cmpd-f1.ddl 40 w-ext-cmpd-f2.ddl 41 w-ext-cmpd-ff3.ddl 42 w-ext-cmpd-label.ddl 43 w-ext-cmpd-two.ddl 44 w-ext-cmpd-two-f1.ddl 45 w-ext-cmpd-two-f3.ddl 46 w-ext-cmpd-two-ff2.ddl 47 w-ext-early.ddl 48 w-ext-late.ddl 49 w-ext-one.ddl 50 w-ext-one-d.ddl 51 w-ext-one-simple.ddl 52 w-ext-two.ddl 53 w-ext-two-d.ddl 54 w-ext-two-width.ddl 55) 56 57# make test dir 58file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 59 60foreach (h5watch_file ${H5WATCH_TEST_FILES}) 61 HDFTEST_COPY_FILE("${HDF5_HL_TOOLS_DIR}/testfiles/${h5watch_file}" "${PROJECT_BINARY_DIR}/testfiles/${h5watch_file}" "H5WATCH_files") 62endforeach () 63add_custom_target(H5WATCH_files ALL COMMENT "Copying files needed by H5WATCH tests" DEPENDS ${H5WATCH_files_list}) 64 65############################################################################## 66############################################################################## 67### T H E T E S T S M A C R O S ### 68############################################################################## 69############################################################################## 70 71 if (NOT BUILD_SHARED_LIBS) 72 set (tgt_ext "") 73 else () 74 set (tgt_ext "-shared") 75 endif () 76 77 macro (ADD_H5_TEST resultfile resultcode) 78 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 79 add_test ( 80 NAME H5WATCH_ARGS-h5watch-${resultfile} 81 COMMAND "${CMAKE_COMMAND}" 82 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 83 -D "TEST_PROGRAM=$<TARGET_FILE:h5watch${tgt_ext}>" 84 -D "TEST_ARGS:STRING=${ARGN}" 85 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 86 -D "TEST_OUTPUT=${resultfile}.out" 87 -D "TEST_EXPECT=${resultcode}" 88 -D "TEST_REFERENCE=${resultfile}.ddl" 89 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 90 ) 91 set_tests_properties (H5WATCH_ARGS-h5watch-${resultfile} PROPERTIES 92 DEPENDS ${last_test} 93 FIXTURES_REQUIRED gen_test_watch 94 ) 95 set (last_test "H5WATCH_ARGS-h5watch-${resultfile}") 96 endif () 97 endmacro () 98 99 macro (ADD_H5_ERR_TEST resultfile resultcode) 100 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 101 add_test ( 102 NAME H5WATCH_ARGS-h5watch-${resultfile} 103 COMMAND "${CMAKE_COMMAND}" 104 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 105 -D "TEST_PROGRAM=$<TARGET_FILE:h5watch${tgt_ext}>" 106 -D "TEST_ARGS:STRING=${ARGN}" 107 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 108 -D "TEST_OUTPUT=${resultfile}.out" 109 -D "TEST_EXPECT=${resultcode}" 110 -D "TEST_REFERENCE=${resultfile}.mty" 111 -D "TEST_ERRREF=${resultfile}.err" 112 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 113 ) 114 set_tests_properties (H5WATCH_ARGS-h5watch-${resultfile} PROPERTIES 115 DEPENDS ${last_test} 116 FIXTURES_REQUIRED gen_test_watch 117 ) 118 set (last_test "H5WATCH_ARGS-h5watch-${resultfile}") 119 endif () 120 endmacro () 121 122 macro (ADD_H5_WATCH resultfile resultcode) 123 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 124 add_test ( 125 NAME H5WATCH-${resultfile}-clear-objects 126 COMMAND ${CMAKE_COMMAND} 127 -E remove ${resultfile}.h5 128 ) 129 set_tests_properties (H5WATCH-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 130 add_test ( 131 NAME H5WATCH-${resultfile} 132 COMMAND "${CMAKE_COMMAND}" 133 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 134 -D "TEST_PROGRAM=$<TARGET_FILE:h5watch${tgt_ext}>" 135 -D "TEST_ARGS:STRING=${ARGN}" 136 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 137 -D "TEST_OUTPUT=${resultfile}.out" 138 -D "TEST_EXPECT=${resultcode}" 139 -D "TEST_REFERENCE=${resultfile}.txt" 140 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 141 ) 142 set_tests_properties (H5WATCH-${resultfile} PROPERTIES 143 DEPENDS H5WATCH-${resultfile}-clear-objects 144 FIXTURES_REQUIRED gen_test_watch 145 ) 146 set (last_test "H5WATCH-${resultfile}") 147 endif () 148 endmacro () 149 150############################################################################## 151############################################################################## 152### T H E T E S T S ### 153############################################################################## 154############################################################################## 155 156# Check to see if the VFD specified by the HDF5_DRIVER environment variable 157# supports SWMR. 158set (SWMR_INCOMPAT ${hl_swmr_check_compat_vfd}) 159 160if (NOT SWMR_INCOMPAT) 161# Remove any output file left over from previous test run 162 add_test ( 163 NAME H5WATCH-clearall-objects 164 COMMAND ${CMAKE_COMMAND} -E remove WATCH.h5 165 ) 166 if (last_test) 167 set_tests_properties (H5WATCH-clearall-objects PROPERTIES DEPENDS ${last_test}) 168 endif () 169 set (last_test "H5WATCH-clearall-objects") 170 171################################################################################################# 172# # 173# WATCH.h5: file with various types of datasets for testing-- # 174# The following datasets are chunked, H5D_ALLOC_TIME_INCR, max. dimensional setting: # 175# DSET_ONE: one-dimensional dataset # 176# DSET_TWO: two-dimensional dataset # 177# DSET_CMPD: one-dimensional dataset with compound type # 178# DSET_CMPD_ESC: one-dimensional dataset with compound type & escape/separator characters # 179# DSET_CMPD_TWO: two-dimensional dataset with compound type # 180# # 181# The following datasets are one-dimensional, chunked, max. dimension setting: # 182# DSET_ALLOC_EARLY: dataset with H5D_ALLOC_TIME_EARLY # 183# DSET_ALLOC_LATE: dataset H5D_ALLOC_TIME_LATE # 184# # 185# The following datasets are one-dimensional: # 186# DSET_NONE: fixed dimension setting, contiguous, H5D_ALLOC_TIME_LATE # 187# DSET_NOMAX: fixed dimension setting, chunked, H5D_ALLOC_TIME_INCR # 188# # 189################################################################################################# 190# create the output files to be used. 191 add_test (NAME H5WATCH-h5watchgentest COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5watchgentest>) 192 set_tests_properties (H5WATCH-h5watchgentest PROPERTIES 193 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 194 DEPENDS "H5WATCH-clearall-objects" 195 ) 196 set_tests_properties (H5WATCH-h5watchgentest PROPERTIES FIXTURES_SETUP gen_test_watch) 197 set (last_test "H5WATCH-h5watchgentest") 198 199# Test on --help options 200 ADD_H5_TEST (w-help1 0 --help) 201# 202# Tests on expected failures 203 ADD_H5_ERR_TEST (w-err-dset1 1 WATCH.h5) 204 ADD_H5_ERR_TEST (w-err-dset2 1 WATCH.h5/group/DSET_CMPD) 205 ADD_H5_ERR_TEST (w-err-dset-none 1 WATCH.h5/DSET_NONE) 206 ADD_H5_ERR_TEST (w-err-dset-nomax 1 WATCH.h5/DSET_NOMAX) 207 ADD_H5_ERR_TEST (w-err-file 1 ../WATCH.h5/DSET_CMPD) 208 ADD_H5_TEST (w-err-width 1 --width=-8 WATCH.h5/DSET_ONE) 209 ADD_H5_TEST (w-err-poll 1 --polling=-8 WATCH.h5/DSET_ONE) 210 ADD_H5_TEST (w-err-poll0 1 --polling=0 WATCH.h5/DSET_ONE) 211# 212# Tests on invalid field names via --fields option for a compound typed dataset: DSET_CMPD 213 ADD_H5_ERR_TEST (w-err-cmpd1 1 --fields=fieldx WATCH.h5/DSET_CMPD) 214 ADD_H5_ERR_TEST (w-err-cmpd2 1 --fields=field1,field2. WATCH.h5/DSET_CMPD) 215 ADD_H5_ERR_TEST (w-err-cmpd3 1 --fields=field1,field2, WATCH.h5/DSET_CMPD) 216 ADD_H5_ERR_TEST (w-err-cmpd4 1 --fields=field1,field2.b.k WATCH.h5/DSET_CMPD) 217 ADD_H5_ERR_TEST (w-err-cmpd5 1 --fields=field1 --fields=field2.b.k WATCH.h5/DSET_CMPD) 218# 219endif () 220