80 lines
2.5 KiB
CMake
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)
|