Make tests use main chatterino project objects (#2840)

This commit is contained in:
pajlada
2021-06-13 13:49:59 +02:00
committed by GitHub
parent 5512437f1b
commit 91b0170241
7 changed files with 145 additions and 204 deletions
+29 -28
View File
@@ -58,39 +58,37 @@ find_package(Threads REQUIRED)
find_library(LIBRT rt) find_library(LIBRT rt)
if (BUILD_APP) if (USE_SYSTEM_LIBCOMMUNI)
if (USE_SYSTEM_LIBCOMMUNI) find_package(LibCommuni REQUIRED)
find_package(LibCommuni REQUIRED) else()
else() set(LIBCOMMUNI_ROOT_LIB_FOLDER "${CMAKE_SOURCE_DIR}/lib/libcommuni")
set(LIBCOMMUNI_ROOT_LIB_FOLDER "${CMAKE_SOURCE_DIR}/lib/libcommuni") if (NOT EXISTS "${LIBCOMMUNI_ROOT_LIB_FOLDER}/CMakeLists.txt")
if (NOT EXISTS "${LIBCOMMUNI_ROOT_LIB_FOLDER}/CMakeLists.txt") message(FATAL_ERROR "Submodules probably not loaded, unable to find lib/libcommuni/CMakeLists.txt")
message(FATAL_ERROR "Submodules probably not loaded, unable to find lib/libcommuni/CMakeLists.txt")
endif()
add_subdirectory("${LIBCOMMUNI_ROOT_LIB_FOLDER}" EXCLUDE_FROM_ALL)
endif() endif()
# Link QtKeychain statically add_subdirectory("${LIBCOMMUNI_ROOT_LIB_FOLDER}" EXCLUDE_FROM_ALL)
option(QTKEYCHAIN_STATIC "" ON) endif()
if (USE_SYSTEM_QT5KEYCHAIN) # Link QtKeychain statically
find_package(Qt5Keychain REQUIRED) option(QTKEYCHAIN_STATIC "" ON)
else()
set(QT5KEYCHAIN_ROOT_LIB_FOLDER "${CMAKE_SOURCE_DIR}/lib/qtkeychain")
if (NOT EXISTS "${QT5KEYCHAIN_ROOT_LIB_FOLDER}/CMakeLists.txt")
message(FATAL_ERROR "Submodules probably not loaded, unable to find lib/qtkeychain/CMakeLists.txt")
endif()
add_subdirectory("${QT5KEYCHAIN_ROOT_LIB_FOLDER}" EXCLUDE_FROM_ALL) if (USE_SYSTEM_QT5KEYCHAIN)
if (NOT TARGET qt5keychain) find_package(Qt5Keychain REQUIRED)
message(FATAL_ERROR "qt5keychain target was not created :@") else()
endif() set(QT5KEYCHAIN_ROOT_LIB_FOLDER "${CMAKE_SOURCE_DIR}/lib/qtkeychain")
if (NOT EXISTS "${QT5KEYCHAIN_ROOT_LIB_FOLDER}/CMakeLists.txt")
message(FATAL_ERROR "Submodules probably not loaded, unable to find lib/qtkeychain/CMakeLists.txt")
endif() endif()
find_package(RapidJSON REQUIRED) add_subdirectory("${QT5KEYCHAIN_ROOT_LIB_FOLDER}" EXCLUDE_FROM_ALL)
if (NOT TARGET qt5keychain)
message(FATAL_ERROR "qt5keychain target was not created :@")
endif()
endif()
find_package(Websocketpp REQUIRED) find_package(RapidJSON REQUIRED)
endif ()
find_package(Websocketpp REQUIRED)
if (BUILD_TESTS) if (BUILD_TESTS)
find_package(GTest REQUIRED) find_package(GTest REQUIRED)
@@ -113,9 +111,12 @@ endif()
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (BUILD_APP) if (BUILD_TESTS)
add_subdirectory(src) add_definitions(-DCHATTERINO_TEST)
endif () endif ()
add_subdirectory(src)
if (BUILD_TESTS) if (BUILD_TESTS)
enable_testing() enable_testing()
add_subdirectory(tests) add_subdirectory(tests)
+111 -99
View File
@@ -1,4 +1,7 @@
set(SOURCE_FILES main.cpp set(LIBRARY_PROJECT "${PROJECT_NAME}-lib")
set(EXECUTABLE_PROJECT "${PROJECT_NAME}")
set(SOURCE_FILES
Application.cpp Application.cpp
Application.hpp Application.hpp
BaseSettings.cpp BaseSettings.cpp
@@ -471,53 +474,127 @@ endif ()
# Generate source groups for use in IDEs # Generate source groups for use in IDEs
source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${SOURCE_FILES}) source_group(TREE ${CMAKE_SOURCE_DIR} FILES ${SOURCE_FILES})
add_executable(${PROJECT_NAME} ${SOURCE_FILES}) add_library(${LIBRARY_PROJECT} OBJECT ${SOURCE_FILES})
add_sanitizers(${PROJECT_NAME})
target_link_libraries(${LIBRARY_PROJECT}
PUBLIC
Qt5::Core
Qt5::Widgets
Qt5::Gui
Qt5::Network
Qt5::Multimedia
Qt5::Svg
Qt5::Concurrent
LibCommuni::LibCommuni
qt5keychain
Pajlada::Serialize
Pajlada::Settings
Pajlada::Signals
websocketpp::websocketpp
Threads::Threads
RapidJSON::RapidJSON
LRUCache
)
if (BUILD_APP)
add_executable(${EXECUTABLE_PROJECT} main.cpp)
add_sanitizers(${EXECUTABLE_PROJECT})
target_include_directories(${EXECUTABLE_PROJECT} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(${EXECUTABLE_PROJECT} PUBLIC ${LIBRARY_PROJECT})
set_target_properties(${EXECUTABLE_PROJECT}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/bin"
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/bin"
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/bin"
)
if (MSVC)
get_target_property(Qt5_Core_Location Qt5::Core LOCATION)
get_filename_component(QT_BIN_DIR ${Qt5_Core_Location} DIRECTORY)
set(WINDEPLOYQT_COMMAND "${QT_BIN_DIR}/windeployqt.exe" $<TARGET_FILE:${EXECUTABLE_PROJECT}> --release --no-compiler-runtime --no-translations --no-opengl-sw)
install(TARGETS ${EXECUTABLE_PROJECT}
RUNTIME DESTINATION .
)
install(CODE "execute_process(COMMAND ${WINDEPLOYQT_COMMAND} --dir \${CMAKE_INSTALL_PREFIX})")
elseif (APPLE)
install(TARGETS ${EXECUTABLE_PROJECT}
RUNTIME DESTINATION bin
BUNDLE DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static
)
else ()
install(TARGETS ${EXECUTABLE_PROJECT}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static
)
install(FILES ${CMAKE_SOURCE_DIR}/resources/com.chatterino.chatterino.desktop
DESTINATION share/applications
)
install(FILES ${CMAKE_SOURCE_DIR}/resources/icon.png
RENAME com.chatterino.chatterino.png
DESTINATION share/icons/hicolor/256x256/apps
)
endif ()
endif ()
if (USE_PRECOMPILED_HEADERS) if (USE_PRECOMPILED_HEADERS)
target_precompile_headers(${PROJECT_NAME} PRIVATE PrecompiledHeader.hpp) target_precompile_headers(${LIBRARY_PROJECT} PRIVATE PrecompiledHeader.hpp)
endif () endif ()
# Enable autogeneration of Qts MOC/RCC/UIC # Enable autogeneration of Qts MOC/RCC/UIC
set_target_properties(${PROJECT_NAME} set_target_properties(${LIBRARY_PROJECT}
PROPERTIES PROPERTIES
AUTOMOC ON AUTOMOC ON
AUTORCC ON AUTORCC ON
AUTOUIC ON AUTOUIC ON
) )
target_compile_definitions(${PROJECT_NAME} PRIVATE target_compile_definitions(${LIBRARY_PROJECT} PUBLIC
CHATTERINO CHATTERINO
UNICODE UNICODE
AB_CUSTOM_THEME AB_CUSTOM_THEME
AB_CUSTOM_SETTINGS AB_CUSTOM_SETTINGS
IRC_STATIC IRC_STATIC
IRC_NAMESPACE=Communi IRC_NAMESPACE=Communi
)
if (USE_SYSTEM_QT5KEYCHAIN)
target_compile_definitions(${PROJECT_NAME} PRIVATE
CMAKE_BUILD
)
endif ()
target_compile_definitions(${PROJECT_NAME} PRIVATE
CHATTERINO_GIT_HASH=\"${GIT_HASH}\" CHATTERINO_GIT_HASH=\"${GIT_HASH}\"
CHATTERINO_GIT_RELEASE=\"${GIT_RELEASE}\" CHATTERINO_GIT_RELEASE=\"${GIT_RELEASE}\"
CHATTERINO_GIT_COMMIT=\"${GIT_COMMIT}\" CHATTERINO_GIT_COMMIT=\"${GIT_COMMIT}\"
) )
if (USE_SYSTEM_QT5KEYCHAIN)
target_compile_definitions(${LIBRARY_PROJECT} PUBLIC
CMAKE_BUILD
)
endif ()
if (WIN32) if (WIN32)
target_compile_definitions(${PROJECT_NAME} PRIVATE target_compile_definitions(${LIBRARY_PROJECT} PUBLIC
USEWINSDK USEWINSDK
) )
set_target_properties(${PROJECT_NAME} PROPERTIES WIN32_EXECUTABLE TRUE) if (BUILD_APP)
set_target_properties(${EXECUTABLE_PROJECT} PROPERTIES WIN32_EXECUTABLE TRUE)
endif ()
endif () endif ()
if (MSVC) if (MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE /EHsc) target_compile_options(${LIBRARY_PROJECT} PUBLIC /EHsc)
endif () endif ()
if (APPLE) if (APPLE AND BUILD_APP)
set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE TRUE) set_target_properties(${EXECUTABLE_PROJECT} PROPERTIES MACOSX_BUNDLE TRUE)
set_target_properties(${PROJECT_NAME} set_target_properties(${EXECUTABLE_PROJECT}
PROPERTIES PROPERTIES
MACOSX_BUNDLE_BUNDLE_NAME "Chatterino" MACOSX_BUNDLE_BUNDLE_NAME "Chatterino"
MACOSX_BUNDLE_GUI_IDENTIFIER "com.chatterino" MACOSX_BUNDLE_GUI_IDENTIFIER "com.chatterino"
@@ -529,110 +606,45 @@ if (APPLE)
) )
endif () endif ()
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(${LIBRARY_PROJECT} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(${PROJECT_NAME}
PRIVATE
Qt5::Core
Qt5::Widgets
Qt5::Gui
Qt5::Network
Qt5::Multimedia
Qt5::Svg
Qt5::Concurrent
)
if (WinToast_FOUND) if (WinToast_FOUND)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${LIBRARY_PROJECT}
PRIVATE PUBLIC
WinToast) WinToast)
endif () endif ()
if (USE_CONAN AND TARGET CONAN_PKG::boost) if (USE_CONAN AND TARGET CONAN_PKG::boost)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${LIBRARY_PROJECT}
PRIVATE PUBLIC
CONAN_PKG::boost CONAN_PKG::boost
) )
else () else ()
target_link_libraries(${PROJECT_NAME} target_link_libraries(${LIBRARY_PROJECT}
PRIVATE PUBLIC
Boost::boost Boost::boost
) )
endif () endif ()
if (USE_CONAN AND TARGET CONAN_PKG::openssl) if (USE_CONAN AND TARGET CONAN_PKG::openssl)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${LIBRARY_PROJECT}
PRIVATE PUBLIC
CONAN_PKG::openssl CONAN_PKG::openssl
) )
else () else ()
target_link_libraries(${PROJECT_NAME} target_link_libraries(${LIBRARY_PROJECT}
PRIVATE PUBLIC
OpenSSL::SSL OpenSSL::SSL
OpenSSL::Crypto OpenSSL::Crypto
) )
endif () endif ()
target_include_directories(${PROJECT_NAME} PRIVATE ${RapidJSON_INCLUDE_DIRS}) target_include_directories(${LIBRARY_PROJECT} PUBLIC ${RapidJSON_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME}
PRIVATE
LibCommuni::LibCommuni
qt5keychain
Pajlada::Serialize
Pajlada::Settings
Pajlada::Signals
websocketpp::websocketpp
Threads::Threads
RapidJSON::RapidJSON
LRUCache
)
if (LIBRT) if (LIBRT)
target_link_libraries(${PROJECT_NAME} target_link_libraries(${LIBRARY_PROJECT}
PRIVATE PUBLIC
${LIBRT} ${LIBRT}
) )
endif () endif ()
set_target_properties(${PROJECT_NAME}
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}/bin"
RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}/bin"
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}/bin"
)
if (MSVC)
get_target_property(Qt5_Core_Location Qt5::Core LOCATION)
get_filename_component(QT_BIN_DIR ${Qt5_Core_Location} DIRECTORY)
set(WINDEPLOYQT_COMMAND "${QT_BIN_DIR}/windeployqt.exe" $<TARGET_FILE:${PROJECT_NAME}> --release --no-compiler-runtime --no-translations --no-opengl-sw)
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION .
)
install(CODE "execute_process(COMMAND ${WINDEPLOYQT_COMMAND} --dir \${CMAKE_INSTALL_PREFIX})")
elseif (APPLE)
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
BUNDLE DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static
)
else ()
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static
)
install(FILES ${CMAKE_SOURCE_DIR}/resources/com.chatterino.chatterino.desktop
DESTINATION share/applications
)
install(FILES ${CMAKE_SOURCE_DIR}/resources/icon.png
RENAME com.chatterino.chatterino.png
DESTINATION share/icons/hicolor/256x256/apps
)
endif ()
-1
View File
@@ -12,7 +12,6 @@
#include "singletons/Resources.hpp" #include "singletons/Resources.hpp"
#include "singletons/Theme.hpp" #include "singletons/Theme.hpp"
#include "util/FormatTime.hpp" #include "util/FormatTime.hpp"
#include "util/IrcHelpers.hpp"
#include <QDateTime> #include <QDateTime>
#include <QImageReader> #include <QImageReader>
+1
View File
@@ -10,6 +10,7 @@
#include <rapidjson/document.h> #include <rapidjson/document.h>
#include <QColor> #include <QColor>
#include <QElapsedTimer>
#include <QString> #include <QString>
#include <functional> #include <functional>
-1
View File
@@ -11,7 +11,6 @@
#include "providers/twitch/TwitchEmotes.hpp" #include "providers/twitch/TwitchEmotes.hpp"
#include "providers/twitch/api/Helix.hpp" #include "providers/twitch/api/Helix.hpp"
#include <IrcConnection>
#include <QColor> #include <QColor>
#include <QElapsedTimer> #include <QElapsedTimer>
#include <QRegularExpression> #include <QRegularExpression>
+3 -74
View File
@@ -1,41 +1,5 @@
project(chatterino-test) project(chatterino-test)
set(main_dir ${CMAKE_SOURCE_DIR}/src)
include_directories(${main_dir})
set(chatterino_SOURCES
${CMAKE_SOURCE_DIR}/src/BaseSettings.cpp
${CMAKE_SOURCE_DIR}/src/common/ChatterinoSetting.cpp
${CMAKE_SOURCE_DIR}/src/common/Modes.cpp
${CMAKE_SOURCE_DIR}/src/common/NetworkCommon.cpp
${CMAKE_SOURCE_DIR}/src/common/NetworkManager.cpp
${CMAKE_SOURCE_DIR}/src/common/NetworkPrivate.cpp
${CMAKE_SOURCE_DIR}/src/common/NetworkRequest.cpp
${CMAKE_SOURCE_DIR}/src/common/NetworkResult.cpp
${CMAKE_SOURCE_DIR}/src/common/QLogging.cpp
${CMAKE_SOURCE_DIR}/src/common/ChatterSet.cpp
${CMAKE_SOURCE_DIR}/src/debug/Benchmark.cpp
${CMAKE_SOURCE_DIR}/src/controllers/highlights/HighlightPhrase.cpp
${CMAKE_SOURCE_DIR}/src/messages/Emote.cpp
${CMAKE_SOURCE_DIR}/src/messages/Image.cpp
${CMAKE_SOURCE_DIR}/src/messages/ImageSet.cpp
${CMAKE_SOURCE_DIR}/src/providers/emoji/Emojis.cpp
${CMAKE_SOURCE_DIR}/src/singletons/Paths.cpp
${CMAKE_SOURCE_DIR}/src/util/DebugCount.cpp
${CMAKE_SOURCE_DIR}/src/util/RapidjsonHelpers.cpp
${CMAKE_SOURCE_DIR}/resources/resources.qrc
${CMAKE_SOURCE_DIR}/resources/resources_autogenerated.qrc
)
set(test_SOURCES set(test_SOURCES
${CMAKE_CURRENT_LIST_DIR}/src/main.cpp ${CMAKE_CURRENT_LIST_DIR}/src/main.cpp
${CMAKE_CURRENT_LIST_DIR}/src/AccessGuard.cpp ${CMAKE_CURRENT_LIST_DIR}/src/AccessGuard.cpp
@@ -46,52 +10,17 @@ set(test_SOURCES
${CMAKE_CURRENT_LIST_DIR}/src/Emojis.cpp ${CMAKE_CURRENT_LIST_DIR}/src/Emojis.cpp
) )
add_executable(${PROJECT_NAME} add_executable(${PROJECT_NAME} ${test_SOURCES})
${chatterino_SOURCES}
${test_SOURCES}
)
add_sanitizers(${PROJECT_NAME}) add_sanitizers(${PROJECT_NAME})
# Enable autogeneration of Qts MOC/RCC/UIC target_link_libraries(${PROJECT_NAME} PRIVATE chatterino-lib)
set_target_properties(${PROJECT_NAME}
PROPERTIES
AUTOMOC ON
AUTORCC ON
AUTOUIC ON
)
target_link_libraries(${PROJECT_NAME} PRIVATE target_link_libraries(${PROJECT_NAME} PRIVATE gtest)
Qt5::Core
Qt5::Widgets
Qt5::Network
Qt5::Concurrent
gtest gtest_main
Pajlada::Serialize
Pajlada::Settings
Pajlada::Signals
Threads::Threads
LRUCache
)
target_compile_definitions(${PROJECT_NAME} PRIVATE target_compile_definitions(${PROJECT_NAME} PRIVATE
CHATTERINO
CHATTERINO_TEST CHATTERINO_TEST
UNICODE
AB_CUSTOM_THEME
AB_CUSTOM_SETTINGS
IRC_STATIC
IRC_NAMESPACE=Communi
CHATTERINO_GIT_HASH=\"${GIT_HASH}\"
CHATTERINO_GIT_RELEASE=\"${GIT_RELEASE}\"
CHATTERINO_GIT_COMMIT=\"${GIT_COMMIT}\"
) )
if (WIN32)
target_compile_definitions(${PROJECT_NAME} PRIVATE
USEWINSDK
)
endif ()
set_target_properties(${PROJECT_NAME} set_target_properties(${PROJECT_NAME}
PROPERTIES PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"