diff --git a/CMakeLists.txt b/CMakeLists.txt index 841e009..b19a4ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -546,56 +546,7 @@ if(NOT PROJECT_IS_TOP_LEVEL) endif() if(BUILD_TESTING) - # We're using the older version 2 of Catch2 - FetchContent_Declare( - Catch2 - GIT_REPOSITORY https://github.com/catchorg/Catch2.git - GIT_TAG v2.13.9) - - FetchContent_MakeAvailable(Catch2) - - list( - APPEND - CIFPP_tests - unit-v2 - unit-3d - format - model - rename-compound - sugar - spinner - reconstruction - validate-pdbx) - - foreach(CIFPP_TEST IN LISTS CIFPP_tests) - set(CIFPP_TEST "${CIFPP_TEST}-test") - set(CIFPP_TEST_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/test/${CIFPP_TEST}.cpp") - - add_executable( - ${CIFPP_TEST} ${CIFPP_TEST_SOURCE} - "${CMAKE_CURRENT_SOURCE_DIR}/test/test-main.cpp") - - target_link_libraries(${CIFPP_TEST} PRIVATE Threads::Threads cifpp::cifpp - Catch2::Catch2) - target_include_directories(${CIFPP_TEST} PRIVATE "${EIGEN_INCLUDE_DIR}") - - if(MSVC) - # Specify unwind semantics so that MSVC knowns how to handle exceptions - target_compile_options(${CIFPP_TEST} PRIVATE /EHsc) - endif() - - add_custom_target( - "run-${CIFPP_TEST}" - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Run${CIFPP_TEST}.touch ${CIFPP_TEST}) - - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Run${CIFPP_TEST}.touch - COMMAND $ --data-dir - ${CMAKE_CURRENT_SOURCE_DIR}/test) - - add_test(NAME ${CIFPP_TEST} COMMAND $ --data-dir - ${CMAKE_CURRENT_SOURCE_DIR}/test) - endforeach() + add_subdirectory(test) endif() # Optionally install the update scripts for CCD and dictionary files diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..d4a507a --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,53 @@ +# We're using the older version 2 of Catch2 +FetchContent_Declare( + Catch2 + GIT_REPOSITORY https://github.com/catchorg/Catch2.git + GIT_TAG v2.13.9) + +FetchContent_MakeAvailable(Catch2) + +list( + APPEND + CIFPP_tests + unit-v2 + unit-3d + format + model + rename-compound + sugar + spinner + reconstruction + validate-pdbx) + + +add_library(test-main OBJECT "${CMAKE_CURRENT_SOURCE_DIR}/test-main.cpp") +target_link_libraries(test-main cifpp::cifpp Catch2::Catch2) + +foreach(CIFPP_TEST IN LISTS CIFPP_tests) + set(CIFPP_TEST "${CIFPP_TEST}-test") + set(CIFPP_TEST_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/${CIFPP_TEST}.cpp") + + add_executable( + ${CIFPP_TEST} ${CIFPP_TEST_SOURCE} $) + + target_link_libraries(${CIFPP_TEST} PRIVATE Threads::Threads cifpp::cifpp + Catch2::Catch2) + target_include_directories(${CIFPP_TEST} PRIVATE "${EIGEN_INCLUDE_DIR}") + + if(MSVC) + # Specify unwind semantics so that MSVC knowns how to handle exceptions + target_compile_options(${CIFPP_TEST} PRIVATE /EHsc) + endif() + + add_custom_target( + "run-${CIFPP_TEST}" + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Run${CIFPP_TEST}.touch ${CIFPP_TEST}) + + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/Run${CIFPP_TEST}.touch + COMMAND $ --data-dir + ${CMAKE_CURRENT_SOURCE_DIR}) + + add_test(NAME ${CIFPP_TEST} COMMAND $ --data-dir + ${CMAKE_CURRENT_SOURCE_DIR}) +endforeach() \ No newline at end of file