mkspecs/features/testcase.prf
changeset 33 3e2da88830cd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mkspecs/features/testcase.prf	Wed Aug 18 10:37:55 2010 +0300
@@ -0,0 +1,65 @@
+!contains(TEMPLATE,subdirs) {
+
+check.files                =
+check.path                 = .
+
+# If the test ends up in a different directory, we should cd to that directory.
+# Note that qmake modifies DESTDIR after this file is processed,
+# therefore, testing DESTDIR for emptiness is not sufficient.
+# Also note that in debug-and-release mode we don't want to cd into the debug/release
+# directory (e.g. if the test goes to foo/release/tst_thing.exe, we want to do
+#  cd foo && release/tst_thing.exe ).
+MUNGED_DESTDIR=$$DESTDIR
+MUNGED_TARGET=$$TARGET
+win32:debug_and_release {
+    contains(DESTDIR,^release$)|contains(DESTDIR,^debug$):MUNGED_DESTDIR=
+
+    # In debug-and-release mode, the first ../ in TARGET breaks out of the debug/release
+    # subdirectory. However, since make's working directory is already outside of the
+    # debug/release subdirectory, this first ../ should be ignored when deciding if
+    # we have to change directory before running the test.
+    MUNGED_TARGET=$$replace(MUNGED_TARGET,^\\.\\./,)
+}
+!isEmpty(MUNGED_DESTDIR):!contains(MUNGED_DESTDIR,^\\./?):check.commands = cd $(DESTDIR) &&
+contains(MUNGED_TARGET,.*/.*):check.commands = cd $(DESTDIR) &&
+
+# Allow for a custom test runner script
+check.commands += $(TESTRUNNER)
+
+macx {
+    app_bundle: check.commands += ./$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
+    else:       check.commands += ./$(QMAKE_TARGET)
+}
+else:unix:      check.commands += ./$(QMAKE_TARGET)
+else:           check.commands += $(DESTDIR_TARGET)
+
+# For Qt/Embedded, run every test app as a QWS server
+embedded:       check.commands += -qws
+
+# Allow for custom arguments to tests
+check.commands += $(TESTARGS)
+QMAKE_EXTRA_TARGETS *= check
+
+!debug_and_release|build_pass {
+    check.depends = first
+} else {
+    check.CONFIG = recursive
+    # In debug and release mode, only run the test once.
+    # Run debug if available, release otherwise.
+    debug_and_release {
+        check.target = dummy_check
+        check.recurse_target = check
+        debug {
+            real_check.depends = debug-check
+            real_check.target = check
+            QMAKE_EXTRA_TARGETS += real_check
+        } else {
+            real_check.depends = release-check
+            real_check.target = check
+            QMAKE_EXTRA_TARGETS += real_check
+        }
+    }
+}
+
+}
+