AusweisApp2/test/CMakeLists.txt

80 lines
2.5 KiB
CMake

qt5_add_resources(QRC_FIXTURE "fixture/fixture.qrc")
ADD_OBJECT_LIBRARY(QRC_FIXTURE_OBJ ${QRC_FIXTURE} Qt5::Core)
FUNCTION(EXTRACT_TESTNAME result filepath)
STRING(REPLACE ".cpp" "" testname ${filepath})
STRING(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" testname ${testname})
STRING(REPLACE "/" "_" testname ${testname})
STRING(REPLACE "_test_" "_" testname ${testname})
SET(${result} "Test_${testname}" PARENT_SCOPE)
ENDFUNCTION()
FUNCTION(GET_TEST_CMDLINE cmdline testname)
cmake_parse_arguments(_PARAM "" "" "SELECTORS" ${ARGN})
IF(NOT WIN32
AND (
"${testname}" MATCHES "export"
OR "${testname}" MATCHES "widget"
OR "${testname}" MATCHES "\\.qml"))
SET(PLATFORM -platform offscreen)
ENDIF()
FOREACH(SELECTOR ${_PARAM_SELECTORS})
SET(testname "${testname}_${SELECTOR}")
ENDFOREACH()
SET(${cmdline} ${PLATFORM} -v2 -o ${CMAKE_CURRENT_BINARY_DIR}/results.${testname}.log.xml,xml -o -,txt PARENT_SCOPE)
ENDFUNCTION()
FUNCTION(ADD_QML_TEST _sourcefile)
cmake_parse_arguments(_PARAM "" "" "SELECTORS" ${ARGN})
EXTRACT_TESTNAME(TESTNAME ${_sourcefile})
GET_TEST_CMDLINE(CMD_PARAMS ${TESTNAME} SELECTORS ${_PARAM_SELECTORS})
SET(CMD $<TARGET_FILE:QmlTestRunner> ${CMD_PARAMS} -input ${sourcefile} -import "qrc:///qml/")
SET(ENV_FAIL_ON_WARNING "QT_FATAL_WARNINGS=true")
# Emasculate ASAN since QtQuick causes problems
SET(ENV_EMASCULATE_ASAN "ASAN_OPTIONS=detect_leaks=0,new_delete_type_mismatch=0")
IF(_PARAM_SELECTORS)
FOREACH(_PARAM_SELECTOR_LIST_ENTRY ${_PARAM_SELECTORS})
SET(TESTNAME ${TESTNAME}_${_PARAM_SELECTOR_LIST_ENTRY})
SET(CMD ${CMD} -file-selector ${_PARAM_SELECTOR_LIST_ENTRY})
ENDFOREACH()
ENDIF()
ADD_TEST(NAME ${TESTNAME} COMMAND ${CMD})
SET_TESTS_PROPERTIES(${TESTNAME} PROPERTIES LABELS "qml" ENVIRONMENT "${ENV_FAIL_ON_WARNING}" ENVIRONMENT "${ENV_EMASCULATE_ASAN}")
ENDFUNCTION()
FUNCTION(ADD_QML_TEST_FILES)
cmake_parse_arguments(_PARAM "" "" "SELECTORS" ${ARGN})
IF(NOT BSD AND (NOT Qt5Core_VERSION VERSION_LESS 5.11.0 OR QT_VENDOR STREQUAL "Governikus"))
SET(HAS_FILE_SELECTOR_PATCH TRUE)
ELSE()
SET(HAS_FILE_SELECTOR_PATCH FALSE)
ENDIF()
FILE(GLOB_RECURSE TEST_SUBFILES "${CMAKE_CURRENT_SOURCE_DIR}/test_*.qml")
FOREACH(sourcefile ${TEST_SUBFILES})
IF(NOT _PARAM_SELECTORS)
ADD_QML_TEST(${sourcefile})
ELSEIF(HAS_FILE_SELECTOR_PATCH)
ADD_QML_TEST(${sourcefile} SELECTORS ${_PARAM_SELECTORS})
ENDIF()
ENDFOREACH()
ENDFUNCTION()
ADD_SUBDIRECTORY(helper)
IF(TARGET Qt5::Qml)
ADD_SUBDIRECTORY(qml)
ENDIF()
ADD_SUBDIRECTORY(qt)