summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorBogDan Vatra <bogdan@kde.org>2020-04-08 14:07:21 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2020-08-24 14:50:56 +0300
commit45b56d86bb6bdbc96a04b21587b8c9bc24087113 (patch)
tree14a784df21b1b00d797799dab27e234958882e49 /mkspecs
parent556a7e7318fce42e154439dd7157f44551a7f1ae (diff)
Fix running qml tests on Android
First and foremost the condition was wrong ... In order to help running qml test cases on Android without any android specific hack on user's .pro files we copy the entire project folder to assets. I copy the entire folder and not only the tst_*.qml files because it might contain data which is needed by the tests to run. Change-Id: I06323d9d52904317410dd2f440de65a0766a48b5 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/qmltestcase.prf8
-rw-r--r--mkspecs/features/testcase.prf58
2 files changed, 39 insertions, 27 deletions
diff --git a/mkspecs/features/qmltestcase.prf b/mkspecs/features/qmltestcase.prf
index ae4ebef513..95e20a8a4f 100644
--- a/mkspecs/features/qmltestcase.prf
+++ b/mkspecs/features/qmltestcase.prf
@@ -5,8 +5,12 @@
contains(TEMPLATE, vc.*): DEFINES += QUICK_TEST_SOURCE_DIR=\"$$_PRO_FILE_PWD_\"
else: DEFINES += QUICK_TEST_SOURCE_DIR=$$shell_quote(\"$$_PRO_FILE_PWD_\")
} else {
- !isEmpty(RESOURCES): warning("The RESOURCES qmake variable is empty, the test will probably fail to run")
- DEFINES += QUICK_TEST_SOURCE_DIR=\":/\"
+ isEmpty(RESOURCES) {
+ ANDROID_EXTRA_PLUGINS *= $$_PRO_FILE_PWD_
+ DEFINES += QUICK_TEST_SOURCE_DIR=$$shell_quote(\"assets:/$$basename(_PRO_FILE_PWD_)\")
+ } else {
+ DEFINES += QUICK_TEST_SOURCE_DIR=$$shell_quote(\":/\")
+ }
}
} else {
diff --git a/mkspecs/features/testcase.prf b/mkspecs/features/testcase.prf
index 4cce55fe04..53704c8787 100644
--- a/mkspecs/features/testcase.prf
+++ b/mkspecs/features/testcase.prf
@@ -63,33 +63,41 @@ debug_and_release:debug_and_release_target {
# Allow for a custom test runner script
android: isEmpty($(TESTRUNNER)) {
- APK_PATH = $$shell_path($$OUT_PWD/android-build/$${TARGET}.apk)
- qtPrepareTool(ANDROIDTESTRUNNER, androidtestrunner)
- qtPrepareTool(ANDROIDDEPLOYQT, androiddeployqt)
- isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET-deployment-settings.json
- contains(QMAKE_HOST.os, Windows): extension = .exe
- $${type}.commands = $$ANDROIDTESTRUNNER --androiddeployqt \"$$ANDROIDDEPLOYQT --input $$ANDROID_DEPLOYMENT_SETTINGS_FILE\"
- $${type}.commands += --path \"$$OUT_PWD/android-build\"
- $${type}.commands += --adb \"$$shell_path($${ANDROID_SDK_ROOT}$${QMAKE_DIR_SEP}platform-tools$${QMAKE_DIR_SEP}adb$${extension})\"
- $${type}.commands += --make \"$(MAKE) -f $(MAKEFILE)\"
- $${type}.commands += --apk $$APK_PATH
-} else: $${type}.commands += $(TESTRUNNER)
-
-unix {
- isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = .
-
- app_bundle: \
- $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
- else: !android: \
- $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET)
+ build_pass {
+ APK_PATH = $$shell_path($$OUT_PWD/android-build/$${TARGET}.apk)
+ qtPrepareTool(ANDROIDTESTRUNNER, androidtestrunner)
+ qtPrepareTool(ANDROIDDEPLOYQT, androiddeployqt)
+ isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET-deployment-settings.json
+ contains(QMAKE_HOST.os, Windows): extension = .exe
+ $${type}.commands = $$ANDROIDTESTRUNNER --path \"$$OUT_PWD/android-build\"
+ $${type}.commands += --adb \"$$shell_path($${ANDROID_SDK_ROOT}$${QMAKE_DIR_SEP}platform-tools$${QMAKE_DIR_SEP}adb$${extension})\"
+ $${type}.commands += --make \"$(MAKE) apk\"
+ $${type}.commands += --apk $$APK_PATH
+ # Allow for custom arguments to tests
+ !catch: $${type}.commands += $(TESTARGS)
+ $${type}.commands += "--"
+ for(import, IMPORTPATH): $${type}.commands *= -import \"assets:/$$basename(_PRO_FILE_PWD_)/$$import\"
+ } else {
+ $${type}.commands = "echo \"Pass\""
+ }
} else {
- # Windows
- !isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = $$shell_path($$TEST_TARGET_DIR)$${QMAKE_DIR_SEP}
- $${type}.commands += $${TEST_TARGET_DIR}$(TARGET)
-}
+ $${type}.commands += $(TESTRUNNER)
+
+ unix {
+ isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = .
-# Allow for custom arguments to tests
-!catch: $${type}.commands += $(TESTARGS)
+ app_bundle: \
+ $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
+ else: !android: \
+ $${type}.commands += $${TEST_TARGET_DIR}/$(QMAKE_TARGET)
+ } else {
+ # Windows
+ !isEmpty(TEST_TARGET_DIR): TEST_TARGET_DIR = $$shell_path($$TEST_TARGET_DIR)$${QMAKE_DIR_SEP}
+ $${type}.commands += $${TEST_TARGET_DIR}$(TARGET)
+ }
+ # Allow for custom arguments to tests
+ !catch: $${type}.commands += $(TESTARGS)
+}
!isEmpty(TESTRUN_CWD):!contains(TESTRUN_CWD, ^\\./?): \
$${type}.commands = $$QMAKE_CD $$shell_path($$TESTRUN_CWD) && $$eval($${type}.commands)