diff options
Diffstat (limited to 'test/API/CMakeLists.txt')
-rw-r--r-- | test/API/CMakeLists.txt | 552 |
1 files changed, 237 insertions, 315 deletions
diff --git a/test/API/CMakeLists.txt b/test/API/CMakeLists.txt index a758f7e..f034c71 100644 --- a/test/API/CMakeLists.txt +++ b/test/API/CMakeLists.txt @@ -9,7 +9,6 @@ # help@hdfgroup.org. # - cmake_minimum_required (VERSION 3.18) project (HDF5_TEST_API C) @@ -26,16 +25,15 @@ configure_file( ) #------------------------------------------------------------------------------ -# Compile kwsys library and setup TestDriver +# Compile kwsys library and setup TestDriver if requested #------------------------------------------------------------------------------ if (HDF5_TEST_API_ENABLE_DRIVER) add_subdirectory (driver) endif () #------------------------------------------------------------------------------ -# Define for API tests +# Variables, definitions, etc. for API tests #------------------------------------------------------------------------------ - set (HDF5_API_TESTS attribute dataset @@ -54,50 +52,59 @@ if (HDF5_TEST_API_ENABLE_ASYNC) ) endif () -# Ported HDF5 tests +# Extra HDF5 tests to run. Each entry in the list +# must be a CMake target name for a test executable +# that was added elsewhere in the project set (HDF5_API_TESTS_EXTRA testhdf5 ) # List of files generated by the HDF5 API tests which -# should be cleaned up in case the test failed to remove -# them +# we should attempt to clean up in case the tests failed +# to remove them +# TODO: Run h5delete tool with appropriate env. vars for +# connectors to remove these files set (HDF5_API_TESTS_FILES - H5_api_test.h5 - H5_api_async_test.h5 - H5_api_async_test_0.h5 - H5_api_async_test_1.h5 - H5_api_async_test_2.h5 - H5_api_async_test_3.h5 - H5_api_async_test_4.h5 - test_file.h5 - invalid_params_file.h5 - excl_flag_file.h5 - overlapping_file.h5 - file_permission.h5 - flush_file.h5 - property_list_test_file1.h5 - property_list_test_file2.h5 - intent_test_file.h5 - file_obj_count1.h5 - file_obj_count2.h5 - file_mount.h5 - file_name_retrieval.h5 - filespace_info.h5 - test_file_id.h5 - test_close_degree.h5 - test_free_sections.h5 - file_size.h5 - file_info.h5 - double_group_open.h5 - ext_link_file.h5 - ext_link_file_2.h5 - ext_link_file_3.h5 - ext_link_file_4.h5 - ext_link_file_ping_pong_1.h5 - ext_link_file_ping_pong_2.h5 - ext_link_invalid_params_file.h5 - object_copy_test_file.h5 + # Test file used by main tests + H5_api_test.h5 + # 'file' tests + test_file.h5 + invalid_params_file.h5 + excl_flag_file.h5 + overlapping_file.h5 + file_permission.h5 + flush_file.h5 + property_list_test_file1.h5 + property_list_test_file2.h5 + intent_test_file.h5 + file_obj_count1.h5 + file_obj_count2.h5 + file_mount.h5 + file_name_retrieval.h5 + filespace_info.h5 + test_file_id.h5 + test_close_degree.h5 + test_free_sections.h5 + file_size.h5 + file_info.h5 + double_group_open.h5 + # 'link' tests + ext_link_file.h5 + ext_link_file_2.h5 + ext_link_file_3.h5 + ext_link_file_4.h5 + ext_link_file_ping_pong_1.h5 + ext_link_file_ping_pong_2.h5 + ext_link_invalid_params_file.h5 + # 'object' tests + object_copy_test_file.h5 + # 'async' tests + H5_api_async_test.h5 + H5_api_async_test_0.h5 + H5_api_async_test_1.h5 + H5_api_async_test_2.h5 + H5_api_async_test_3.h5 + H5_api_async_test_4.h5 ) #----------------------------------------------------------------------------- @@ -125,22 +132,15 @@ target_include_directories (h5_api_test "${HDF5_SRC_BINARY_DIR}" "${HDF5_TEST_BINARY_DIR}" ) -target_compile_options ( - h5_api_test - PRIVATE - "${HDF5_CMAKE_C_FLAGS}" -) -target_compile_definitions ( - h5_api_test - PRIVATE - "$<$<CONFIG:Developer>:${HDF5_DEVELOPER_DEFS}>" -) -if (NOT BUILD_SHARED_LIBS) - TARGET_C_PROPERTIES (h5_api_test STATIC) - target_link_libraries (h5_api_test PRIVATE ${HDF5_TEST_LIB_TARGET}) -else () +target_compile_options (h5_api_test PRIVATE "${HDF5_CMAKE_C_FLAGS}") +target_compile_definitions (h5_api_test PRIVATE "${HDF5_TEST_COMPILE_DEFS_PRIVATE}") +# Always prefer linking the shared HDF5 library by default +if (BUILD_SHARED_LIBS) TARGET_C_PROPERTIES (h5_api_test SHARED) target_link_libraries (h5_api_test PRIVATE ${HDF5_TEST_LIBSH_TARGET}) +else () + TARGET_C_PROPERTIES (h5_api_test STATIC) + target_link_libraries (h5_api_test PRIVATE ${HDF5_TEST_LIB_TARGET}) endif () set_target_properties (h5_api_test PROPERTIES FOLDER test/API) # Add Target to clang-format @@ -148,109 +148,6 @@ if (HDF5_ENABLE_FORMATTERS) clang_format (HDF5_TEST_h5_api_test_FORMAT h5_api_test) endif () -if (HDF5_TEST_API_INSTALL) - install ( - TARGETS - h5_api_test - EXPORT - ${HDF5_EXPORTED_TARGETS} - DESTINATION - ${HDF5_INSTALL_BIN_DIR} - PERMISSIONS - OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - COMPONENT - tests - ) -endif () - -#----------------------------------------------------------------------------- -# Build the ported HDF5 test executables -#----------------------------------------------------------------------------- -foreach (api_test_extra ${HDF5_API_TESTS_EXTRA}) - unset (HDF5_API_TEST_EXTRA_SRCS) - - set (HDF5_API_TEST_EXTRA_SRCS - ${HDF5_API_TEST_EXTRA_SRCS} - ${CMAKE_CURRENT_SOURCE_DIR}/${api_test_extra}.c - ) - - if (${api_test_extra} STREQUAL "testhdf5") - set (HDF5_API_TEST_EXTRA_SRCS - ${HDF5_API_TEST_EXTRA_SRCS} - ${CMAKE_CURRENT_SOURCE_DIR}/tarray.c - ${CMAKE_CURRENT_SOURCE_DIR}/tattr.c - ${CMAKE_CURRENT_SOURCE_DIR}/tchecksum.c - ${CMAKE_CURRENT_SOURCE_DIR}/tconfig.c - ${CMAKE_CURRENT_SOURCE_DIR}/tcoords.c - ${CMAKE_CURRENT_SOURCE_DIR}/tfile.c - ${CMAKE_CURRENT_SOURCE_DIR}/tgenprop.c - ${CMAKE_CURRENT_SOURCE_DIR}/th5o.c - ${CMAKE_CURRENT_SOURCE_DIR}/th5s.c - ${CMAKE_CURRENT_SOURCE_DIR}/tid.c - ${CMAKE_CURRENT_SOURCE_DIR}/titerate.c - ${CMAKE_CURRENT_SOURCE_DIR}/tmisc.c - ${CMAKE_CURRENT_SOURCE_DIR}/trefer.c - ${CMAKE_CURRENT_SOURCE_DIR}/tselect.c - ${CMAKE_CURRENT_SOURCE_DIR}/ttime.c - ${CMAKE_CURRENT_SOURCE_DIR}/tunicode.c - ${CMAKE_CURRENT_SOURCE_DIR}/tvlstr.c - ${CMAKE_CURRENT_SOURCE_DIR}/tvltypes.c - ) - endif () - - add_executable (h5_api_test_${api_test_extra} ${HDF5_API_TEST_EXTRA_SRCS}) - target_include_directories ( - h5_api_test_${api_test_extra} - PRIVATE - "${HDF5_SRC_INCLUDE_DIRS}" - "${HDF5_TEST_SRC_DIR}" - "${HDF5_TEST_API_SRC_DIR}" - "${HDF5_SRC_BINARY_DIR}" - "${HDF5_TEST_BINARY_DIR}" - ) - target_compile_options ( - h5_api_test_${api_test_extra} - PRIVATE - "${HDF5_CMAKE_C_FLAGS}" - ) - target_compile_definitions ( - h5_api_test_${api_test_extra} - PRIVATE - "$<$<CONFIG:Developer>:${HDF5_DEVELOPER_DEFS}>" - ) - if (NOT BUILD_SHARED_LIBS) - TARGET_C_PROPERTIES (h5_api_test_${api_test_extra} STATIC) - target_link_libraries (h5_api_test_${api_test_extra} PRIVATE ${HDF5_TEST_LIB_TARGET}) - else () - TARGET_C_PROPERTIES (h5_api_test_${api_test_extra} SHARED) - target_link_libraries (h5_api_test_${api_test_extra} PRIVATE ${HDF5_TEST_LIBSH_TARGET}) - endif () - set_target_properties ( - h5_api_test_${api_test_extra} - PROPERTIES - FOLDER test/API - ) - # Add Target to clang-format - if (HDF5_ENABLE_FORMATTERS) - clang_format (HDF5_TEST_h5_api_test_${api_test_extra}_FORMAT h5_api_test_${api_test_extra}) - endif () - - if (HDF5_TEST_API_INSTALL) - install ( - TARGETS - h5_api_test_${api_test_extra} - EXPORT - ${HDF5_EXPORTED_TARGETS} - DESTINATION - ${HDF5_INSTALL_BIN_DIR} - PERMISSIONS - OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - COMPONENT - tests - ) - endif () -endforeach () - #----------------------------------------------------------------------------- # Add tests if HDF5 serial testing is enabled #----------------------------------------------------------------------------- @@ -280,6 +177,7 @@ if (HDF5_TEST_SERIAL) ) endif () + # Add main API tests to test suite set (last_api_test "") foreach (api_test ${HDF5_API_TESTS}) add_test ( @@ -293,22 +191,11 @@ if (HDF5_TEST_SERIAL) if ("h5_api_test_${api_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (h5_api_test_${api_test} PROPERTIES DISABLED true) endif () - set_tests_properties (h5_api_test_${api_test} PROPERTIES DEPENDS ${last_api_test}) + set_tests_properties (h5_api_test_${api_test} PROPERTIES DEPENDS "${last_api_test}") set (last_api_test "h5_api_test_${api_test}") endforeach () - foreach (hdf5_test ${HDF5_API_TESTS_EXTRA}) - add_test ( - NAME "h5_api_test_${hdf5_test}" - COMMAND $<TARGET_FILE:h5_api_test_driver> - --server ${HDF5_TEST_API_SERVER} - --client $<TARGET_FILE:h5_api_test_${hdf5_test}> - --serial - ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS} - ) - endforeach () - # Hook external tests to same test suite foreach (ext_api_test ${HDF5_API_EXT_SERIAL_TESTS}) add_test ( @@ -324,93 +211,94 @@ if (HDF5_TEST_SERIAL) endif () endforeach () - # Add tests for each external VOL connector that was built - foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS}) - # Determine environment variables that need to be set for testing - set (vol_test_env "") - set (vol_plugin_paths "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}") - - get_target_property (vol_test_string "${external_vol_tgt}" HDF5_VOL_NAME) - list (APPEND vol_test_env "HDF5_VOL_CONNECTOR=${vol_test_string}") - - get_target_property (vol_lib_targets "${external_vol_tgt}" HDF5_VOL_TARGETS) - foreach (lib_target ${vol_lib_targets}) - get_target_property (lib_target_output_dir "${lib_target}" LIBRARY_OUTPUT_DIRECTORY) - if (NOT "${lib_target_output_dir}" STREQUAL "lib_target_output_dir-NOTFOUND" - AND NOT "${lib_target_output_dir}" STREQUAL "" - AND NOT "${lib_target_output_dir}" STREQUAL "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}") - set (vol_plugin_paths "${vol_plugin_paths}${CMAKE_SEP}${lib_target_output_dir}") - endif () - endforeach () - - list (APPEND vol_test_env "HDF5_PLUGIN_PATH=${vol_plugin_paths}") - - # Add main API tests - set (last_api_test "") - foreach (api_test ${HDF5_API_TESTS}) - add_test ( - NAME "${external_vol_tgt}-h5_api_test_${api_test}" - COMMAND $<TARGET_FILE:h5_api_test_driver> - --server ${HDF5_TEST_API_SERVER} - --client $<TARGET_FILE:h5_api_test> "${api_test}" - --serial - ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS} - ) - set_tests_properties ( - "${external_vol_tgt}-h5_api_test_${api_test}" - PROPERTIES - ENVIRONMENT - "${vol_test_env}" - WORKING_DIRECTORY - "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}" - DEPENDS - "${last_api_test}" - ) - - set (last_api_test "${external_vol_tgt}-h5_api_test_${api_test}") + if (BUILD_SHARED_LIBS) + # Add tests for each external VOL connector that was built, + # but only if executables that were linked to a shared HDF5 + # library are available, since static executables will cause + # issues when VOL connectors are loaded dynamically + foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS}) + # Determine environment variables that need to be set for testing + set (vol_test_env "") + set (vol_plugin_paths "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}") + + get_target_property (vol_test_string "${external_vol_tgt}" HDF5_VOL_NAME) + list (APPEND vol_test_env "HDF5_VOL_CONNECTOR=${vol_test_string}") + + get_target_property (vol_lib_targets "${external_vol_tgt}" HDF5_VOL_TARGETS) + foreach (lib_target ${vol_lib_targets}) + get_target_property (lib_target_output_dir "${lib_target}" LIBRARY_OUTPUT_DIRECTORY) + if (NOT "${lib_target_output_dir}" STREQUAL "lib_target_output_dir-NOTFOUND" + AND NOT "${lib_target_output_dir}" STREQUAL "" + AND NOT "${lib_target_output_dir}" STREQUAL "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}") + set (vol_plugin_paths "${vol_plugin_paths}${CMAKE_SEP}${lib_target_output_dir}") + endif () + endforeach () + + list (APPEND vol_test_env "HDF5_PLUGIN_PATH=${vol_plugin_paths}") + + # Add main API tests to test suite + set (last_api_test "") + foreach (api_test ${HDF5_API_TESTS}) + add_test ( + NAME ${external_vol_tgt}-h5_api_test_${api_test} + COMMAND $<TARGET_FILE:h5_api_test_driver> + --server ${HDF5_TEST_API_SERVER} + --client $<TARGET_FILE:h5_api_test> ${api_test} + --serial + ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS} + ) + set_tests_properties (${external_vol_tgt}-h5_api_test_${api_test} + PROPERTIES + ENVIRONMENT "${vol_test_env}" + WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${external_vol_tgt} + DEPENDS "${last_api_test}" + ) + if ("${external_vol_tgt}-h5_api_test_${api_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") + set_tests_properties (${external_vol_tgt}-h5_api_test_${api_test} PROPERTIES DISABLED true) + endif () + set (last_api_test "${external_vol_tgt}-h5_api_test_${api_test}") + endforeach () + + # Add any extra HDF5 tests to test suite + foreach (hdf5_test ${HDF5_API_TESTS_EXTRA}) + add_test ( + NAME ${external_vol_tgt}-h5_api_test_${hdf5_test} + COMMAND $<TARGET_FILE:h5_api_test_driver> + --server ${HDF5_TEST_API_SERVER} + --client $<TARGET_FILE:${hdf5_test}> + --serial + ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS} + ) + set_tests_properties (${external_vol_tgt}-h5_api_test_${hdf5_test} + PROPERTIES + ENVIRONMENT "${vol_test_env}" + WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${external_vol_tgt} + ) + if ("${external_vol_tgt}-h5_api_test_${hdf5_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") + set_tests_properties (${external_vol_tgt}-h5_api_test_${hdf5_test} PROPERTIES DISABLED true) + endif () + endforeach () + + # Hook external tests to same test suite + foreach (ext_api_test ${HDF5_API_EXT_SERIAL_TESTS}) + add_test ( + NAME ${external_vol_tgt}-h5_api_ext_test_${ext_api_test} + COMMAND $<TARGET_FILE:h5_api_test_driver> + --server ${HDF5_TEST_API_SERVER} + --client $<TARGET_FILE:${ext_api_test}> + --serial + ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS} + ) + set_tests_properties (${external_vol_tgt}-h5_api_ext_test_${ext_api_test} + PROPERTIES + ENVIRONMENT "${vol_test_env}" + WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${external_vol_tgt} + ) + endforeach () endforeach () - - # Add any extra HDF5 tests - foreach (hdf5_test ${HDF5_API_TESTS_EXTRA}) - add_test ( - NAME "${external_vol_tgt}-h5_api_test_${hdf5_test}" - COMMAND $<TARGET_FILE:h5_api_test_driver> - --server ${HDF5_TEST_API_SERVER} - --client $<TARGET_FILE:h5_api_test_${hdf5_test}> - --serial - ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS} - ) - set_tests_properties ( - "${external_vol_tgt}-h5_api_test_${hdf5_test}" - PROPERTIES - ENVIRONMENT - "${vol_test_env}" - WORKING_DIRECTORY - "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}" - ) - endforeach () - - # Hook external tests to same test suite - foreach (ext_api_test ${HDF5_API_EXT_SERIAL_TESTS}) - add_test ( - NAME "${external_vol_tgt}-h5_api_ext_test_${ext_api_test}" - COMMAND $<TARGET_FILE:h5_api_test_driver> - --server ${HDF5_TEST_API_SERVER} - --client $<TARGET_FILE:${ext_api_test}> - --serial - ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS} - ) - set_tests_properties ( - "${external_vol_tgt}-h5_api_ext_test_${ext_api_test}" - PROPERTIES - ENVIRONMENT - "${vol_test_env}" - WORKING_DIRECTORY - "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}" - ) - endforeach () - endforeach () + endif () else () + # Add main API tests to test suite set (last_api_test "") foreach (api_test ${HDF5_API_TESTS}) add_test ( @@ -420,78 +308,112 @@ if (HDF5_TEST_SERIAL) if ("h5_api_test_${api_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (h5_api_test_${api_test} PROPERTIES DISABLED true) endif () - set_tests_properties (h5_api_test_${api_test} PROPERTIES DEPENDS ${last_api_test}) + set_tests_properties (h5_api_test_${api_test} PROPERTIES DEPENDS "${last_api_test}") set (last_api_test "h5_api_test_${api_test}") endforeach () - foreach (hdf5_test ${HDF5_API_TESTS_EXTRA}) + # Hook external tests to same test suite + foreach (ext_api_test ${HDF5_API_EXT_SERIAL_TESTS}) add_test ( - NAME "h5_api_test_${hdf5_test}" - COMMAND $<TARGET_FILE:h5_api_test_${hdf5_test}> + NAME h5_api_ext_test_${ext_api_test} + COMMAND $<TARGET_FILE:${ext_api_test}> ) if ("h5_api_ext_test_${ext_api_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") set_tests_properties (h5_api_ext_test_${ext_api_test} PROPERTIES DISABLED true) endif () endforeach () - # Add tests for each external VOL connector that was built - foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS}) - # Determine environment variables that need to be set for testing - set (vol_test_env "") - set (vol_plugin_paths "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}") - - get_target_property (vol_test_string "${external_vol_tgt}" HDF5_VOL_NAME) - list (APPEND vol_test_env "HDF5_VOL_CONNECTOR=${vol_test_string}") - - get_target_property (vol_lib_targets "${external_vol_tgt}" HDF5_VOL_TARGETS) - foreach (lib_target ${vol_lib_targets}) - get_target_property (lib_target_output_dir "${lib_target}" LIBRARY_OUTPUT_DIRECTORY) - if (NOT "${lib_target_output_dir}" STREQUAL "lib_target_output_dir-NOTFOUND" - AND NOT "${lib_target_output_dir}" STREQUAL "" - AND NOT "${lib_target_output_dir}" STREQUAL "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}") - set (vol_plugin_paths "${vol_plugin_paths}${CMAKE_SEP}${lib_target_output_dir}") - endif () + if (BUILD_SHARED_LIBS) + # Add tests for each external VOL connector that was built, + # but only if executables that were linked to a shared HDF5 + # library are available, since static executables will cause + # issues when VOL connectors are loaded dynamically + foreach (external_vol_tgt ${HDF5_EXTERNAL_VOL_TARGETS}) + # Determine environment variables that need to be set for testing + set (vol_test_env "") + set (vol_plugin_paths "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}") + + get_target_property (vol_test_string "${external_vol_tgt}" HDF5_VOL_NAME) + list (APPEND vol_test_env "HDF5_VOL_CONNECTOR=${vol_test_string}") + + get_target_property (vol_lib_targets "${external_vol_tgt}" HDF5_VOL_TARGETS) + foreach (lib_target ${vol_lib_targets}) + get_target_property (lib_target_output_dir "${lib_target}" LIBRARY_OUTPUT_DIRECTORY) + if (NOT "${lib_target_output_dir}" STREQUAL "lib_target_output_dir-NOTFOUND" + AND NOT "${lib_target_output_dir}" STREQUAL "" + AND NOT "${lib_target_output_dir}" STREQUAL "${CMAKE_BINARY_DIR}/${HDF5_INSTALL_BIN_DIR}") + set (vol_plugin_paths "${vol_plugin_paths}${CMAKE_SEP}${lib_target_output_dir}") + endif () + endforeach () + + list (APPEND vol_test_env "HDF5_PLUGIN_PATH=${vol_plugin_paths}") + + # Add main API tests to test suite + set (last_api_test "") + foreach (api_test ${HDF5_API_TESTS}) + add_test ( + NAME ${external_vol_tgt}-h5_api_test_${api_test} + COMMAND $<TARGET_FILE:h5_api_test> ${api_test} + ) + set_tests_properties (${external_vol_tgt}-h5_api_test_${api_test} + PROPERTIES + ENVIRONMENT "${vol_test_env}" + WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${external_vol_tgt} + DEPENDS "${last_api_test}" + ) + if ("${external_vol_tgt}-h5_api_test_${api_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") + set_tests_properties (${external_vol_tgt}-h5_api_test_${api_test} PROPERTIES DISABLED true) + endif () + set (last_api_test "${external_vol_tgt}-h5_api_test_${api_test}") + endforeach () + + # Add any extra HDF5 tests to test suite + foreach (hdf5_test ${HDF5_API_TESTS_EXTRA}) + add_test ( + NAME ${external_vol_tgt}-h5_api_test_${hdf5_test} + COMMAND $<TARGET_FILE:${hdf5_test}> + ) + set_tests_properties (${external_vol_tgt}-h5_api_test_${hdf5_test} + PROPERTIES + ENVIRONMENT "${vol_test_env}" + WORKING_DIRECTORY ${HDF5_TEST_BINARY_DIR}/${external_vol_tgt} + ) + if ("${external_vol_tgt}-h5_api_test_${hdf5_test}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}") + set_tests_properties (${external_vol_tgt}-h5_api_test_${hdf5_test} PROPERTIES DISABLED true) + endif () + endforeach () endforeach () + endif() + endif () +endif () - list (APPEND vol_test_env "HDF5_PLUGIN_PATH=${vol_plugin_paths}") - - # Add main API tests - set (last_api_test "") - foreach (api_test ${HDF5_API_TESTS}) - add_test ( - NAME "${external_vol_tgt}-h5_api_test_${api_test}" - COMMAND $<TARGET_FILE:h5_api_test> "${api_test}" - ) - set_tests_properties ( - "${external_vol_tgt}-h5_api_test_${api_test}" - PROPERTIES - ENVIRONMENT - "${vol_test_env}" - WORKING_DIRECTORY - "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}" - DEPENDS - "${last_api_test}" - ) - - set (last_api_test "${external_vol_tgt}-h5_api_test_${api_test}") - endforeach () +#----------------------------------------------------------------------------- +# Install the main API test executable and any +# extra HDF5 tests if requested +#----------------------------------------------------------------------------- +if (HDF5_EXPORTED_TARGETS AND HDF5_TEST_API_INSTALL) + install ( + TARGETS h5_api_test + EXPORT ${HDF5_EXPORTED_TARGETS} + DESTINATION ${HDF5_INSTALL_BIN_DIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + COMPONENT tests + ) - # Add any extra HDF5 tests - foreach (hdf5_test ${HDF5_API_TESTS_EXTRA}) - add_test ( - NAME "${external_vol_tgt}-h5_api_test_${hdf5_test}" - COMMAND $<TARGET_FILE:h5_api_test_${hdf5_test}> - ) - set_tests_properties ( - "${external_vol_tgt}-h5_api_test_${hdf5_test}" + foreach (api_test_extra ${HDF5_API_TESTS_EXTRA}) + if (TARGET ${api_test_extra}) + set_target_properties (${api_test_extra} PROPERTIES - ENVIRONMENT - "${vol_test_env}" - WORKING_DIRECTORY - "${HDF5_TEST_BINARY_DIR}/${external_vol_tgt}" - ) - endforeach () - endforeach () - endif () + OUTPUT_NAME "h5_api_test_${api_test_extra}" + ) + install ( + TARGETS ${api_test_extra} + EXPORT ${HDF5_EXPORTED_TARGETS} + DESTINATION ${HDF5_INSTALL_BIN_DIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + COMPONENT tests + ) + endif () + endforeach () endif () |