on xenial help sign in
Generate meta test scripts and use them for autopkgtests
commite5c908704739aded6473918c0d8f4aadd13e9086 authorMichael Terry <michael.terry@canonical.com> dateMon 25 Apr 2016, 12:05 (10 years ago) parent5d62050
5 files changed+63−41
cmake/modules/QmlTest.cmake+51−15 debian/control+2 debian/tests/control+2−3 debian/tests/qmluitests.sh+3−15 tests/CMakeLists.txt+5−8
cmake/modules/QmlTest.cmake+51−15
@@ -258,16 +258,36 @@ function(add_manual_test COMPONENT_NAME TARGET)
258258endfunction()
259259
260260
261−################### INTERNAL ####################
261+# add_meta_test(target)
262+#
263+# Adds a test target that will run one of our "meta" test targets, like
264+# xvfbuitests. This script will run the specified suite of tests on an
265+# installed system.
262266
263−function(add_test_target TARGET_NAME)
264− cmake_parse_arguments(TEST "" "" "COMMAND;ENVIRONMENT;DEPENDS" ${ARGN})
267+function(add_meta_test TARGET_NAME)
268+ cmake_parse_arguments(TEST "" "" "DEPENDS" ${ARGN})
265269
266− add_custom_target(${TARGET_NAME}
267− env ${TEST_ENVIRONMENT}
268− ${TEST_COMMAND}
269− DEPENDS ${TEST_DEPENDS}
270+ add_custom_target(${TARGET_NAME})
271+
272+ set(filename "${CMAKE_BINARY_DIR}/tests/scripts/${TARGET_NAME}.sh")
273+ file(WRITE "${filename}" "#!/bin/sh\n\nset -e\n\n")
274+
275+ add_meta_dependencies(${TARGET_NAME} DEPENDS ${TEST_DEPENDS})
276+ # else we will write the rest of the script as we add cmake targets
277+
278+ install(FILES "${filename}"
279+ PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE
280+ GROUP_EXECUTE GROUP_READ
281+ WORLD_EXECUTE WORLD_READ
282+ DESTINATION "${SHELL_PRIVATE_LIBDIR}/tests/scripts"
270283 )
284+endfunction()
285+
286+
287+################### INTERNAL ####################
288+
289+function(install_test_script TARGET_NAME)
290+ cmake_parse_arguments(TEST "" "" "COMMAND;ENVIRONMENT" ${ARGN})
271291
272292 # Now write the above test into a shell script that we can run on an
273293 # installed system.
@@ -279,10 +299,7 @@ function(add_test_target TARGET_NAME)
279299 set(script "${script}export UNITY_TESTING_LIBDIR=\"${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}\"\n")
280300 set(script "${script}\n")
281301 foreach(ONE_CMD ${TEST_COMMAND})
282− if (NOT ONE_CMD MATCHES "\\$\\(")
283− # skip variables that look like subcommands like $(FUNCTION)
284− set(script "${script}'${ONE_CMD}' ")
285− endif()
302+ set(script "${script}'${ONE_CMD}' ")
286303 endforeach()
287304 set(script "${script}$@")
288305
@@ -331,6 +348,20 @@ function(add_test_target TARGET_NAME)
331348 )
332349endfunction()
333350
351+function(add_meta_dependencies UPSTREAM_TARGET)
352+ cmake_parse_arguments(TEST "" "" "DEPENDS" ${ARGN})
353+
354+ foreach(depend ${TEST_DEPENDS})
355+ add_dependencies(${UPSTREAM_TARGET} ${depend})
356+
357+ # add target to the meta test script that we will install on system
358+ set(filename "${CMAKE_BINARY_DIR}/tests/scripts/${UPSTREAM_TARGET}.sh")
359+ if (EXISTS "${filename}")
360+ file(APPEND "${filename}" "${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}/tests/scripts/${depend}.sh\n")
361+ endif()
362+ endforeach()
363+endfunction()
364+
334365# add_qmltest_target(target_name target
335366# COMMAND test_exe [arg1 [...]] # execute this test with arguments
336367# [...] # see above for available arguments:
@@ -347,12 +378,17 @@ function(add_qmltest_target TARGET_NAME TARGET)
347378 set(function "$(FUNCTION)")
348379 endif()
349380
350− add_test_target(${TARGET_NAME}
351− ENVIRONMENT ${QMLTEST_ENVIRONMENT}
352− COMMAND ${QMLTEST_COMMAND} ${function}
381+ add_custom_target(${TARGET_NAME}
382+ env ${QMLTEST_ENVIRONMENT}
383+ ${QMLTEST_COMMAND} ${function}
353384 DEPENDS ${TARGET} ${QMLTEST_DEPENDS}
354385 )
355386
387+ install_test_script(${TARGET_NAME}
388+ ENVIRONMENT ${QMLTEST_ENVIRONMENT}
389+ COMMAND ${QMLTEST_COMMAND}
390+ )
391+
356392 if(QMLTEST_ADD_TEST)
357393 add_test(
358394 NAME ${TARGET_NAME}
@@ -370,7 +406,7 @@ function(add_qmltest_target TARGET_NAME TARGET)
370406 endif()
371407
372408 foreach(UPSTREAM_TARGET ${QMLTEST_TARGETS})
373− add_dependencies(${UPSTREAM_TARGET} ${TARGET_NAME})
409+ add_meta_dependencies(${UPSTREAM_TARGET} DEPENDS ${TARGET_NAME})
374410 endforeach()
375411endfunction()
376412
debian/control+2
@@ -177,6 +177,8 @@ Multi-Arch: same
177177Pre-Depends: ${misc:Pre-Depends},
178178Depends: dbus-test-runner,
179179 qtdeclarative5-dev-tools,
180+ unity8 (= ${source:Version}),
181+ xvfb,
180182 ${misc:Depends},
181183 ${shlibs:Depends},
182184Provides: unity-application-impl,
debian/tests/control+2−3
@@ -1,8 +1,7 @@
11Tests: qmluitests.sh
22Restrictions: allow-stderr
3−Depends: @,
4− @builddeps@,
5− xvfb,
3+Depends: dpkg-dev,
4+ unity8-tests,
65
76Tests: autopilot.sh
87Restrictions: allow-stderr,
debian/tests/qmluitests.sh+3−15
@@ -1,21 +1,9 @@
11#!/bin/sh
2+# -*- Mode: sh; indent-tabs-mode: nil; tab-width: 4 -*-
23
34# log all commands and abort on error
45set -xe
56
6−SHELL_QML_PATH=$(pkg-config --variable=plugindir unity-shell-api)
7−UNITY_SOURCE_DIR=$(readlink -f $(dirname $(readlink -f $0))/../..)
7+DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH)
88
9−dh_auto_configure -- -DCMAKE_INSTALL_LOCALSTATEDIR="/var" \
10− -DARTIFACTS_DIR=${ADT_ARTIFACTS} \
11− -DUNITY_PLUGINPATH=${SHELL_QML_PATH} \
12− -DUNITY_MOCKPATH=${SHELL_QML_PATH}/mocks
13−dh_auto_build --parallel -- -C tests/mocks
14−dh_auto_build --parallel -- -C tests/plugins
15−dh_auto_build --parallel -- -C tests/qmltests
16−dh_auto_build --parallel -- -C tests/uqmlscene
17−dh_auto_build --parallel -- -C tests/utils
18−
19−export UNITY_SOURCE_DIR
20−
21−dh_auto_build --parallel -- -k xvfballtests
9+/usr/lib/$DEB_HOST_MULTIARCH/unity8/tests/scripts/xvfballtests
tests/CMakeLists.txt+5−8
@@ -1,17 +1,14 @@
11include(QmlTest)
22
33# QML tests that do not require graphical capabilities.
4−add_custom_target(unittests)
4+add_meta_test(unittests)
55
66# QML tests that require graphical capabilities.
7−add_custom_target(uitests)
8−add_custom_target(xvfbuitests)
7+add_meta_test(uitests)
8+add_meta_test(xvfbuitests)
99
10−add_custom_target(alltests)
11−add_dependencies(alltests unittests uitests)
12−
13−add_custom_target(xvfballtests)
14−add_dependencies(xvfballtests unittests xvfbuitests)
10+add_meta_test(alltests DEPENDS unittests uitests)
11+add_meta_test(xvfballtests DEPENDS unittests xvfbuitests)
1512
1613# Support libraries and plugins
1714add_subdirectory(mocks)