on xenial help sign in
add "make xvfbtestSomething" target to run qml tests in xvfb
commit9a27cd373ecc86c21bc0e94ab7415d9ce4f2ecf7 authorMichael Zanetti <michael.zanetti@canonical.com> dateThu 3 Apr 2014, 10:38 (13 years ago) parent048bb8866635f7
7 files changed+70−41
build+1 cmake/modules/QmlTest.cmake+62−17 tests/CMakeLists.txt+2−2 tests/plugins/Ubuntu/Gestures/CMakeLists.txt+2−11 tests/qmltests/CMakeLists.txt−1 tests/qmltests/Components/CMakeLists.txt+2−10 tests/qmltests/Components/tst_LazyImage.qml+1
build+1
@@ -54,6 +54,7 @@ install_dependencies() {
5454 unity-scope-home \
5555 unity-lens-applications \
5656 unity-plugin-scopes \
57+ xvfb \
5758 || exit 5
5859}
5960
cmake/modules/QmlTest.cmake+62−17
@@ -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)
tests/CMakeLists.txt+2−2
@@ -1,7 +1,7 @@
1−# QML tests that do not require graphical capabitlies.
1+# QML tests that do not require graphical capabilities.
22add_custom_target(qmlunittests)
33
4−# QML tests that require graphical capabitlies.
4+# QML tests that require graphical capabilities.
55add_custom_target(qmluitests)
66
77add_custom_target(qmltests)
tests/plugins/Ubuntu/Gestures/CMakeLists.txt+2−11
@@ -15,20 +15,11 @@ add_custom_target(UbuntuGesturesTestQmlFiles ALL
1515add_definitions(-DUBUNTU_GESTURES_PLUGIN_DIR="${CMAKE_BINARY_DIR}/plugins")
1616
1717macro(add_gesture_ui_test CLASSNAME)
18− set(testCommand
19− LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures
20− ${CMAKE_CURRENT_BINARY_DIR}/${CLASSNAME}TestExec
21− -o ${CMAKE_BINARY_DIR}/${CLASSNAME}Test.xml,xunitxml
22− -o -,txt)
23−
24− add_custom_target(test${CLASSNAME} ${testCommand})
25− add_dependencies(qmluitests test${CLASSNAME})
26− add_dependencies(test${CLASSNAME} ${CLASSNAME}TestExec UbuntuGesturesTestQmlFiles)
27−
2818 add_executable(${CLASSNAME}TestExec tst_${CLASSNAME}.cpp GestureTest.cpp)
2919 qt5_use_modules(${CLASSNAME}TestExec Test Core Qml Gui Quick)
3020 target_link_libraries(${CLASSNAME}TestExec UbuntuGestureQml)
31− add_manual_qml_test(. ${CLASSNAME} IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
21+
22+ add_binary_qml_test(${CLASSNAME} ${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures UbuntuGesturesTestQmlFiles)
3223endmacro(add_gesture_ui_test)
3324
3425macro(add_gesture_test CLASSNAME)
tests/qmltests/CMakeLists.txt−1
@@ -21,7 +21,6 @@ set(qmltest_DEFAULT_PROPERTIES "")
2121
2222add_qml_test(. Shell IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks
2323 ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
24−add_manual_qml_test(Components DragHandle IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
2524add_qml_test(Components Carousel)
2625add_qml_test(Components DraggingArea)
2726add_qml_test(Components EdgeDemoOverlay)
tests/qmltests/Components/CMakeLists.txt+2−10
@@ -6,19 +6,11 @@ include_directories(
66 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
77 )
88
9−set(testCommand
10− LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures
11− ${CMAKE_CURRENT_BINARY_DIR}/DragHandleTestExec
12− -o ${CMAKE_BINARY_DIR}/DragHandleTest.xml,xunitxml
13− -o -,txt)
14−
15−add_custom_target(testDragHandle ${testCommand})
16−add_dependencies(qmluitests testDragHandle)
17−add_dependencies(testDragHandle DragHandleTestExec)
18−
199add_executable(DragHandleTestExec tst_DragHandle.cpp)
2010qt5_use_modules(DragHandleTestExec Test Core Qml Gui Quick)
2111target_link_libraries(DragHandleTestExec UbuntuGestureQml)
2212
13+add_binary_qml_test(DragHandle ${CMAKE_BINARY_DIR}/plugins/Ubuntu/Gestures "")
14+
2315add_definitions(-DUBUNTU_GESTURES_PLUGIN_DIR="${CMAKE_BINARY_DIR}/plugins")
2416add_definitions(-DTEST_DIR="${CMAKE_CURRENT_LIST_DIR}")
tests/qmltests/Components/tst_LazyImage.qml+1
@@ -152,6 +152,7 @@ Rectangle {
152152
153153 function test_lazyimage(data) {
154154 data.func();
155+ waitForRendering(baseRect);
155156
156157 if (data.transition) {
157158 // wait for the transition to complete