libcpr/test/CMakeLists.txt

83 lines
3.8 KiB
CMake
Raw Normal View History

2024-04-14 01:01:22 +00:00
cmake_minimum_required(VERSION 3.15)
find_package(Threads REQUIRED)
if (ENABLE_SSL_TESTS)
add_library(test_server STATIC
abstractServer.cpp
httpServer.cpp
httpsServer.cpp)
else ()
add_library(test_server STATIC
abstractServer.cpp
httpServer.cpp)
endif()
if(WIN32)
target_link_libraries(test_server PRIVATE Threads::Threads cpr::cpr GTest::GTest
PUBLIC mongoose ws2_32 wsock32)
else()
target_link_libraries(test_server PRIVATE Threads::Threads cpr::cpr GTest::GTest
PUBLIC mongoose)
endif()
macro(add_cpr_test _TEST_NAME)
add_executable(${_TEST_NAME}_tests ${_TEST_NAME}_tests.cpp)
target_link_libraries(${_TEST_NAME}_tests PRIVATE
test_server
GTest::GTest
cpr::cpr
CURL::libcurl)
add_test(NAME cpr_${_TEST_NAME}_tests COMMAND ${_TEST_NAME}_tests)
# Group under the "tests" project folder in IDEs such as Visual Studio.
set_property(TARGET ${_TEST_NAME}_tests PROPERTY FOLDER "tests")
if(WIN32 AND BUILD_SHARED_LIBS)
add_custom_command(TARGET ${_TEST_NAME}_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:libcurl> $<TARGET_FILE_DIR:${_TEST_NAME}_tests>)
add_custom_command(TARGET ${_TEST_NAME}_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:cpr> $<TARGET_FILE_DIR:${_TEST_NAME}_tests>)
endif()
endmacro()
add_cpr_test(get)
add_cpr_test(post)
add_cpr_test(session)
add_cpr_test(prepare)
add_cpr_test(async)
if(CPR_BUILD_TESTS_PROXY)
add_cpr_test(proxy)
add_cpr_test(proxy_auth)
endif()
add_cpr_test(head)
add_cpr_test(delete)
add_cpr_test(put)
add_cpr_test(callback)
add_cpr_test(raw_body)
add_cpr_test(options)
add_cpr_test(patch)
add_cpr_test(error)
add_cpr_test(alternating)
add_cpr_test(util)
add_cpr_test(structures)
add_cpr_test(encoded_auth)
add_cpr_test(version)
add_cpr_test(download)
add_cpr_test(interceptor)
add_cpr_test(interceptor_multi)
add_cpr_test(multiperform)
add_cpr_test(resolve)
add_cpr_test(multiasync)
if (ENABLE_SSL_TESTS)
add_cpr_test(ssl)
# Install all ssl keys and certs. Explicit copy for each file to prevent issues when copying on Windows.
add_custom_command(TARGET ssl_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:ssl_tests>/data/certificates $<TARGET_FILE_DIR:ssl_tests>/data/keys)
add_custom_command(TARGET ssl_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/data/certificates/client.crt $<TARGET_FILE_DIR:ssl_tests>/data/certificates/client.crt)
add_custom_command(TARGET ssl_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/data/certificates/root-ca.crt $<TARGET_FILE_DIR:ssl_tests>/data/certificates/root-ca.crt)
add_custom_command(TARGET ssl_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/data/certificates/server.crt $<TARGET_FILE_DIR:ssl_tests>/data/certificates/server.crt)
add_custom_command(TARGET ssl_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/data/keys/client.key $<TARGET_FILE_DIR:ssl_tests>/data/keys/client.key)
add_custom_command(TARGET ssl_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/data/keys/root-ca.key $<TARGET_FILE_DIR:ssl_tests>/data/keys/root-ca.key)
add_custom_command(TARGET ssl_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/data/keys/server.key $<TARGET_FILE_DIR:ssl_tests>/data/keys/server.key)
add_custom_command(TARGET ssl_tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/data/keys/server.pub $<TARGET_FILE_DIR:ssl_tests>/data/keys/server.pub)
endif()
file(INSTALL data DESTINATION data)