Skip to content

Commit

Permalink
CMake: Use helper libraries for nczarr tests
Browse files Browse the repository at this point in the history
Avoids rebuilding the same files multiple times
  • Loading branch information
ZedThree committed Oct 27, 2023
1 parent cb61d34 commit 0b9c994
Showing 1 changed file with 42 additions and 26 deletions.
68 changes: 42 additions & 26 deletions nczarr_test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,36 +55,54 @@ ENDIF()

IF(ENABLE_TESTS)

SET(COMMONSRC ut_util.c ut_test.c ${XGETOPTSRC})

SET(TSTCOMMONSRC test_utils.c test_utils.h ${XGETOPTSRC})

INCLUDE_DIRECTORIES(../libnczarr ../plugins ${CMAKE_SOURCE_DIR}/nczarr_test)
add_library(ut_util ut_util.c ut_test.c ${XGETOPTSRC})
target_include_directories(ut_util PUBLIC ../libnczarr ../plugins ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(ut_util PUBLIC netcdf ${ALL_TLL_LIBS})

add_library(test_utils test_utils.c test_utils.h ${XGETOPTSRC})
target_include_directories(test_utils PUBLIC ../libnczarr ../plugins ${CMAKE_CURRENT_LIST_DIR})
target_link_libraries(test_utils PUBLIC netcdf ${ALL_TLL_LIBS})

set_target_properties(ut_util test_utils PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR}
)

macro(build_bin_test_with_util_lib F UTIL_LIB)
build_bin_test(${F})
target_link_libraries(${F} ${UTIL_LIB})
endmacro()

macro(add_bin_test_with_util_lib PREFIX F UTIL_LIB)
add_bin_test(${PREFIX} ${F})
target_link_libraries(${PREFIX}_${F} ${UTIL_LIB})
endmacro()

# Base tests
# The tests are set up as a combination of shell scripts and executables that
# must be run in a particular order. It is painful but will use macros to help
# keep it from being too bad.

BUILD_BIN_TEST(ut_map ${COMMONSRC})
BUILD_BIN_TEST(ut_mapapi ${COMMONSRC})
BUILD_BIN_TEST(ut_json ${COMMONSRC})
build_bin_test_with_util_lib(ut_map ut_util)
build_bin_test_with_util_lib(ut_mapapi ut_util)
build_bin_test_with_util_lib(ut_json ut_util)

BUILD_BIN_TEST(test_fillonlyz ${TSTCOMMONSRC})
BUILD_BIN_TEST(test_quantize ${TSTCOMMONSRC})
BUILD_BIN_TEST(test_notzarr ${TSTCOMMONSRC})
build_bin_test_with_util_lib(test_fillonlyz test_utils)
build_bin_test_with_util_lib(test_quantize test_utils)
build_bin_test_with_util_lib(test_notzarr test_utils)

# ADD_BIN_TEST(nczarr_test test_endians ${TSTCOMMONSRC})

# Unlimited Tests
IF(USE_HDF5)
ADD_BIN_TEST(nczarr_test test_unlim_vars ${TSTCOMMONSRC})
ADD_BIN_TEST(nczarr_test test_put_vars_two_unlim_dim ${TSTCOMMONSRC})
BUILD_BIN_TEST(test_zchunks ${COMMONSRC})
BUILD_BIN_TEST(test_zchunks2 ${COMMONSRC})
BUILD_BIN_TEST(test_zchunks3 ${COMMONSRC})
BUILD_BIN_TEST(test_unlim_io ${TSTCOMMONSRC})
BUILD_BIN_TEST(test_chunking ${TSTCOMMONSRC})
add_bin_test_with_util_lib(nczarr_test test_unlim_vars test_utils)
add_bin_test_with_util_lib(nczarr_test test_put_vars_two_unlim_dim test_utils)
build_bin_test_with_util_lib(test_zchunks ut_util)
build_bin_test_with_util_lib(test_zchunks2 ut_util)
build_bin_test_with_util_lib(test_zchunks3 ut_util)
build_bin_test_with_util_lib(test_unlim_io test_utils)
build_bin_test_with_util_lib(test_chunking test_utils)
ADD_SH_TEST(nczarr_test run_nccopyz)
ADD_SH_TEST(nczarr_test run_unlim_io)
ADD_SH_TEST(nczarr_test run_nccopy5)
Expand All @@ -99,11 +117,11 @@ IF(ENABLE_TESTS)

# Helper programs for testing
BUILD_BIN_TEST(zhex)
BUILD_BIN_TEST(zisjson ${COMMONSRC})
build_bin_test_with_util_lib(zisjson ut_util)
TARGET_INCLUDE_DIRECTORIES(zisjson PUBLIC ../libnczarr)
BUILD_BIN_TEST(zs3parse ${COMMONSRC})
build_bin_test_with_util_lib(zs3parse ut_util)
TARGET_INCLUDE_DIRECTORIES(zs3parse PUBLIC ../libnczarr)
BUILD_BIN_TEST(zmapio ${COMMONSRC})
build_bin_test_with_util_lib(zmapio ut_util)

IF(ENABLE_S3 AND NOT WITH_S3_TESTING STREQUAL "NO")
# Helper programs for testing
Expand Down Expand Up @@ -132,9 +150,7 @@ IF(ENABLE_TESTS)
endif()

if(ENABLE_NCDUMPCHUNKS)
SET(ncdumpchunks_SOURCE ncdumpchunks.c)
SET(ncdumpchunks_SOURCE ${ncdumpchunks_SOURCE} ${XGETOPTSRC})
BUILD_BIN_TEST(ncdumpchunks ${ncdumpchunks_SOURCE})
build_bin_test_with_util_lib(ncdumpchunks ut_util)
endif()

IF(BUILD_UTILITIES)
Expand All @@ -145,7 +161,7 @@ IF(ENABLE_TESTS)
if(LARGE_FILE_TESTS)
BUILD_BIN_TEST(test_readcaching})
BUILD_BIN_TEST(test_writecaching})
BUILD_BIN_TEST(test_chunkcases ${TSTCOMMONSRC})
build_bin_test_with_util_lib(test_chunkcases test_utils)
add_sh_test(nczarr_test run_cachetest)
add_sh_test(nczarr_test run_chunkcases)
ENDIF()
Expand Down Expand Up @@ -175,7 +191,7 @@ IF(ENABLE_TESTS)
build_bin_test(test_nczfilter)
build_bin_test(test_filter_vlen)
build_bin_test(testfilter)
build_bin_test(testfilter_misc)
build_bin_test_with_util_lib(testfilter_misc test_utils)
build_bin_test(testfilter_multi)
build_bin_test(testfilter_order)
build_bin_test(testfilter_repeat)
Expand Down

0 comments on commit 0b9c994

Please sign in to comment.