2020-10-26 16:50:07 +01:00
|
|
|
find_package(Qt5 CONFIG REQUIRED QuickTest Test)
|
|
|
|
|
2021-04-16 17:18:09 -04:00
|
|
|
if(MSVC)
|
|
|
|
# Download and unpack googletest at configure time
|
|
|
|
configure_file(googletest/CMakeLists.txt.in googletest-download/CMakeLists.txt)
|
|
|
|
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
|
|
|
|
RESULT_VARIABLE result
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download)
|
|
|
|
if(result)
|
|
|
|
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
|
|
|
|
endif()
|
|
|
|
execute_process(COMMAND ${CMAKE_COMMAND} --build .
|
|
|
|
RESULT_VARIABLE result
|
|
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download)
|
|
|
|
if(result)
|
|
|
|
message(FATAL_ERROR "Build step for googletest failed: ${result}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Prevent overriding the parent project's compiler/linker
|
|
|
|
# settings on Windows
|
|
|
|
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
|
|
|
|
|
|
|
|
# Add googletest directly to our build. This defines
|
|
|
|
# the gtest and gtest_main targets.
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
|
|
|
|
EXCLUDE_FROM_ALL)
|
|
|
|
|
|
|
|
option(gtest_disable_pthreads "Disable uses of pthreads in gtest." ON)
|
|
|
|
else()
|
|
|
|
find_package(GTest REQUIRED)
|
|
|
|
endif()
|
2020-10-26 16:50:07 +01:00
|
|
|
|
2021-04-16 17:18:09 -04:00
|
|
|
enable_testing(true)
|
|
|
|
set(QML_TEST_LIBS ${QML_LIBS} Qt5::QuickTest Qt5::Test)
|
2020-10-26 16:50:07 +01:00
|
|
|
set(TESTS_INCLUDES
|
|
|
|
${CMAKE_SOURCE_DIR}/src
|
2020-11-06 18:04:10 +01:00
|
|
|
${CMAKE_SOURCE_DIR}/tests/qml
|
|
|
|
${CMAKE_SOURCE_DIR}/tests/unittests)
|
2020-10-26 16:50:07 +01:00
|
|
|
|
|
|
|
# Common jami files
|
|
|
|
add_library(test_common_obj OBJECT ${COMMON_SOURCES} ${COMMON_HEADERS})
|
2021-04-16 17:18:09 -04:00
|
|
|
target_link_libraries(test_common_obj ${QML_TEST_LIBS})
|
2020-10-26 16:50:07 +01:00
|
|
|
target_compile_definitions(test_common_obj PRIVATE ENABLE_TESTS="ON")
|
|
|
|
|
2021-04-16 17:18:09 -04:00
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/src)
|
|
|
|
|
2020-10-26 16:50:07 +01:00
|
|
|
# QML tests
|
|
|
|
add_executable(qml_tests
|
2021-04-16 17:18:09 -04:00
|
|
|
${CMAKE_SOURCE_DIR}/tests/qml/main.cpp
|
|
|
|
${QML_RESOURCES}
|
|
|
|
${QML_RESOURCES_QML}
|
|
|
|
$<TARGET_OBJECTS:test_common_obj>)
|
2020-10-26 16:50:07 +01:00
|
|
|
|
|
|
|
target_link_libraries(qml_tests
|
2021-04-16 17:18:09 -04:00
|
|
|
${QML_TEST_LIBS}
|
|
|
|
${test_common_objects})
|
2020-10-26 16:50:07 +01:00
|
|
|
|
|
|
|
target_compile_definitions(qml_tests PRIVATE ENABLE_TESTS="ON")
|
|
|
|
|
|
|
|
# Unittests
|
2021-04-16 17:18:09 -04:00
|
|
|
set(UNIT_TESTS_HEADER_FILES ${CMAKE_SOURCE_DIR}/tests/unittests/globaltestenvironment.h)
|
|
|
|
|
|
|
|
set(UNIT_TESTS_SOURCE_FILES
|
|
|
|
${CMAKE_SOURCE_DIR}/tests/unittests/main_unittest.cpp
|
|
|
|
${CMAKE_SOURCE_DIR}/tests/unittests/accountadapter_unittest.cpp)
|
|
|
|
|
2020-10-26 16:50:07 +01:00
|
|
|
add_executable(unittests
|
2021-04-16 17:18:09 -04:00
|
|
|
${UNIT_TESTS_HEADER_FILES}
|
|
|
|
${UNIT_TESTS_SOURCE_FILES}
|
|
|
|
${QML_RESOURCES}
|
|
|
|
${QML_RESOURCES_QML}
|
|
|
|
$<TARGET_OBJECTS:test_common_obj>)
|
2020-10-26 16:50:07 +01:00
|
|
|
|
|
|
|
target_link_libraries(unittests
|
2021-04-16 17:18:09 -04:00
|
|
|
${QML_TEST_LIBS}
|
|
|
|
${test_common_objects}
|
|
|
|
gtest)
|
2020-10-26 16:50:07 +01:00
|
|
|
|
|
|
|
target_compile_definitions(unittests PRIVATE ENABLE_TESTS="ON")
|
|
|
|
|
2021-04-16 17:18:09 -04:00
|
|
|
if(MSVC)
|
|
|
|
include_directories(${LRC_SRC_PATH}
|
|
|
|
${DRING_SRC_PATH})
|
|
|
|
|
|
|
|
# QML tests
|
|
|
|
target_link_libraries(qml_tests
|
|
|
|
${QTWRAPPER_LIB}
|
|
|
|
${RINGCLIENT_STATIC_LIB}
|
|
|
|
${QRENCODE_LIB}
|
|
|
|
${GNUTLS_LIB}
|
|
|
|
${DRING_LIB}
|
|
|
|
${WINDOWS_SYS_LIBS})
|
|
|
|
|
|
|
|
target_include_directories(qml_tests PUBLIC
|
|
|
|
${TESTS_INCLUDES}
|
|
|
|
${LRC_SRC_PATH}
|
|
|
|
${DRING_SRC_PATH})
|
|
|
|
|
|
|
|
# output test executable files into test folder
|
|
|
|
set_target_properties(qml_tests
|
|
|
|
PROPERTIES
|
|
|
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR}/x64/test"
|
|
|
|
)
|
|
|
|
|
|
|
|
# POST_BUILD steps
|
|
|
|
|
|
|
|
# check time stamp
|
|
|
|
set(TIME_STAMP_FILE ".deploy.stamp")
|
|
|
|
add_custom_command(TARGET qml_tests POST_BUILD
|
|
|
|
WORKING_DIRECTORY "$<TARGET_FILE_DIR:qml_tests>"
|
|
|
|
COMMAND ${CMAKE_COMMAND} -DTIME_STAMP_FILE=${TIME_STAMP_FILE}
|
|
|
|
-P ${PROJECT_SOURCE_DIR}/cmake/time_stamp_check.cmake)
|
|
|
|
|
|
|
|
# daemon deploy
|
|
|
|
add_custom_command(TARGET qml_tests POST_BUILD
|
|
|
|
WORKING_DIRECTORY "$<TARGET_FILE_DIR:qml_tests>"
|
|
|
|
COMMAND ${CMAKE_COMMAND} -DTIME_STAMP_FILE=${TIME_STAMP_FILE}
|
|
|
|
-DCOPY_TO_PATH=$<TARGET_FILE_DIR:qml_tests>
|
|
|
|
-DDRING_PATH=${DRING}
|
|
|
|
-DPROJECT_ROOT_DIR=${PROJECT_SOURCE_DIR}
|
|
|
|
-P ${PROJECT_SOURCE_DIR}/cmake/windows_daemon_deploy.cmake)
|
|
|
|
|
|
|
|
# Qt deploy for test qmls
|
|
|
|
add_custom_command(TARGET qml_tests POST_BUILD
|
|
|
|
WORKING_DIRECTORY "$<TARGET_FILE_DIR:qml_tests>"
|
|
|
|
COMMAND ${CMAKE_COMMAND} -DTIME_STAMP_FILE=${TIME_STAMP_FILE}
|
|
|
|
-DWIN_DEPLOY_QT_PATH=${CMAKE_PREFIX_PATH}/bin
|
|
|
|
-DQML_SRC_DIR=${CMAKE_SOURCE_DIR}/tests/qml
|
|
|
|
-DEXE_NAME=$<TARGET_FILE:qml_tests>
|
|
|
|
-DOFF_SCREEN_PLUGIN_REQUESTED=TRUE
|
|
|
|
-DCOPY_TO_PATH=$<TARGET_FILE_DIR:qml_tests>/platforms
|
|
|
|
-DOFF_SCREEN_PLUGIN_PATH=${CMAKE_PREFIX_PATH}/plugins/platforms
|
|
|
|
-P ${PROJECT_SOURCE_DIR}/cmake/windows_qt_deploy.cmake)
|
|
|
|
|
|
|
|
# Qt deploy for src qmls
|
|
|
|
add_custom_command(TARGET qml_tests POST_BUILD
|
|
|
|
WORKING_DIRECTORY "$<TARGET_FILE_DIR:qml_tests>"
|
|
|
|
COMMAND ${CMAKE_COMMAND} -DTIME_STAMP_FILE=${TIME_STAMP_FILE}
|
|
|
|
-DWIN_DEPLOY_QT_PATH=${CMAKE_PREFIX_PATH}/bin
|
|
|
|
-DQML_SRC_DIR=${SRC_DIR}
|
|
|
|
-DEXE_NAME=$<TARGET_FILE:qml_tests>
|
|
|
|
-P ${PROJECT_SOURCE_DIR}/cmake/windows_qt_deploy.cmake)
|
|
|
|
|
|
|
|
# create time stamp
|
|
|
|
add_custom_command(TARGET qml_tests POST_BUILD
|
|
|
|
WORKING_DIRECTORY "$<TARGET_FILE_DIR:qml_tests>"
|
|
|
|
COMMAND ${CMAKE_COMMAND} -DTIME_STAMP_FILE=${TIME_STAMP_FILE}
|
|
|
|
-P ${PROJECT_SOURCE_DIR}/cmake/time_stamp_create.cmake)
|
|
|
|
|
|
|
|
# Unittests
|
|
|
|
target_link_libraries(unittests
|
|
|
|
${QTWRAPPER_LIB}
|
|
|
|
${RINGCLIENT_STATIC_LIB}
|
|
|
|
${QRENCODE_LIB}
|
|
|
|
${GNUTLS_LIB}
|
|
|
|
${DRING_LIB}
|
|
|
|
${WINDOWS_SYS_LIBS})
|
|
|
|
|
|
|
|
target_include_directories(unittests PUBLIC
|
|
|
|
${TESTS_INCLUDES}
|
|
|
|
${LRC_SRC_PATH}
|
|
|
|
${DRING_SRC_PATH})
|
|
|
|
|
|
|
|
# output test executable files into test folder
|
|
|
|
set_target_properties(unittests
|
|
|
|
PROPERTIES
|
|
|
|
RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_SOURCE_DIR}/x64/test"
|
|
|
|
)
|
|
|
|
else()
|
|
|
|
include_directories(${LRC}/include/libringclient
|
|
|
|
${LRC}/include
|
|
|
|
${LIBNM_INCLUDE_DIRS}
|
|
|
|
${LIBNOTIFY_INCLUDE_DIRS}
|
|
|
|
${LIBGDKPIXBUF_INCLUDE_DIRS})
|
|
|
|
|
|
|
|
# QML tests
|
|
|
|
target_link_libraries(qml_tests
|
|
|
|
${ringclient}
|
|
|
|
${qrencode}
|
|
|
|
${X11}
|
|
|
|
${LIBNM_LIBRARIES}
|
|
|
|
${LIBNOTIFY_LIBRARIES}
|
|
|
|
${LIBGDKPIXBUF_LIBRARIES})
|
|
|
|
|
|
|
|
target_include_directories(qml_tests PUBLIC
|
|
|
|
${TESTS_INCLUDES}
|
|
|
|
${LRC}/include/libringclient
|
|
|
|
${LRC}/include)
|
|
|
|
|
|
|
|
add_test(NAME QmlTests COMMAND qml_tests -input ${PROJECT_SOURCE_DIR}/tests/qml/)
|
|
|
|
|
|
|
|
# Unittests
|
|
|
|
target_link_libraries(unittests
|
|
|
|
${ringclient}
|
|
|
|
${qrencode}
|
|
|
|
pthread
|
|
|
|
${X11}
|
|
|
|
${LIBNM_LIBRARIES}
|
|
|
|
${LIBNOTIFY_LIBRARIES}
|
|
|
|
${LIBGDKPIXBUF_LIBRARIES})
|
|
|
|
|
|
|
|
target_include_directories(unittests PUBLIC
|
|
|
|
${TESTS_INCLUDES}
|
|
|
|
${LRC}/include/libringclient
|
|
|
|
${LRC}/include)
|
|
|
|
|
|
|
|
add_test(NAME UnitTests COMMAND unittests)
|
|
|
|
endif()
|