include(CTest) # Path for corkami dataset set(CORKAMI_SUBMODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/assets/corkami-poc-dataset") set(CORKAMI_PE_PATH "${CORKAMI_SUBMODULE_PATH}/PE/bin") if (NOT EXISTS "${CORKAMI_PE_PATH}") message(WARNING "Could not find Corkami dataset for testing.\nUse 'git submodule update --init'") endif() # To reconfigure and rebuild when submodule status changes # See https://gitlab.kitware.com/cmake/cmake/-/issues/18755 to read why using # (potentially non-existant) CORKAMI_PE_PATH doesn't work set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${CORKAMI_SUBMODULE_PATH}") if (NOT USE_EXTERNAL_CATCH2) include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/catch.cmake.in") else() find_package(Catch2 REQUIRED) endif() add_executable(tests test_main.cpp simple_test.cpp corkami_test.cpp pr_153_test.cpp filesystem_compat.h ) target_compile_definitions(tests PRIVATE ASSETS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/assets") target_include_directories(tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(tests PRIVATE std::filesystem ${PROJECT_NAME} Catch2::Catch2) # ASAN on Windows messes with exception handlers, and Catch2 doesn't account # for this. A workaround is to disable SEH on Windows with ASAN # https://github.com/catchorg/Catch2/issues/898#issuecomment-841733322 if (WIN32 AND PEPARSE_USE_SANITIZER STREQUAL "Address") target_compile_definitions(tests PUBLIC CATCH_CONFIG_NO_WINDOWS_SEH) endif() if (EXISTS "${CORKAMI_PE_PATH}") target_compile_definitions(tests PRIVATE CORKAMI_PE_PATH="${CORKAMI_PE_PATH}") endif() if (WIN32 AND BUILD_SHARED_LIBS) # Workaround for shared lib loading in Windows. # Need to copy all dependent DLLs to the same directory add_custom_command (TARGET tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ ) endif() include(Catch) catch_discover_tests(tests)