summaryrefslogtreecommitdiffstats
path: root/test/API/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'test/API/CMakeLists.txt')
-rw-r--r--test/API/CMakeLists.txt314
1 files changed, 314 insertions, 0 deletions
diff --git a/test/API/CMakeLists.txt b/test/API/CMakeLists.txt
new file mode 100644
index 0000000..d189d67
--- /dev/null
+++ b/test/API/CMakeLists.txt
@@ -0,0 +1,314 @@
+# 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.
+#
+
+#------------------------------------------------------------------------------
+# Set module path
+#------------------------------------------------------------------------------
+set(HDF5_TEST_API_CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${HDF5_TEST_API_CMAKE_MODULE_PATH})
+
+# TODO: probably not necessary
+#------------------------------------------------------------------------------
+# Setup CMake Environment
+#------------------------------------------------------------------------------
+if (WIN32)
+ message("The HDF5 API test suite is currently not supported on this platform." FATAL_ERROR)
+endif ()
+
+#------------------------------------------------------------------------------
+# Setup testing configuration file
+#------------------------------------------------------------------------------
+if (HDF5_TEST_PARALLEL)
+ set (HDF5_TEST_API_HAVE_PARALLEL 1)
+endif ()
+if (HDF5_TEST_API_ENABLE_ASYNC)
+ set (H5_API_TEST_HAVE_ASYNC 1)
+endif ()
+
+configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/H5_api_test_config.h.in
+ ${HDF5_TEST_BINARY_DIR}/H5_api_test_config.h
+)
+
+#------------------------------------------------------------------------------
+# Compile kwsys library and setup TestDriver
+#------------------------------------------------------------------------------
+if (HDF5_TEST_API_ENABLE_DRIVER)
+ add_subdirectory (driver)
+endif ()
+
+#------------------------------------------------------------------------------
+# Setup for API tests
+#------------------------------------------------------------------------------
+
+# Ported HDF5 tests
+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
+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
+)
+
+#-----------------------------------------------------------------------------
+# Build the main API test executable
+#-----------------------------------------------------------------------------
+foreach (api_test ${HDF5_API_TESTS})
+ set (HDF5_API_TEST_SRCS
+ ${HDF5_API_TEST_SRCS}
+ ${CMAKE_CURRENT_SOURCE_DIR}/H5_api_${api_test}_test.c
+ )
+endforeach ()
+
+set (HDF5_API_TEST_SRCS
+ ${HDF5_API_TEST_SRCS}
+ ${CMAKE_CURRENT_SOURCE_DIR}/H5_api_test.c
+ ${HDF5_TEST_API_SRC_DIR}/H5_api_test_util.c
+)
+
+add_executable (h5_api_test ${HDF5_API_TEST_SRCS})
+target_include_directories (
+ h5_api_test
+ 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
+ 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_C_PROPERTIES (h5_api_test SHARED)
+ target_link_libraries (
+ h5_api_test
+ PRIVATE
+ ${HDF5_TEST_LIBSH_TARGET}
+ )
+endif ()
+set_target_properties (
+ h5_api_test
+ PROPERTIES
+ FOLDER test/API
+)
+# Add Target to clang-format
+if (HDF5_ENABLE_FORMATTERS)
+ clang_format (HDF5_TEST_h5_api_test_FORMAT h5_api_test)
+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 ()
+endforeach ()
+
+#-----------------------------------------------------------------------------
+# Add tests if HDF5 serial testing is enabled
+#-----------------------------------------------------------------------------
+if (HDF5_TEST_SERIAL)
+ if (HDF5_TEST_API_ENABLE_DRIVER)
+ if ("${HDF5_TEST_API_SERVER}" STREQUAL "")
+ message (FATAL_ERROR "Please set HDF5_TEST_API_SERVER to point to a server executable for the test driver program.")
+ endif ()
+
+ # Driver options
+ if (HDF5_TEST_API_SERVER_ALLOW_ERRORS)
+ set (HDF5_TEST_API_DRIVER_EXTRA_FLAGS --allow-server-errors)
+ endif ()
+ if (HDF5_TEST_API_CLIENT_HELPER)
+ set (HDF5_TEST_API_DRIVER_EXTRA_FLAGS ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
+ --client-helper ${HDF5_TEST_API_CLIENT_HELPER}
+ )
+ endif ()
+ if (HDF5_TEST_API_CLIENT_INIT)
+ set (HDF5_TEST_API_DRIVER_EXTRA_FLAGS ${HDF5_TEST_API_DRIVER_EXTRA_FLAGS}
+ --client-init ${HDF5_TEST_API_CLIENT_INIT}
+ )
+ endif ()
+
+ set(last_api_test "")
+ foreach (api_test ${HDF5_API_TESTS})
+ add_test (
+ NAME "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("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 (
+ NAME "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}
+ )
+ endforeach ()
+ else ()
+ set(last_api_test "")
+ foreach (api_test ${HDF5_API_TESTS})
+ add_test (
+ NAME "h5_api_test_${api_test}"
+ COMMAND $<TARGET_FILE:h5_api_test> "${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_${hdf5_test}>
+ )
+ endforeach ()
+ endif ()
+endif ()