@@ -65,6 +65,7 @@ macro(add_qml_test SUBPATH COMPONENT_NAME)
6565 cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
6666
6767 set(qmltest_TARGET test${COMPONENT_NAME})
68+ set(qmltest_xvfb_TARGET xvfbtest${COMPONENT_NAME})
6869 set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
6970
7071 set(qmltestrunner_imports "")
@@ -82,24 +83,69 @@ macro(add_qml_test SUBPATH COMPONENT_NAME)
8283
8384 string(TOLOWER "${CMAKE_GENERATOR}" cmake_generator_lower)
8485 if(cmake_generator_lower STREQUAL "unix makefiles")
85− set(qmltest_command
86− env ${qmltest_ENVIRONMENT}
87− ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
88− ${qmltestrunner_imports}
89− -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
90− -o -,txt
91− $(FUNCTION)
92− )
86+ set(function_ARGS $(FUNCTION))
9387 else()
94− set(qmltest_command
95− env ${qmltest_ENVIRONMENT}
96− ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
97− ${qmltestrunner_imports}
98− -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
99− -o -,txt
100− )
88+ set(function_ARGS "")
10189 endif()
10290
91+ set(qmltest_command
92+ env ${qmltest_ENVIRONMENT}
93+ ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
94+ ${qmltestrunner_imports}
95+ -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
96+ -o -,txt
97+ ${function_ARGS}
98+ )
99+ find_program( HAVE_GCC gcc )
100+ if (NOT ${HAVE_GCC} STREQUAL "")
101+ exec_program( gcc ARGS "-dumpmachine" OUTPUT_VARIABLE ARCH_TRIPLET )
102+ set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
103+ endif()
104+ set(qmltest_xvfb_command
105+ env ${qmltest_ENVIRONMENT} ${LD_PRELOAD_PATH}
106+ xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
107+ ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
108+ ${qmltestrunner_imports}
109+ -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
110+ -o -,txt
111+ ${function_ARGS}
112+ )
113+
114+ add_qmltest_target(${qmltest_TARGET} "${qmltest_command}" TRUE ${qmltest_NO_ADD_TEST})
115+ add_qmltest_target(${qmltest_xvfb_TARGET} "${qmltest_xvfb_command}" ${qmltest_NO_TARGETS} TRUE)
116+ add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})
117+endmacro(add_qml_test)
118+
119+macro(add_binary_qml_test CLASS_NAME LD_PATH DEPS)
120+ set(testCommand
121+ LD_LIBRARY_PATH=${LD_PATH}
122+ ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
123+ -o ${CMAKE_BINARY_DIR}/${CLASSNAME}Test.xml,xunitxml
124+ -o -,txt)
125+
126+ add_qmltest_target(test${CLASS_NAME} "${testCommand}" FALSE TRUE)
127+ add_dependencies(test${CLASS_NAME} ${CLASS_NAME}TestExec ${DEPS})
128+
129+ find_program( HAVE_GCC gcc )
130+ if (NOT ${HAVE_GCC} STREQUAL "")
131+ exec_program( gcc ARGS "-dumpmachine" OUTPUT_VARIABLE ARCH_TRIPLET )
132+ set(LD_PRELOAD_PATH "LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1")
133+ endif()
134+ set(xvfbtestCommand
135+ ${LD_PRELOAD_PATH}
136+ LD_LIBRARY_PATH=${LD_PATH}
137+ xvfb-run --server-args "-screen 0 1024x768x24" --auto-servernum
138+ ${CMAKE_CURRENT_BINARY_DIR}/${CLASS_NAME}TestExec
139+ -o ${CMAKE_BINARY_DIR}/${CLASS_NAME}Test.xml,xunitxml
140+ -o -,txt)
141+
142+ add_qmltest_target(xvfbtest${CLASS_NAME} "${xvfbtestCommand}" FALSE TRUE)
143+ add_dependencies(qmluitests xvfbtest${CLASS_NAME})
144+
145+ add_manual_qml_test(. ${CLASS_NAME} IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
146+endmacro(add_binary_qml_test)
147+
148+macro(add_qmltest_target qmltest_TARGET qmltest_command qmltest_NO_TARGETS qmltest_NO_ADD_TEST)
103149 add_custom_target(${qmltest_TARGET} ${qmltest_command})
104150
105151 if(NOT "${qmltest_PROPERTIES}" STREQUAL "")
@@ -130,5 +176,4 @@ macro(add_qml_test SUBPATH COMPONENT_NAME)
130176 endif()
131177 endif("${qmltest_NO_TARGETS}" STREQUAL "FALSE")
132178
133− add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})
134−endmacro(add_qml_test)
179+endmacro(add_qmltest_target)