summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/ctest_testcase_common.prf
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2013-07-02 13:59:04 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-02 23:08:54 +0200
commitefb592503afb38073bb005850272af03c8500d3f (patch)
tree87c4fcdf62dbd738b67849c207139cfa9d55ed2b /mkspecs/features/ctest_testcase_common.prf
parent5782fc2fa4bfd729fdf4f8606dfb974d7b5cd054 (diff)
Add a unit test for testing Qt in its install location.
The Qt CI system runs the unit tests after installation, but with the qmake in the build directory. This means that the installed content is not unit tested. Add an additional cmake unit test to test the files in the install location. The new test is marked insignificant for now until the true effect on the CI system is known. Task-number: QTBUG-27315 Change-Id: If9f12e88cfc741946cfabc25dbf789a11a2af4b8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Diffstat (limited to 'mkspecs/features/ctest_testcase_common.prf')
-rw-r--r--mkspecs/features/ctest_testcase_common.prf91
1 files changed, 91 insertions, 0 deletions
diff --git a/mkspecs/features/ctest_testcase_common.prf b/mkspecs/features/ctest_testcase_common.prf
new file mode 100644
index 0000000000..efe9b80bd0
--- /dev/null
+++ b/mkspecs/features/ctest_testcase_common.prf
@@ -0,0 +1,91 @@
+
+win32 {
+ CMAKE_VERSION = $$system(cmake --version 2>NUL)
+} else {
+ CMAKE_VERSION = $$system(cmake --version 2>/dev/null)
+}
+
+
+check.commands =
+isEmpty(CMAKE_VERSION) {
+ message("cmake executable not found. Not running CMake unit tests")
+} else {
+ CTEST_VERSION = $$system(ctest --version)
+ isEmpty(CTEST_VERSION) {
+ message("ctest executable not found. Not running CMake unit tests")
+ } else {
+ CMAKE_VERSION = $$last(CMAKE_VERSION)
+ CMAKE_VERSION_MAJOR = $$section(CMAKE_VERSION, ., 0, 0)
+ CMAKE_VERSION_MINOR = $$section(CMAKE_VERSION, ., 1, 1)
+ CMAKE_VERSION_PATCH = $$section(CMAKE_VERSION, ., 2, 2)
+ # CMake can report versions like 2.8.11-rc1, so strip off the rc part.
+ CMAKE_VERSION_PATCH ~= s,-.*,,
+
+ VERSION_OK =
+ greaterThan(CMAKE_VERSION_MAJOR, 2) {
+ VERSION_OK = 1
+ } else:greaterThan(CMAKE_VERSION_MAJOR, 1):greaterThan(CMAKE_VERSION_MINOR, 8) {
+ VERSION_OK = 1
+ } else:greaterThan(CMAKE_VERSION_MAJOR, 1):greaterThan(CMAKE_VERSION_MINOR, 7):greaterThan(CMAKE_VERSION_PATCH, 2) {
+ VERSION_OK = 1
+ }
+
+ isEmpty(VERSION_OK) {
+ message("cmake $$CMAKE_VERSION is too old for this test.")
+ } else {
+ load(cmake_functions)
+
+ CMAKE_BUILD_TYPE = Debug
+ CONFIG(release, debug|release):CMAKE_BUILD_TYPE = Release
+ win32-g++*:isEmpty(CROSS_COMPILE):CMAKE_GENERATOR = -G \"MinGW Makefiles\"
+ win32:equals(QT_ARCH, x86_64) {
+ win32-msvc2010:CMAKE_GENERATOR = -G \"Visual Studio 10 Win64\"
+ win32-msvc2012:CMAKE_GENERATOR = -G \"Visual Studio 11 Win64\"
+ }
+
+ BUILD_DIR = $$replace($$list($$OUT_PWD/build), /, $$QMAKE_DIR_SEP)
+
+ !qtHaveModule(widgets): CMAKE_MODULE_DEFINES += -DNO_WIDGETS=True
+ !qtHaveModule(dbus): CMAKE_MODULE_DEFINES += -DNO_DBUS=True
+
+ dependentmodules = $$resolve_depends(CMAKE_QT_MODULES_UNDER_TEST, "QT.")
+ dependentmodules -= $$CMAKE_QT_MODULES_UNDER_TEST
+ dependentmodules = $$cmakeModuleList($$dependentmodules)
+
+ contains(QT_CONFIG, angle): CMAKE_GL_DEFINES = -DQT_WITH_ANGLE=True
+ !contains(QT_CONFIG, egl): CMAKE_GL_DEFINES += -DNO_EGL=True
+
+ CMAKE_MODULE_VERSIONS =
+ CMAKE_MODULES_UNDER_TEST =
+ for (MODULE_UNDER_TEST, CMAKE_QT_MODULES_UNDER_TEST) {
+ CMAKE_NAME = $$cmakeModuleName($$MODULE_UNDER_TEST)
+ CMAKE_MODULE_VERSIONS += \
+ -DCMAKE_$${CMAKE_NAME}_MODULE_MAJOR_VERSION=$$eval(QT.$${MODULE_UNDER_TEST}.MAJOR_VERSION) \
+ -DCMAKE_$${CMAKE_NAME}_MODULE_MINOR_VERSION=$$eval(QT.$${MODULE_UNDER_TEST}.MINOR_VERSION) \
+ -DCMAKE_$${CMAKE_NAME}_MODULE_PATCH_VERSION=$$eval(QT.$${MODULE_UNDER_TEST}.PATCH_VERSION)
+ CMAKE_MODULES_UNDER_TEST += $$CMAKE_NAME
+ }
+ CMAKE_MODULES_UNDER_TEST = $$join(CMAKE_MODULES_UNDER_TEST, ;)
+
+ check.commands = \
+ $(MKDIR) $$BUILD_DIR && cd $$BUILD_DIR && \
+ cmake $$CMAKE_TEST_LOCATION $$CMAKE_GENERATOR \
+ -DCMAKE_VERBOSE_MAKEFILE=1 \
+ $$CMAKE_MODULE_DEFINES \
+ $$CMAKE_GL_DEFINES \
+ -DCMAKE_BUILD_TYPE=$${CMAKE_BUILD_TYPE} \
+ -DCMAKE_PREFIX_PATH=$$CMAKE_PREFIX_PATH \
+ -DQt5_MODULE_TEST_DEPENDS=\"$${dependentmodules}\" \
+ $${CMAKE_MODULE_VERSIONS} \
+ -DCMAKE_MODULES_UNDER_TEST=\"$$CMAKE_MODULES_UNDER_TEST\" && \
+ $(TESTRUNNER) ctest --output-on-failure
+
+ }
+ }
+}
+
+insignificant_test:!isEmpty(check.commands) {
+ check.commands = -$${check.commands}
+}
+
+QMAKE_EXTRA_TARGETS *= check