# Copyright by The HDF Group. # All rights reserved. # # This file is part of HDF5. The full HDF5 copyright notice, including # terms governing use, modification, and redistribution, is contained in # the COPYING file, which can be found at the root of the source code # distribution tree, or in https://www.hdfgroup.org/licenses. # If you do not have access to either file, you may request a copy from # help@hdfgroup.org. # ############################################################################## ############################################################################## ### T E S T I N G ### ############################################################################## ############################################################################## # make test dir file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST") file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST/testfiles") file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST/testfiles/plist_files") # -------------------------------------------------------------------- # Copy all the HDF5 files from the source directory into the test directory # -------------------------------------------------------------------- set (HDF5_TEST_FILES tnullspace.h5 ) add_custom_command ( TARGET accum_swmr_reader POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different "$" "${PROJECT_BINARY_DIR}/H5TEST/accum_swmr_reader" ) foreach (h5_tfile ${HDF5_TEST_FILES}) HDFTEST_COPY_FILE("${HDF5_TOOLS_DIR}/testfiles/${h5_tfile}" "${PROJECT_BINARY_DIR}/H5TEST/${h5_tfile}" "HDF5_TEST_LIB_files") endforeach () # -------------------------------------------------------------------- # Copy all the HDF5 files from the test directory into the source directory # -------------------------------------------------------------------- set (HDF5_REFERENCE_FILES err_compat_1 err_compat_2 error_test_1 error_test_2 links_env.out ) foreach (ref_file ${HDF5_REFERENCE_FILES}) HDFTEST_COPY_FILE("${HDF5_TEST_SOURCE_DIR}/testfiles/${ref_file}" "${PROJECT_BINARY_DIR}/H5TEST/${ref_file}" "HDF5_TEST_LIB_files") endforeach () # -------------------------------------------------------------------- # Copy test files from test/testfiles/plist_files dir to test dir # -------------------------------------------------------------------- set (HDF5_REFERENCE_PLIST_FILES acpl_32be acpl_32le acpl_64be acpl_64le dapl_32be dapl_32le dapl_64be dapl_64le dcpl_32be dcpl_32le dcpl_64be dcpl_64le dxpl_32be dxpl_32le dxpl_64be dxpl_64le fapl_32be fapl_32le fapl_64be fapl_64le fcpl_32be fcpl_32le fcpl_64be fcpl_64le gcpl_32be gcpl_32le gcpl_64be gcpl_64le lapl_32be lapl_32le lapl_64be lapl_64le lcpl_32be lcpl_32le lcpl_64be lcpl_64le ocpl_32be ocpl_32le ocpl_64be ocpl_64le ocpypl_32be ocpypl_32le ocpypl_64be ocpypl_64le strcpl_32be strcpl_32le strcpl_64be strcpl_64le ) foreach (plistfile ${HDF5_REFERENCE_PLIST_FILES}) HDFTEST_COPY_FILE("${HDF5_TEST_SOURCE_DIR}/testfiles/plist_files/${plistfile}" "${PROJECT_BINARY_DIR}/H5TEST/testfiles/plist_files/${plistfile}" "HDF5_TEST_LIB_files") HDFTEST_COPY_FILE("${HDF5_TEST_SOURCE_DIR}/testfiles/plist_files/def_${plistfile}" "${PROJECT_BINARY_DIR}/H5TEST/testfiles/plist_files/def_${plistfile}" "HDF5_TEST_LIB_files") endforeach () # -------------------------------------------------------------------- #-- Copy all the HDF5 files from the source directory into the test directory # -------------------------------------------------------------------- set (HDF5_REFERENCE_TEST_FILES aggr.h5 bad_compound.h5 bad_offset.h5 be_data.h5 be_extlink1.h5 be_extlink2.h5 btree_idx_1_6.h5 btree_idx_1_8.h5 corrupt_stab_msg.h5 cve_2020_10812.h5 deflate.h5 family_v16_00000.h5 family_v16_00001.h5 family_v16_00002.h5 family_v16_00003.h5 file_image_core_test.h5 filespace_1_6.h5 filespace_1_8.h5 fill_old.h5 fill18.h5 filter_error.h5 fsm_aggr_nopersist.h5 fsm_aggr_persist.h5 group_old.h5 h5fc_ext1_i.h5 h5fc_ext1_f.h5 h5fc_ext2_if.h5 h5fc_ext2_sf.h5 h5fc_ext3_isf.h5 h5fc_ext_none.h5 le_data.h5 le_extlink1.h5 le_extlink2.h5 memleak_H5O_dtype_decode_helper_H5Odtype.h5 mergemsg.h5 multi_file_v16-r.h5 multi_file_v16-s.h5 noencoder.h5 none.h5 paged_nopersist.h5 paged_persist.h5 specmetaread.h5 tarrold.h5 tbad_msg_count.h5 tbogus.h5 test_filters_be.h5 test_filters_le.h5 th5s.h5 tlayouto.h5 tmtimen.h5 tmtimeo.h5 tsizeslheap.h5 ) foreach (h5_file ${HDF5_REFERENCE_TEST_FILES}) HDFTEST_COPY_FILE("${HDF5_TEST_SOURCE_DIR}/${h5_file}" "${HDF5_TEST_BINARY_DIR}/H5TEST/${h5_file}" "HDF5_TEST_LIB_files") endforeach () add_custom_target(HDF5_TEST_LIB_files ALL COMMENT "Copying files needed by HDF5_TEST_LIB tests" DEPENDS ${HDF5_TEST_LIB_files_list}) set (testhdf5_CLEANFILES coord.h5 dtypes10.h5 sys_file1 tattr.h5 tfile1.h5 tfile2.h5 tfile3.h5 tfile4.h5 tfile5.h5 tfile6.h5 tfile7.h5 tfilespace.h5 th5o_file th5s1.h5 tselect.h5 tsohm.h5 tsohm_dst.h5 tsohm_src.h5 ) # Remove any output file left over from previous test run add_test ( NAME H5TEST-testhdf5-clear-objects COMMAND ${CMAKE_COMMAND} -E remove ${testhdf5_CLEANFILES} WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-testhdf5-clear-objects PROPERTIES FIXTURES_SETUP clear_testhdf5) add_test ( NAME H5TEST-testhdf5-clean-objects COMMAND ${CMAKE_COMMAND} -E remove ${testhdf5_CLEANFILES} WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-testhdf5-clean-objects PROPERTIES FIXTURES_CLEANUP clear_testhdf5) add_test (NAME H5TEST-testhdf5-base COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ -x file -x select) set_tests_properties (H5TEST-testhdf5-base PROPERTIES FIXTURES_REQUIRED clear_testhdf5 ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) add_test (NAME H5TEST-testhdf5-file COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ -o file) set_tests_properties (H5TEST-testhdf5-file PROPERTIES FIXTURES_REQUIRED clear_testhdf5 ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) add_test (NAME H5TEST-testhdf5-select COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ -o select) set_tests_properties (H5TEST-testhdf5-select PROPERTIES FIXTURES_REQUIRED clear_testhdf5 ENVIRONMENT "HDF5_ALARM_SECONDS=3600;srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) ############################################################################## ############################################################################## ### T H E T E S T S M A C R O S ### ############################################################################## ############################################################################## set (test_CLEANFILES cmpd_dtransform.h5 direct_chunk.h5 dt_arith1.h5 dt_arith2.h5 dtransform.h5 dtypes3.h5 dtypes4.h5 min_dset_ohdr_testfile.h5 ohdr_min_a.h5 sec2_file.h5 single_latest.h5 source_file.h5 splitter_rw_file.h5 splitter_tmp.h5 splitter_wo_file.h5 stdio_file.h5 swmr0.h5 tfile_is_accessible_non_hdf5.h5 tfile_is_accessible.h5 tfile1.h5.h5 tfile8.h5 tfile8.h5.h5 tmisc15.h5.h5 tstint1.h5 tstint2.h5 tverbounds_dtype.h5 virtual_file1.h5 objcopy_ext.dat log_vfd_out.log splitter.log tbogus.h5.copy tmp_vds/vds_src_2.h5 ) set (EXTLINKS_CLEANFILES extlinks16A-000000.h5 extlinks16A-000001.h5 extlinks16B-b.h5 extlinks16B-g.h5 extlinks16B-l.h5 extlinks16B-r.h5 extlinks16B-s.h5 extlinks19B-000000.h5 extlinks19B-000001.h5 extlinks19B-000002.h5 extlinks19B-000003.h5 extlinks19B-000004.h5 extlinks19B-000005.h5 extlinks19B-000006.h5 extlinks19B-000007.h5 extlinks19B-000008.h5 extlinks19B-000009.h5 extlinks19B-000010.h5 extlinks19B-000011.h5 extlinks19B-000012.h5 extlinks19B-000013.h5 extlinks19B-000014.h5 extlinks19B-000015.h5 extlinks19B-000016.h5 extlinks19B-000017.h5 extlinks19B-000018.h5 extlinks19B-000019.h5 extlinks19B-000020.h5 extlinks19B-000021.h5 extlinks19B-000022.h5 extlinks19B-000023.h5 extlinks19B-000024.h5 extlinks19B-000025.h5 extlinks19B-000026.h5 extlinks19B-000027.h5 extlinks19B-000028.h5 ) # Remove any output file left over from previous test run add_test ( NAME H5TEST-clear-objects COMMAND ${CMAKE_COMMAND} -E remove ${test_CLEANFILES} ${EXTLINKS_CLEANFILES} COMMAND_EXPAND_LISTS WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-clear-objects PROPERTIES FIXTURES_SETUP clear_H5TEST) add_test ( NAME H5TEST-clean-objects COMMAND ${CMAKE_COMMAND} -E remove ${test_CLEANFILES} ${EXTLINKS_CLEANFILES} COMMAND_EXPAND_LISTS WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-clean-objects PROPERTIES FIXTURES_CLEANUP clear_H5TEST) set (H5TEST_SEPARATE_TESTS testhdf5 cache cache_image external_env flush1 flush2 vds_env ) foreach (h5_test ${H5_TESTS}) if (NOT h5_test IN_LIST H5TEST_SEPARATE_TESTS) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5TEST-${h5_test} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) set_tests_properties (H5TEST-${h5_test} PROPERTIES FIXTURES_REQUIRED clear_H5TEST ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) else () if ("${h5_test}" STREQUAL "big" AND CYGWIN) add_test (NAME H5TEST-${h5_test} COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${test}" ) else () add_test (NAME H5TEST-${h5_test} COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_EXPECT=0" -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=${h5_test}.txt" -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_OUTPUT_DIRECTORY}" #-D "TEST_REFERENCE=${test}.out" -D "TEST_FOLDER=${HDF5_TEST_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (H5TEST-${h5_test} PROPERTIES FIXTURES_REQUIRED clear_H5TEST ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) endif () endif () endforeach () set_tests_properties (H5TEST-fheap PROPERTIES TIMEOUT ${CTEST_VERY_LONG_TIMEOUT}) set_tests_properties (H5TEST-big PROPERTIES TIMEOUT ${CTEST_VERY_LONG_TIMEOUT}) set_tests_properties (H5TEST-btree2 PROPERTIES TIMEOUT ${CTEST_VERY_LONG_TIMEOUT}) set_tests_properties (H5TEST-objcopy PROPERTIES TIMEOUT ${CTEST_VERY_LONG_TIMEOUT}) #-- Adding test for cache if (NOT CYGWIN) add_test ( NAME H5TEST-cache-clear-objects COMMAND ${CMAKE_COMMAND} -E remove cache_test.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-cache-clear-objects PROPERTIES FIXTURES_SETUP clear_cache) add_test ( NAME H5TEST-cache-clean-objects COMMAND ${CMAKE_COMMAND} -E remove cache_test.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-cache-clean-objects PROPERTIES FIXTURES_CLEANUP clear_cache) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5TEST-cache COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) else () add_test (NAME H5TEST-cache COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_EXPECT=0" -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=cache.txt" #-D "TEST_REFERENCE=cache.out" -D "TEST_FOLDER=${HDF5_TEST_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (H5TEST-cache PROPERTIES FIXTURES_REQUIRED clear_cache ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-cache PROPERTIES TIMEOUT ${CTEST_VERY_LONG_TIMEOUT}) endif () if (TEST_CACHE_IMAGE) #-- Adding test for cache_image add_test ( NAME H5TEST-cache_image-clear-objects COMMAND ${CMAKE_COMMAND} -E remove cache_image_test.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-cache_image-clear-objects PROPERTIES FIXTURES_SETUP clear_cache_image) add_test ( NAME H5TEST-cache_image-clean-objects COMMAND ${CMAKE_COMMAND} -E remove cache_image_test.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-cache_image-clean-objects PROPERTIES FIXTURES_CLEANUP clear_cache_image) add_test (NAME H5TEST_cache_image COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) set_tests_properties (H5TEST-cache_image PROPERTIES FIXTURES_REQUIRED clear_cache_image ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) endif () #-- Adding test for external_env set (H5TEST_EXTERNAL_CLEANFILES extern_1r.raw extern_2r.raw extern_3r.raw extern_4r.raw extern_1w.raw extern_2w.raw extern_3w.raw extern_4w.raw ) add_test ( NAME H5TEST-external_env-clear-objects COMMAND ${CMAKE_COMMAND} -E remove ${H5TEST_EXTERNAL_CLEANFILES} WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-external_env-clear-objects PROPERTIES FIXTURES_SETUP clear_external_env) add_test ( NAME H5TEST-external_env-clean-objects COMMAND ${CMAKE_COMMAND} -E remove ${H5TEST_EXTERNAL_CLEANFILES} WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-external_env-clean-objects PROPERTIES FIXTURES_CLEANUP clear_external_env) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5TEST-external_env COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) else () add_test (NAME H5TEST-external_env COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_ENV_VAR:STRING=HDF5_EXTFILE_PREFIX" -D "TEST_ENV_VALUE:STRING=\${ORIGIN}" -D "TEST_EXPECT=0" -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=external_env.txt" #-D "TEST_REFERENCE=external_env.out" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (H5TEST-external_env PROPERTIES FIXTURES_REQUIRED clear_external_env ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) #-- Adding test for vds_env add_test ( NAME H5TEST-vds_env-clean-objects COMMAND ${CMAKE_COMMAND} -E remove tmp_vds_env/vds_env_src_2.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-vds_env-clean-objects PROPERTIES FIXTURES_CLEANUP clear_vds_env) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5TEST-vds_env COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) else () add_test (NAME H5TEST-vds_env COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_ENV_VAR:STRING=HDF5_VDS_PREFIX" -D "TEST_ENV_VALUE:STRING=\${ORIGIN}/tmp_vds_env" -D "TEST_EXPECT=0" -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=vds_env.txt" #-D "TEST_REFERENCE=vds_env.out" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (H5TEST-vds_env PROPERTIES FIXTURES_REQUIRED clear_vds_env ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) #-- Adding test for flush1/2 set (FLUSH_CLEANFILES flush.h5 flush-swmr.h5 noflush.h5 noflush-swmr.h5 flush_extend.h5 flush_extend-swmr.h5 noflush_extend.h5 noflush_extend-swmr.h5 ) add_test (NAME H5TEST-flush-clear-objects COMMAND ${CMAKE_COMMAND} -E remove ${FLUSH_CLEANFILES} WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-flush-clear-objects PROPERTIES FIXTURES_SETUP clear_flush) add_test (NAME H5TEST-flush-clean-objects COMMAND ${CMAKE_COMMAND} -E remove ${FLUSH_CLEANFILES} WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-flush-clean-objects PROPERTIES FIXTURES_CLEANUP clear_flush) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5TEST-flush1 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) else () add_test (NAME H5TEST-flush1 COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_EXPECT=0" -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=flush1.txt" -D "TEST_FOLDER=${HDF5_TEST_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (H5TEST-flush1 PROPERTIES FIXTURES_REQUIRED clear_flush ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5TEST-flush2 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) else () add_test (NAME H5TEST-flush2 COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_EXPECT=0" -D "TEST_SKIP_COMPARE=TRUE" -D "TEST_OUTPUT=flush2.txt" -D "TEST_FOLDER=${HDF5_TEST_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (H5TEST-flush2 PROPERTIES FIXTURES_REQUIRED clear_flush DEPENDS H5TEST-flush1 ) #-- Adding test for tcheck_version add_test (NAME H5TEST-tcheck_version-major COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ "-tM") set_tests_properties (H5TEST-tcheck_version-major PROPERTIES WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST WILL_FAIL "true" ) add_test (NAME H5TEST-tcheck_version-minor COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ "-tm") set_tests_properties (H5TEST-tcheck_version-minor PROPERTIES WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST WILL_FAIL "true" ) # release + 1 should pass on non-develop branches add_test (NAME H5TEST-tcheck_version-release COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ "-tr") set_tests_properties (H5TEST-tcheck_version-release PROPERTIES WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) ############################################################################## ############################################################################## ### A D D I T I O N A L T E S T S ### ############################################################################## ############################################################################## # H5_CHECK_TESTS #--------------- # error_test # err_compat # testmeta # atomic_writer # atomic_reader # links_env # filenotclosed # del_many_dense_attrs # flushrefresh ############################################################################## # autotools script tests # error_test and err_compat are built at the same time as the other tests, but executed by test_error.sh # NOT CONVERTED accum_swmr_reader is used by accum.c # NOT CONVERTED atomic_writer and atomic_reader are stand-alone programs # links_env is used by test_links_env.sh # filenotclosed and del_many_dense_attrs are used by test_abort_fail.sh # NOT CONVERTED flushrefresh is used by test_flush_refresh.sh # NOT CONVERTED use_append_chunk, use_append_mchunks and use_disable_mdc_flushes are used by test_use_cases.sh # NOT CONVERTED swmr_* files (besides swmr.c) are used by test_swmr.sh # NOT CONVERTED vds_swmr_* files are used by test_vds_swmr.sh # 'make check' doesn't run them directly, so they are not included in TEST_PROG. # Also build testmeta, which is used for timings test. It builds quickly # and this lets automake keep all its test programs in one place. ############################################################################## #-- Adding test for filenotclosed add_test ( NAME H5TEST-filenotclosed-clear-objects COMMAND ${CMAKE_COMMAND} -E remove filenotclosed.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-filenotclosed-clear-objects PROPERTIES FIXTURES_SETUP clear_filenotclosed) add_test ( NAME H5TEST-filenotclosed-clean-objects COMMAND ${CMAKE_COMMAND} -E remove filenotclosed.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-filenotclosed-clean-objects PROPERTIES FIXTURES_CLEANUP clear_filenotclosed) add_test (NAME H5TEST-filenotclosed COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) set_tests_properties (H5TEST-filenotclosed PROPERTIES FIXTURES_REQUIRED clear_filenotclosed ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) #-- Adding test for del_many_dense_attrs add_test ( NAME H5TEST-del_many_dense_attrs-clear-objects COMMAND ${CMAKE_COMMAND} -E remove del_many_dense_attrs.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-del_many_dense_attrs-clear-objects PROPERTIES FIXTURES_SETUP clear_del_many_dense_attrs) add_test ( NAME H5TEST-del_many_dense_attrs-clean-objects COMMAND ${CMAKE_COMMAND} -E remove del_many_dense_attrs.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-del_many_dense_attrs-clean-objects PROPERTIES FIXTURES_CLEANUP clear_del_many_dense_attrs) add_test (NAME H5TEST-del_many_dense_attrs COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) set_tests_properties (H5TEST-del_many_dense_attrs PROPERTIES FIXTURES_REQUIRED clear_del_many_dense_attrs ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) #-- Adding test for err_compat if (HDF5_ENABLE_DEPRECATED_SYMBOLS AND NOT MINGW) add_test (NAME H5TEST-err_compat COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_EXPECT=0" -D "TEST_MASK_ERROR=true" -D "ERROR_APPEND=1" -D "TEST_OUTPUT=err_compat.txt" -D "TEST_REFERENCE=err_compat_1" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5TEST-err_compat PROPERTIES ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) else () add_test (NAME H5TEST-err_compat COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_EXPECT=0" -D "TEST_MASK_ERROR=true" -D "ERROR_APPEND=1" -D "TEST_OUTPUT=err_compat.txt" -D "TEST_REFERENCE=err_compat_2" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5TEST-err_compat PROPERTIES ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) endif () #-- Adding test for error_test if (DEFAULT_API_VERSION MATCHES "v16" OR MINGW) add_test (NAME H5TEST-error_test COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_EXPECT=0" -D "TEST_MASK_ERROR=true" -D "ERROR_APPEND=1" -D "TEST_OUTPUT=error_test.txt" -D "TEST_REFERENCE=error_test_2" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5TEST-error_test PROPERTIES ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_PLUGIN_PRELOAD=::" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) else () add_test (NAME H5TEST-error_test COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" -D "TEST_EXPECT=0" -D "TEST_MASK_ERROR=true" -D "ERROR_APPEND=1" -D "TEST_OUTPUT=error_test.txt" -D "TEST_REFERENCE=error_test_1" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) set_tests_properties (H5TEST-error_test PROPERTIES ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_PLUGIN_PRELOAD=::" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) add_test ( NAME H5TEST-error_test-clean-objects COMMAND ${CMAKE_COMMAND} -E remove error_test.txt ) set_tests_properties (H5TEST-error_test-clean-objects PROPERTIES DEPENDS H5TEST-error_test WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) endif () #-- Adding test for links_env add_test (NAME H5TEST-links_env-clear-objects COMMAND ${CMAKE_COMMAND} -E remove extlinks_env0.h5 extlinks_env1.h5 tmp_links_env/extlinks_env1.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-links_env-clear-objects PROPERTIES FIXTURES_SETUP clear_links_env) add_test (NAME H5TEST-links_env-clean-objects COMMAND ${CMAKE_COMMAND} -E remove extlinks_env0.h5 extlinks_env1.h5 tmp_links_env/extlinks_env1.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) set_tests_properties (H5TEST-links_env-clean-objects PROPERTIES FIXTURES_CLEANUP clear_links_env) if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5TEST-links_env COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) else () add_test (NAME H5TEST-links_env COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS:STRING=" #-D "TEST_ENV_VAR:STRING=HDF5_EXT_PREFIX" #-D "TEST_ENV_VALUE:STRING=.:tmp_links_env" -D "TEST_EXPECT=0" -D "TEST_OUTPUT=links_env.txt" -D "TEST_REFERENCE=links_env.out" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/H5TEST" -P "${HDF_RESOURCES_DIR}/runTest.cmake" ) endif () set_tests_properties (H5TEST-links_env PROPERTIES FIXTURES_REQUIRED clear_links_env ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST;HDF5_EXT_PREFIX=.:tmp_links_env" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) if (NOT BUILD_SHARED_LIBS) #-- Adding test for libinfo add_test (NAME H5TEST-testlibinfo COMMAND ${CMAKE_COMMAND} -D "TEST_PROGRAM=$" -P "${GREP_RUNNER}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) else () #-- Adding test for libinfo add_test (NAME H5TEST-testlibinfo COMMAND ${CMAKE_COMMAND} -D "TEST_PROGRAM=$" -P "${GREP_RUNNER}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST ) endif () ############################################################################## ### F I L T E R P L U G I N T E S T S ############################################################################## if (BUILD_SHARED_LIBS) if (WIN32) set (CMAKE_SEP "\;") set (BIN_REL_PATH "../../") else () set (CMAKE_SEP ":") set (BIN_REL_PATH "../") endif () add_test (NAME H5PLUGIN-filter_plugin COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) set_tests_properties (H5PLUGIN-filter_plugin PROPERTIES ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/filter_plugin_dir1${CMAKE_SEP}${CMAKE_BINARY_DIR}/filter_plugin_dir2;srcdir=${HDF5_TEST_BINARY_DIR}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR} ) endif () option (TEST_SHELL_SCRIPTS "Enable shell script tests" ON) if (TEST_SHELL_SCRIPTS) include (ShellTests.cmake) endif() option (ENABLE_EXTENDED_TESTS "Enable extended tests" OFF) if (ENABLE_EXTENDED_TESTS) ############################################################################## ### S W M R T E S T S ############################################################################## # test_flush_refresh.sh: flushrefresh # test_use_cases.sh: use_append_chunk, use_append_mchunks, use_disable_mdc_flushes # test_swmr.sh: swmr* # test_vds_swmr.sh: vds_swmr* #-- Adding test for flushrefresh file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/H5TEST/flushrefresh_test") if (H5_PERL_FOUND) add_test ( NAME H5TEST-testflushrefresh-clear-objects COMMAND ${CMAKE_COMMAND} -E remove flushrefresh.h5 flushrefresh_test/flushrefresh.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST/flushrefresh_test ) set_tests_properties (H5TEST-testflushrefresh-clear-objects PROPERTIES FIXTURES_SETUP clear_testflushrefresh) add_test ( NAME H5TEST-testflushrefresh-clean-objects COMMAND ${CMAKE_COMMAND} -E remove flushrefresh.h5 flushrefresh_test/flushrefresh.h5 WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST/flushrefresh_test ) set_tests_properties (H5TEST-testflushrefresh-clean-objects PROPERTIES FIXTURES_CLEANUP clear_testflushrefresh) add_test (NAME H5TEST-testflushrefresh COMMAND "${CMAKE_COMMAND}" -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" -D "TEST_PROGRAM=$" -D "TEST_ARGS1:STRING=flushrefresh_VERIFICATION_START" -D "TEST_ARGS2:STRING=flushrefresh_VERIFICATION_DONE" -D "TEST_ERR:STRING=flushrefresh_ERROR" -D "TEST_EXPECT=0" -D "TEST_OUTPUT=flushrefresh.out" -D "TEST_REFERENCE=flushrefresh.txt" -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/H5TEST/flushrefresh_test" -D "PERL_SCRIPT=${HDF5_SOURCE_DIR}/bin/runbkgprog" -D "PERL_EXECUTABLE=${PERL_EXECUTABLE}" -P "${HDF5_TEST_SOURCE_DIR}/flushrefreshTest.cmake" ) set_tests_properties (H5TEST-testflushrefresh PROPERTIES FIXTURES_REQUIRED clear_testflushrefresh ENVIRONMENT "srcdir=${HDF5_TEST_BINARY_DIR}/H5TEST/flushrefresh_test" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/H5TEST/flushrefresh_test ) else () message (STATUS "Cannot execute TEST flushrefresh - perl not found") endif () endif () ############################################################################## ############################################################################## ### V F D T E S T S ### ############################################################################## ############################################################################## if (HDF5_TEST_VFD) include (CMakeVFDTests.cmake) endif () ############################################################################## ############################################################################## ### V O L T E S T S ### ############################################################################## ############################################################################## ############################################################################## ### V O L P L U G I N T E S T S ############################################################################## if (BUILD_SHARED_LIBS) if (WIN32) set (CMAKE_SEP "\;") set (BIN_REL_PATH "../../") else () set (CMAKE_SEP ":") set (BIN_REL_PATH "../") endif () add_test (NAME H5PLUGIN-vol_plugin COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $) set_tests_properties (H5PLUGIN-vol_plugin PROPERTIES ENVIRONMENT "HDF5_PLUGIN_PATH=${CMAKE_BINARY_DIR}/null_vol_plugin_dir;srcdir=${HDF5_TEST_BINARY_DIR}" WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR} ) endif () if (HDF5_TEST_PASSTHROUGH_VOL) include (CMakePassthroughVOLTests.cmake) endif () ############################################################################## ############################################################################## ### T H E G E N E R A T O R S ### ############################################################################## ############################################################################## if (HDF5_BUILD_GENERATORS AND BUILD_STATIC_LIBS) macro (ADD_H5_GENERATOR genfile) add_executable (${genfile} ${HDF5_TEST_SOURCE_DIR}/${genfile}.c) target_include_directories (${genfile} PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$:${MPI_C_INCLUDE_DIRS}>") TARGET_C_PROPERTIES (${genfile} STATIC) target_link_libraries (${genfile} PRIVATE ${HDF5_TEST_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (${genfile} PROPERTIES FOLDER generator/test) #----------------------------------------------------------------------------- # Add Target to clang-format #----------------------------------------------------------------------------- if (HDF5_ENABLE_FORMATTERS) clang_format (HDF5_TEST_${genfile}_FORMAT ${genfile}) endif () endmacro () # generator executables set (H5_GENERATORS gen_bad_offset gen_bad_ohdr gen_bogus gen_bounds gen_cross gen_deflate gen_filters gen_new_array gen_new_fill gen_new_group gen_new_mtime gen_new_super gen_noencoder gen_nullspace gen_udlinks space_overflow gen_filespace gen_specmetaread gen_sizes_lheap gen_file_image gen_plist ) foreach (h5_gen ${H5_GENERATORS}) ADD_H5_GENERATOR (${h5_gen}) endforeach () endif ()