on xenial help sign in
Make gdb and xvfb-run optional
fea30d0Michał Sawicz
cmake/modules/QmlTest.cmake+36−24
@@ -15,22 +15,28 @@ set(QMLTEST_OPTIONS ADD_TEST CACHE INTERNAL "")
15set(QMLTEST_SINGLE ITERATIONS ARG_PREFIX CACHE INTERNAL "")
15set(QMLTEST_SINGLE ITERATIONS ARG_PREFIX CACHE INTERNAL "")
16set(QMLTEST_MULTI ARGS ENVIRONMENT DEPENDS IMPORT_PATHS TARGETS CACHE INTERNAL "")
16set(QMLTEST_MULTI ARGS ENVIRONMENT DEPENDS IMPORT_PATHS TARGETS CACHE INTERNAL "")
17
17
18−# import_executables(name1 [name2 [...]])
18+# import_executables(name1 [name2 [...]]
19+# [OPTIONAL] # continue when not found
20+# )
19#
21#
20# This will find the named executables and import them
22# This will find the named executables and import them
21# to an imported target of the same name.
23# to an imported target of the same name.
22
24
23function(import_executables)
25function(import_executables)
26+ cmake_parse_arguments(QMLTEST "OPTIONAL" "" "" ${ARGN})
27+
24− foreach(NAME ${ARGN})
28+ foreach(NAME ${QMLTEST_UNPARSED_ARGUMENTS})
25 if(NOT TARGET ${NAME})
29 if(NOT TARGET ${NAME})
30+ add_executable(${NAME} IMPORTED GLOBAL)
26 find_program(${NAME}_exe ${NAME})
31 find_program(${NAME}_exe ${NAME})
27
32
28− if(NOT ${NAME}_exe)
33+ if(NOT QMLTEST_OPTIONAL AND NOT ${NAME}_exe)
29 message(FATAL_ERROR "Could not locate ${NAME}.")
34 message(FATAL_ERROR "Could not locate ${NAME}.")
35+ elseif(NOT ${NAME}_exe)
36+ message(STATUS "Could not locate ${NAME}, skipping.")
37+ else()
38+ set_target_properties(${NAME} PROPERTIES IMPORTED_LOCATION ${${NAME}_exe})
30 endif()
39 endif()
31−
32− add_executable(${NAME} IMPORTED)
33− set_target_properties(${NAME} PROPERTIES IMPORTED_LOCATION ${${NAME}_exe})
34 endif()
40 endif()
35 endforeach()
41 endforeach()
36endfunction()
42endfunction()
@@ -117,7 +123,7 @@ endfunction()
117# - gdbtest${component_name} - Runs the test under gdb
123# - gdbtest${component_name} - Runs the test under gdb
118
124
119function(add_executable_test COMPONENT_NAME TARGET)
125function(add_executable_test COMPONENT_NAME TARGET)
120− import_executables(gdb xvfb-run)
126+ import_executables(gdb xvfb-run OPTIONAL)
121
127
122 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
128 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
123 mangle_arguments()
129 mangle_arguments()
@@ -146,18 +152,22 @@ function(add_executable_test COMPONENT_NAME TARGET)
146 ${targets}
152 ${targets}
147 )
153 )
148
154
155+ if(TARGET xvfb-run)
149− add_qmltest_target(xvfbtest${COMPONENT_NAME} ${TARGET}
156+ add_qmltest_target(xvfbtest${COMPONENT_NAME} ${TARGET}
150− COMMAND $<TARGET_FILE:xvfb-run> --server-args "-screen 0 1024x768x24" --auto-servernum ${qmltest_command}
157+ COMMAND $<TARGET_FILE:xvfb-run> --server-args "-screen 0 1024x768x24" --auto-servernum ${qmltest_command}
151− ${depends}
158+ ${depends}
152− ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT} LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1
159+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT} LD_PRELOAD=/usr/lib/${ARCH_TRIPLET}/mesa/libGL.so.1
153− TARGETS ${xvfb_targets}
160+ TARGETS ${xvfb_targets}
154− )
161+ )
162+ endif()
155
163
164+ if(TARGET gdb)
156− add_qmltest_target(gdbtest${COMPONENT_NAME} ${TARGET}
165+ add_qmltest_target(gdbtest${COMPONENT_NAME} ${TARGET}
157− COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltest_command}
166+ COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltest_command}
158− ${depends}
167+ ${depends}
159− ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
168+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
160− )
169+ )
170+ endif()
161endfunction()
171endfunction()
162
172
163
173
@@ -173,7 +183,7 @@ endfunction()
173# - gdbtry${component_name} - Runs the test under gdb
183# - gdbtry${component_name} - Runs the test under gdb
174
184
175function(add_manual_test COMPONENT_NAME TARGET)
185function(add_manual_test COMPONENT_NAME TARGET)
176− import_executables(gdb)
186+ import_executables(gdb OPTIONAL)
177
187
178 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
188 cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
179 mangle_arguments()
189 mangle_arguments()
@@ -192,11 +202,13 @@ function(add_manual_test COMPONENT_NAME TARGET)
192 ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
202 ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
193 )
203 )
194
204
205+ if(TARGET gdb)
195− add_qmltest_target(gdbtry${COMPONENT_NAME} ${TARGET}
206+ add_qmltest_target(gdbtry${COMPONENT_NAME} ${TARGET}
196− COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltry_command}
207+ COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltry_command}
197− ${depends}
208+ ${depends}
198− ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
209+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
199− )
210+ )
211+ endif()
200endfunction()
212endfunction()
201
213
202
214