# # Copyright (c) 2019-2024 Ruben Perez Hidalgo (rubenperez038 at gmail dot com) # # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # # This is only processed when we're the main project and # BOOST_MYSQL_INTEGRATION_TESTS is on cmake_minimum_required(VERSION 3.12...3.22) # string JOIN find_package(Boost ${BOOST_MYSQL_VERSION} REQUIRED COMPONENTS context) add_executable( boost_mysql_integrationtests # Utilities src/get_endpoint.cpp src/metadata_validator.cpp src/er_network_variant.cpp src/sync_errc.cpp src/sync_exc.cpp src/async_callback.cpp src/async_coroutines.cpp src/async_coroutinescpp20.cpp # Actual tests test/spotchecks.cpp test/crud.cpp test/handshake.cpp test/prepared_statements.cpp test/stored_procedures.cpp test/multi_queries.cpp test/static_interface.cpp test/reconnect.cpp test/any_connection.cpp test/character_set_tracking.cpp test/connection_pool.cpp test/db_specific.cpp test/database_types.cpp ) target_include_directories( boost_mysql_integrationtests PRIVATE "include" ) target_link_libraries( boost_mysql_integrationtests PRIVATE boost_mysql_testing Boost::mysql Boost::context ) target_compile_definitions( boost_mysql_integrationtests PRIVATE BOOST_ALLOW_DEPRECATED # Integration tests still exercise the old execution interface ) boost_mysql_common_target_settings(boost_mysql_integrationtests) if (${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.16) target_precompile_headers( boost_mysql_integrationtests PRIVATE pch.hpp ) endif() # Compose the test filter if (NOT "$ENV{BOOST_MYSQL_NO_UNIX_SOCKET_TESTS}" STREQUAL "") list(APPEND TEST_EXCLUSIONS "!@unix") endif() set (DB_SYSTEM $ENV{BOOST_MYSQL_TEST_DB}) if ("${DB_SYSTEM}" STREQUAL "") set(DB_SYSTEM "mysql8") endif() list(APPEND TEST_EXCLUSIONS "!@skip_${DB_SYSTEM}") string(JOIN ":" TEST_FILTER ${TEST_EXCLUSIONS}) if ("${TEST_FILTER}" STREQUAL "") add_test( NAME boost_mysql_integrationtests COMMAND boost_mysql_integrationtests ) else() add_test( NAME boost_mysql_integrationtests COMMAND boost_mysql_integrationtests "-t" ${TEST_FILTER} ) endif() # If we are using memcheck, then run a subset of the integration tests # under valgrind. Coroutine tests don't work well under Valgrind, and # SSL tests are too slow. We do some other exclusions to reduce runtime if (BOOST_MYSQL_VALGRIND_TESTS) string(JOIN ":" TEST_FILTER ${TEST_EXCLUSIONS} "!@ssl" "!@async_coroutine") add_memcheck_test( NAME boost_mysql_integrationtests_memcheck TARGET boost_mysql_integrationtests ARGUMENTS "-t" ${TEST_FILTER} ) endif()