From 019c5202ea9bf44eb7baa3ac69661818b9fe1350 Mon Sep 17 00:00:00 2001 From: Lion Kortlepel Date: Thu, 26 May 2022 11:43:02 +0200 Subject: [PATCH] add tests executable --- .gitmodules | 3 + CMakeLists.txt | 131 ++++++++++++++++++++++++++++++-------------- deps/CMakeLists.txt | 1 + deps/doctest | 1 + test/test_main.cpp | 2 + 5 files changed, 98 insertions(+), 40 deletions(-) create mode 160000 deps/doctest create mode 100644 test/test_main.cpp diff --git a/.gitmodules b/.gitmodules index 6293066..e513ccf 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,3 +28,6 @@ [submodule "deps/fmt"] path = deps/fmt url = https://github.com/fmtlib/fmt +[submodule "deps/doctest"] + path = deps/doctest + url = https://github.com/doctest/doctest diff --git a/CMakeLists.txt b/CMakeLists.txt index cb1aeab..204b76d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,51 +92,53 @@ message(STATUS "Adding local source dependencies") # this has to happen before -DDEBUG since it wont compile properly with -DDEBUG add_subdirectory(deps) -# ------------------------ BEAMMP SERVER ----------------------------- - -add_executable(BeamMP-Server - src/main.cpp - include/TConsole.h src/TConsole.cpp - include/TServer.h src/TServer.cpp - include/Compat.h src/Compat.cpp - include/Common.h src/Common.cpp - include/Client.h src/Client.cpp - include/VehicleData.h src/VehicleData.cpp - include/TConfig.h src/TConfig.cpp - include/TLuaEngine.h src/TLuaEngine.cpp - include/TLuaPlugin.h src/TLuaPlugin.cpp - include/TResourceManager.h src/TResourceManager.cpp - include/THeartbeatThread.h src/THeartbeatThread.cpp - include/Http.h src/Http.cpp - include/TSentry.h src/TSentry.cpp - include/TPPSMonitor.h src/TPPSMonitor.cpp - include/TNetwork.h src/TNetwork.cpp - include/LuaAPI.h src/LuaAPI.cpp - include/TScopedTimer.h src/TScopedTimer.cpp - include/SignalHandling.h src/SignalHandling.cpp - include/ArgsParser.h src/ArgsParser.cpp - include/Environment.h) - -target_compile_definitions(BeamMP-Server PRIVATE SECRET_SENTRY_URL="${BEAMMP_SECRET_SENTRY_URL}") -include_directories(BeamMP-Server PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) - -target_include_directories(BeamMP-Server PUBLIC - "${CMAKE_CURRENT_SOURCE_DIR}/include" - "${CMAKE_CURRENT_SOURCE_DIR}/commandline") +# ------------------------ VARIABLES --------------------------------- include(FindLua) include(FindOpenSSL) include(FindThreads) include(FindZLIB) -target_include_directories(BeamMP-Server PUBLIC - ${LUA_INCLUDE_DIR} - ${CURL_INCLUDE_DIRS} - "include/tomlplusplus" - "include/sentry-native/include" - "include/curl/include") +set(BeamMP_Sources + include/TConsole.h src/TConsole.cpp + include/TServer.h src/TServer.cpp + include/Compat.h src/Compat.cpp + include/Common.h src/Common.cpp + include/Client.h src/Client.cpp + include/VehicleData.h src/VehicleData.cpp + include/TConfig.h src/TConfig.cpp + include/TLuaEngine.h src/TLuaEngine.cpp + include/TLuaPlugin.h src/TLuaPlugin.cpp + include/TResourceManager.h src/TResourceManager.cpp + include/THeartbeatThread.h src/THeartbeatThread.cpp + include/Http.h src/Http.cpp + include/TSentry.h src/TSentry.cpp + include/TPPSMonitor.h src/TPPSMonitor.cpp + include/TNetwork.h src/TNetwork.cpp + include/LuaAPI.h src/LuaAPI.cpp + include/TScopedTimer.h src/TScopedTimer.cpp + include/SignalHandling.h src/SignalHandling.cpp + include/ArgsParser.h src/ArgsParser.cpp + include/Environment.h +) -target_link_libraries(BeamMP-Server +set(BeamMP_Includes + "${CMAKE_CURRENT_SOURCE_DIR}/include" + "${CMAKE_CURRENT_SOURCE_DIR}/commandline" + "${CMAKE_CURRENT_SOURCE_DIR}/include" + ${LUA_INCLUDE_DIR} + ${CURL_INCLUDE_DIRS} + "include/tomlplusplus" + "include/sentry-native/include" + "include/curl/include" +) + +set(BeamMP_Definitions + SECRET_SENTRY_URL="${BEAMMP_SECRET_SENTRY_URL}" +) + +set(BeamMP_Libraries + doctest::doctest OpenSSL::SSL OpenSSL::Crypto sol2::sol2 @@ -145,8 +147,57 @@ target_link_libraries(BeamMP-Server ZLIB::ZLIB ${LUA_LIBRARIES} commandline - sentry) + sentry +) if (WIN32) - target_link_libraries(BeamMP-Server wsock32 ws2_32) + set(BeamMP_PlatformLibs wsock32 ws2_32) endif () + +# ------------------------ BEAMMP SERVER ----------------------------- +# ------------------------ BEAMMP SERVER TESTS ----------------------- + +add_executable(BeamMP-Server + src/main.cpp + ${BeamMP_Sources} +) + +target_compile_definitions(BeamMP-Server PRIVATE + ${BeamMP_Definitions} + DOCTEST_CONFIG_DISABLE +) + +target_include_directories(BeamMP-Server PUBLIC + ${BeamMP_Includes} +) + +target_link_libraries(BeamMP-Server + ${BeamMP_Libraries} + ${BeamMP_PlatformLibs} +) + +# ------------------------ BEAMMP SERVER TESTS ----------------------- + +option(BUILD_TESTS "Build BeamMP-Server tests" ON) + +if(BUILD_TESTS) + add_executable(BeamMP-Server-tests + test/test_main.cpp + ${BeamMP_Sources} + ) + + target_compile_definitions(BeamMP-Server-tests PRIVATE + ${BeamMP_Definitions} + DOCTEST_CONFIG_DISABLE + ) + + target_include_directories(BeamMP-Server-tests PUBLIC + ${BeamMP_Includes} + ) + + target_link_libraries(BeamMP-Server-tests + ${BeamMP_Libraries} + ${BeamMP_PlatformLibs} + ) +endif() + diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 6167b39..9e5a7ec 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -8,3 +8,4 @@ include_directories("${PROJECT_SOURCE_DIR}/deps") add_subdirectory("${PROJECT_SOURCE_DIR}/deps/commandline") add_subdirectory("${PROJECT_SOURCE_DIR}/deps/sol2") add_subdirectory("${PROJECT_SOURCE_DIR}/deps/fmt") +add_subdirectory("${PROJECT_SOURCE_DIR}/deps/doctest") diff --git a/deps/doctest b/deps/doctest new file mode 160000 index 0000000..7b98851 --- /dev/null +++ b/deps/doctest @@ -0,0 +1 @@ +Subproject commit 7b9885133108ae301ddd16e2651320f54cafeba7 diff --git a/test/test_main.cpp b/test/test_main.cpp new file mode 100644 index 0000000..0a3f254 --- /dev/null +++ b/test/test_main.cpp @@ -0,0 +1,2 @@ +#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN +#include