From 355dcfe502863bd47b7a978471f5e947908dc1f3 Mon Sep 17 00:00:00 2001 From: Richard Hodges Date: Tue, 23 Nov 2021 11:58:30 +0100 Subject: [PATCH] Add individual tests to CMake workflow close #2350 --- CHANGELOG.md | 6 +++++ test/CMakeLists.txt | 6 +++++ test/beast/CMakeLists.txt | 33 +++++++++++++++++++++++++ test/beast/_experimental/CMakeLists.txt | 7 ++++++ test/beast/core/CMakeLists.txt | 7 ++++++ test/beast/core/test_handler.hpp | 2 ++ test/beast/http/CMakeLists.txt | 5 ++++ test/beast/ssl/CMakeLists.txt | 2 ++ test/beast/websocket/CMakeLists.txt | 4 +++ test/beast/zlib/CMakeLists.txt | 2 ++ 10 files changed, 74 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff7ec9b1..79e796f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +Version XXX: + +* Add individual tests to CMake workflow. + +-------------------------------------------------------------------------------- + Version 322: * Fix typo in `_experimental::test::basic_stream` documentation. diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 9e474bc1..8f9f4519 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -43,6 +43,12 @@ set (ZLIB_SOURCES ${CMAKE_CURRENT_LIST_DIR}/extern/zlib-1.2.11/zutil.c ) +add_library ( + lib-zlib + ${ZLIB_SOURCES} +) +target_include_directories(lib-zlib PUBLIC "${CMAKE_CURRENT_LIST_DIR}/extern/zlib-1.2.11") + set (TEST_MAIN ${PROJECT_SOURCE_DIR}/test/lib_beast.cpp) GroupSources (. "/") diff --git a/test/beast/CMakeLists.txt b/test/beast/CMakeLists.txt index 4d486fe6..cb3c1eb5 100644 --- a/test/beast/CMakeLists.txt +++ b/test/beast/CMakeLists.txt @@ -7,6 +7,30 @@ # Official repository: https://github.com/boostorg/beast # +function(build_individual_tests prefix) + set(options ) + set(oneValueArgs ) + set(multiValueArgs EXCLUDE LIBS EXTRA) + cmake_parse_arguments(bit "${options}" + "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + file(GLOB test_srcs "*.cpp") + set(individual_tests) + foreach(test_src IN LISTS test_srcs) + get_filename_component(test_suffix "${test_src}" NAME_WE) + if(NOT test_suffix IN_LIST bit_EXCLUDE) + set(test_name "${prefix}-${test_suffix}") + add_executable("${test_name}" EXCLUDE_FROM_ALL "${test_src}") + foreach(lib IN LISTS bit_LIBS) + target_link_libraries("${test_name}" "${lib}") + endforeach() + list(APPEND individual_tests COMMAND "${test_name}") + endif() + endforeach() + + add_custom_target("${prefix}-all" ${individual_tests}) +endfunction() + add_definitions (-DBOOST_BEAST_ALLOW_DEPRECATED) # For buffers_cat @@ -44,3 +68,12 @@ target_link_libraries(tests-beast lib-test) set_property(TARGET tests-beast PROPERTY FOLDER "tests") + +add_custom_target(tests-beast-all + DEPENDS + tests-beast-_experimental-all + tests-beast-core-all + tests-beast-http-all + tests-beast-ssl-all + tests-beast-websocket-all + tests-beast-zlib-all ) \ No newline at end of file diff --git a/test/beast/_experimental/CMakeLists.txt b/test/beast/_experimental/CMakeLists.txt index 9a3fd33c..9b50683f 100644 --- a/test/beast/_experimental/CMakeLists.txt +++ b/test/beast/_experimental/CMakeLists.txt @@ -26,3 +26,10 @@ target_link_libraries(tests-beast-_experimental ) set_property(TARGET tests-beast-_experimental PROPERTY FOLDER "tests") + +# +# Individual tests +# +build_individual_tests(tests-beast-_experimental + EXCLUDE + LIBS lib-asio lib-asio-ssl lib-beast lib-test) diff --git a/test/beast/core/CMakeLists.txt b/test/beast/core/CMakeLists.txt index 43cd6ebd..ed803ac7 100644 --- a/test/beast/core/CMakeLists.txt +++ b/test/beast/core/CMakeLists.txt @@ -72,3 +72,10 @@ target_link_libraries(tests-beast-core ) set_property(TARGET tests-beast-core PROPERTY FOLDER "tests") + +# +# Individual tests +# +build_individual_tests(tests-beast-core + EXCLUDE _detail_static_const close_socket zlib make_strand prepare_buffers + LIBS lib-asio lib-asio-ssl lib-beast lib-test) diff --git a/test/beast/core/test_handler.hpp b/test/beast/core/test_handler.hpp index ac6b946d..de7bb4e9 100644 --- a/test/beast/core/test_handler.hpp +++ b/test/beast/core/test_handler.hpp @@ -162,6 +162,8 @@ struct legacy_handler asio_handler_is_continuation(&h); BEAST_EXPECT(hook_invoked); } +#else // !defined(BOOST_ASIO_NO_DEPRECATED) + boost::ignore_unused(f); #endif // !defined(BOOST_ASIO_NO_DEPRECATED) } }; diff --git a/test/beast/http/CMakeLists.txt b/test/beast/http/CMakeLists.txt index 11fcf591..9cf12f85 100644 --- a/test/beast/http/CMakeLists.txt +++ b/test/beast/http/CMakeLists.txt @@ -51,3 +51,8 @@ target_link_libraries(tests-beast-http ) set_property(TARGET tests-beast-http PROPERTY FOLDER "tests") + +# +# Individual tests +# +build_individual_tests(tests-beast-http LIBS lib-asio lib-asio-ssl lib-beast lib-test) diff --git a/test/beast/ssl/CMakeLists.txt b/test/beast/ssl/CMakeLists.txt index 0a6c1a12..fd28edfe 100644 --- a/test/beast/ssl/CMakeLists.txt +++ b/test/beast/ssl/CMakeLists.txt @@ -24,3 +24,5 @@ target_link_libraries(tests-beast-ssl ) set_property(TARGET tests-beast-ssl PROPERTY FOLDER "tests") + +build_individual_tests(tests-beast-ssl LIBS lib-asio lib-asio-ssl lib-beast lib-test) diff --git a/test/beast/websocket/CMakeLists.txt b/test/beast/websocket/CMakeLists.txt index 50036eeb..48e1bf3a 100644 --- a/test/beast/websocket/CMakeLists.txt +++ b/test/beast/websocket/CMakeLists.txt @@ -50,3 +50,7 @@ target_link_libraries(tests-beast-websocket ) set_property(TARGET tests-beast-websocket PROPERTY FOLDER "tests") + +build_individual_tests(tests-beast-websocket + EXCLUDE doc_snippets + LIBS lib-asio lib-asio-ssl lib-beast lib-test) diff --git a/test/beast/zlib/CMakeLists.txt b/test/beast/zlib/CMakeLists.txt index ecb9898a..20bd037d 100644 --- a/test/beast/zlib/CMakeLists.txt +++ b/test/beast/zlib/CMakeLists.txt @@ -32,3 +32,5 @@ target_link_libraries(tests-beast-zlib ) set_property(TARGET tests-beast-zlib PROPERTY FOLDER "tests") + +build_individual_tests(tests-beast-zlib LIBS lib-asio lib-beast lib-test lib-zlib)